![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
容斥
1
__meteor
对于未来, 我只是一个孩子;
展开
-
HDU1695GCD 容斥
原来用莫比乌斯写过这个传送门,发现这个用容斥挺好理解,就是跑的比莫比乌斯慢,莫比乌斯跑了40ms,这个跑了400ms。 估计复杂度是O(n*6*2^6)大约4e7。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+10; vector<int> p[N...原创 2018-08-14 21:19:11 · 166 阅读 · 0 评论 -
HDU 6397 Character Encoding(容斥)
传送门 挑选m个数 ,和为k,数的取值为0~n-1,相当于将每个数加1,使挑的m个数和是k+m,可以看成k+m个1,用m-1个隔板,隔成m分,所以总数为C(m+k-1, m-1),减去不合法的,就是大于n的情况。先看只有一个位置大于n,有C(m,1)*C(m+k-n-1, m-1)种情况,但是有重复,比如1,3,2,1 。 3,1,2 ,1这两种情况,n是2,k是8的话,3、3、2、1是一...原创 2018-08-15 21:30:13 · 134 阅读 · 0 评论 -
HDU 5514 巧妙的容斥
题意:给你一些数,对于每一个数a,可以得到t=(t+a)%m,t可以无限制算下去,问0~m-1之间能被得到的数的和。 思路:根据欧几里得原理,a能得到的数就是a和m的最大公约数在0~(m-1)的倍数。 所以容斥就可以算出答案,每个数的倍数等差求和。但是数据是1e9,要进行容斥的数非常多, 能确定的是最大公约数一定是m的因子x,x算一遍相当于x所有的倍数都算了一遍, 所以算某个因子的时候,只...原创 2018-10-10 14:06:52 · 145 阅读 · 0 评论