BZOJ3129 [Sdoi2013]方程 【扩展Lucas】】的更多相关文章

没有限制的话算一个组合数就好了.对于不小于某个数的限制可以直接减掉,而不大于某个数的限制很容易想到容斥,枚举哪些超过限制即可. 一般情况下n.m.p都是1e9级别的组合数没办法算.不过可以发现模数已经被给出,并且这些模数的最大质因子幂都不是很大,那么扩展lucas就可以了. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring>…
题目 给定方程 X1+X2+. +Xn=M 我们对第l..N1个变量进行一些限制: Xl < = A X2 < = A2 Xn1 < = An1 我们对第n1 + 1..n1+n2个变量进行一些限制: Xn1+l > = An1+1 Xn1+2 > = An1+2 Xnl+n2 > = Anl+n2 求:在满足这些限制的前提下,该方程正整数解的个数. 答案可能很大,请输出对p取模后的答案,也即答案除以p的余数. 输入格式 输入含有多组数据,第一行两个正整数T,p.T表示…
3129: [Sdoi2013]方程 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 582  Solved: 338[Submit][Status][Discuss] Description 给定方程    X1+X2+. +Xn=M我们对第l..N1个变量进行一些限制:Xl < = AX2 < = A2Xn1 < = An1我们对第n1 + 1..n1+n2个变量进行一些限制:Xn1+l > = An1+1Xn1+2 > =…
http://www.lydsy.com/JudgeOnline/problem.php?id=3129 如果没有Ai的限制,就是隔板法,C(m-1,n-1) >=Ai 的限制:m减去Ai <=Ai 的限制:容斥原理,总数- 至少有一个数>Ai + 至少有两个数>Ai - …… 计算组合数取模,模数虽然很大也不是质数,但是质因数分解后 最大的才 10201,所以用扩展卢卡斯即可 注意在用扩展卢卡斯计算 阶乘的时候,要预处理 不包含当前质因子的阶乘,否则会TLE 3个点 #inclu…
题目大意:给定一个方程$X_{1}+X_{2}+X_{3}+X_{4}+...+X_{n}=M$,$\forall X_{i}<=A_{i} (i<=n1)$ $\forall X_{i}>=A_{i} (n1<i<=n2)$在保证的合法正整数解个数n1<=8,n2<=8 一波三折的数学题,调了半天才发现我的Lucas是错的,但它竟然通过了洛谷那一道模板题的全部数据.... 后面n1~n2的部分很好处理,直接用M减掉这个部分就行了 因为是求正整数解,所以这个组合数…
拓展Lucas+容斥原理 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<vector> #include<cmath> #include<queue> #define MAXN 10000+10 #define INF 0x7f7f7f7f #define LINF 0x7f7f7f7f7f7f7f7f #…
[BZOJ3129][SDOI2013]方程(容斥,拓展卢卡斯定理) 题面 BZOJ 洛谷 题解 因为答案是正整数,所先给每个位置都放一个就行了,然后\(A\)都要减一. 大于的限制和没有的区别不大,提前给他\(A_i\)个就好了. 假如没有小于的限制的话,那么就是经典的隔板法直接算答案. 如果提前给完之后,还剩\(M\)个球,要放进\(n\)个盒子,答案就是\(\displaystyle{M+n-1\choose n-1}\) 然而有一个小于的限制很烦人.发现数量很少,那么直接爆枚子集,强制一…
再次感谢zyf2000超强的讲解. 扩展CRT其实就是爆推式子,然后一路合并,只是最后一个式子上我有点小疑惑,但整体还算好理解. #include<iostream> #include<cstdio> #include<queue> #include<map> #include<algorithm> #include<vector> #include<bitset> #include<set> #include…
首先说下啥是lucas定理: $\binom n m \equiv \binom {n\%P} {m\%P} \times \binom{n/P}{m/P} \pmod P$ 借助这个定理,求$\binom n m$时,若$P$较小,且$n,m$非常大时,我们就可以用这个定理要降低复杂度. 但是这个定理有一些限制,比如说要求$p$是质数,遇到一些毒瘤出题人不太好应对. 当$P$不是质数时,这时就要用到一个叫做扩展lucas定理的东西. 令$P=\prod p_i^{k_i}$. 我们发现,如果对…
扩展Lucas解决的还是一个很Simple的问题: 求:$C_{n}^{m} \; mod \; p$. 其中$n,m$都会比较大,而$p$不是很大,而且不一定是质数. 扩展Lucas可以说和Lucas本身并没有什么关系,重要的是中国剩余定理.扩展Lucas这个算法中教会我们的除了算组合数,还有在模数不是质数的时候,往往可以用$CRT$来合并答案. 将原模数质因数分解:$P = \prod\limits_{i = 1}^{m} p_{i}^{k_{i}}$. 列出$m$个同余方程,第$i$个形如…