LINK:上学路线 从(0,0)走到(n,m)每次只能向上或者向右走 有K个点不能走求方案数,对P取模. \(1\leq N,M\leq 10^10 0\leq T\leq 200\) p=1000003或p=1019663265 考虑dp......(没啥意义. 要求出 从(0,0)到(n,m)不经过一个障碍点的方案数 显然需要容斥. 所有方案C(n+m,n). 还是考虑dp
https://gmoj.net/senior/#main/show/6541 \(n<=5000\) 题解: 我感觉我和这种dp无缘,肝了两个小时拿了0分,还不如去写第三题。 首先这种排列,树上的,不难想到树上的笛卡尔树dp。 设\(f[i][j]\)表示\(i\)子树里\(j\)段balabala的。 再看这题,边的限制相当于\(x->fa[x]\)的边权=\(x
问题描述 经过上次失败后,蕾米莉亚决定再次发动红雾异变,但为了防止被灵梦退治,她决定将红雾以奇怪的阵势释放。 我们将幻想乡看做是一个 \(n \times m\) 的方格地区,一开始没有任何一个地区被红雾遮盖。蕾米莉亚每次站在某一个地区上,向东南西北四个方向各发出一条无限长的红雾,可以影
不知道为什么tag里会有个fft。。 #include<bits/stdc++.h> using namespace std; #define N 2005 #define ll long long typedef double db; const db eps=1e-8; const db pi=acos(-1); int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0; }
经典容斥原理,这其实是离散数学解不定方程或者高中组合数学的隔板法。 原问题可以转换为 x1+x2+x3+...xn=M+N; 又因为每个都有限制需要<=a[i],因此我们可以反向考虑,总数-不合法数 而不合法数是所有>a[i]的合集,因此可以用容斥原理拆分,这里可以用二进制的表示方法表示取哪几个。 代码
/* d=(a,m),a=pd,m=qd,(p,q)=1 (pd+x,qd)=d,设x=td (pd+td,qd)=d => (p+t,q)=1 => (p',q)=1,p<=p'<p+q 处理出q的所有质因子,然后用这些质因子在区间[p,p+q-1]里筛 */ #include<bits/stdc++.h> using namespace std; #define ll long long ll T,a,m,d; ll prime[2
题目链接:https://codeforces.com/contest/900/problem/D 题目大意: 给你一个x和y。求: gcd(a1, a2, …, an) = x 的序列个数。 思路:如果y/x==0才可能满足条件。我们把每一堆大小定义成len=y/x那么就是有len个物品分配到m个盒子。盒子不能为空。 m=1…len。 那么可能的
很不错的一道数数题. code: #include <cstdio> #include <algorithm> #define N 203 #define ll long long #define mod 1000000007 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int n,m,kth; int ui[N],ri[N],f[N],
源自 krydom 大爷的 FJ 省冬令营模拟赛题 Statement 给定一棵 \(n\) 个点的树和一个参数 \(k\) 每次操作可以选出树上的一条边删掉,然后再加一条边,使得操作之后还是一棵树 求 \(k\) 次操作能得到多少种不同的树,对 \(998244353\) 取模 \(n\le 50\)(原题数据范围) \(n\le 2000\)(加强
题目描述 Farmer John’s cows have recently become fans of playing a simple number game called “FizzBuzz”. The rules of the game are simple: standing in a circle, the cows sequentially count upward from one, each cow saying a single number when it is h
小Z的礼物 小Z有一个神奇的自动售货机,里面有 \(n \times m\) 种物品,分别放在 \(n\) 行 \(m\) 列个格子中。每当小Z向自动售货机中投入一枚硬币,他就能获得一对相邻格子中的物品(已经获得的物品可能再次获得),获得每一对相邻格子中的物品的概率是相等的。在这 \(n \times m\) 种物品中,
T1: 最暴力的当然是建图bfs,但发现边数可以达到\(n^2\) 考虑当1在每个点的时候,经过操作可以到达的是一个奇数或偶数的连续区间, 省去建边的过程,对于奇偶各开一个set,每次能到的点是一个set上的连续一段 每次删除已经走过的点即可保证复杂度 (set优化建图???) T2:
T1: 不要傻傻的分27种情况讨论!!! 按位考虑,对于每一位,枚举a和b该位是什么,记录可行的有几种,乘起来即可 T2: 模拟即可 T3: 神仙题 考虑容斥 分别记录每个点和那些空白连通块相连,然后枚举连通块状态 如:(1),(1,2),(2,3),(1,2,3),(1,2,3,4) 最后
\[ F_S=\sum_{T \subseteq S}G_T \] \[ G_S=\sum_{T \subseteq S}(-1)^{|S|-|T|}F_T \] \[ F_{S_1,S_2...S_n}=\sum_{T_1 \subseteq S_1,T_2 \subseteq S_2 ... T_n \subseteq S_n}G_{T_1,T_2...T_n} \] \[ G_{S_1,S_2...S_n}=\sum_{T_1 \subseteq S_1,T_2
目录 二项式反演入门 写在前面 二项式定理 结论 证明 二项式反演 结论 证明 第二种形式 例题分析 错排问题 球染色 染色问题 CF1228E 二项式反演入门 写在前面 前几天做CF的时候做了一道容斥,感觉很迷,不知道式子怎么推出来的 昨天T3刚好又考了一道容斥 (爆 零 了),也是这
题目 一个很自然的想法是容斥。 假如只有一种硬币,那么答案就是没有限制的情况下买\(s\)的方案数减去强制用了\(d+1\)枚情况下买\(s\)的方案数即没有限制的情况下买\(s-c(d+1)\)的方案数。 现在是多种硬币,所以要加个容斥。 那么我们需要预处理一下没有限制的情况下买\(i\)的方案
code: #include <bits/stdc++.h> #define N 1000005 #define LL long long using namespace std; const LL mod=1000000007; void setIO(string s) { string in=s+".in"; string out=s+".out"; freopen(in.c_str(),"r&
[BZOJ 3771] Triple(FFT+生成函数) 题面 给出 n个物品,价值为别为\(w_i\)且各不相同,现在可以取1个、2个或3个,问每种价值和有几种情况? 分析 这种计数问题容易想到生成函数。 设生成函数\(A(x)=\sum_{i=1}^{n} x^{w_i}\),指数为价值,系数为选的方案数。A表示每种物品取1个的方案数。同
$T1.$ 发现每一位上的贡献是独立的,于是我们直接计算出每一位的贡献,最后乘起来就行了。 判inf随便找一个没用的位判一下就没了。 $T2.$ 整体加减直接打标记,交并直接暴力。 $T3.$ 考试的时候做到这里还有两个多小时,而且第一感觉不是特别不可做,当时想怎么也能基本上A
现在看来这道题真的不难啊~ 正着求不好求,那就反着求:答案=总-全不是质数 这里有一个细节要特判:1不是质数,所以在算全不是质数的时候要特判1 code: #include <bits/stdc++.h> #define N 104 #define M 20000002 #define mod 20170408 #define ll long long #def
说完题解后你可能会恍然大悟,但是考试的时候真的想不出来啊~ code: #include <bits/stdc++.h> #define N 4010 #define ll long long #define mod 998244353 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int edges,now,n; int hd[N<<1],to
二.反演原理 0.综述 说一下个人对反演的理解。 反演是一种手段,一种处理已知信息和未知信息关系的手段,用来得到未知信息的方式。也就是以一种既定的手段在较小的时间复杂度内用已知的信息得到未知的信息。 还有$zsq$学长更加浅显的解读。 反演一般就是把一个好看但
3.莫比乌斯反演。 这个比较常见了吧。现在在$hzoi$都烂大街了。 定义几个常用的函数,当作笔记了。 单位函数$$I(n)=1$$ 元函数$$e(n)=[n=1]$$ 约数个数函数$$d(n)=\sum\limits_{d|n}I$$ 约数和函数$$\sigma(n)=\sum\limits_{d|n}d$$ 标志函数$$id(n)=n$$ 莫比乌斯函数$$mu(n)=\beg
二.反演原理 0.综述 说一下个人对反演的理解。 反演是一种手段,一种处理已知信息和未知信息关系的手段,用来得到未知信息的方式。也就是以一种既定的手段在较小的时间复杂度内用已知的信息得到未知的信息。 还有$zsq$学长更加浅显的解读。 反演一般就是把一个好看但