容斥
johsnows
正在静下心来学算法的acmer
展开
-
hdu 6053 TrickGCD(筛法+容斥)
题意: 给出a数组,问有能构成多少个长度与a相等的b数组,每个对应位置b比a小,并且gcd(b[1],b[n])>1. a[i] 解题思路: 看着大神的代码补的: http://www.cnblogs.com/jhz033/p/7246028.html 看范围就知道要去枚举gcd,对于每个gcd,在a[i]这个位置上有gcd/a[i]个数能满足条件构成b[i],只要把每个位原创 2017-07-27 21:00:32 · 1285 阅读 · 0 评论 -
codeforces 839 D Winter is here
最后johsnows做jonsnow的题tle在了39...大概是因为我是假的snow吧。 这个题的想法挺套路的。 想法就是去枚举倍数,看有多少个数是当前这个数的倍数,这些数的gcd一定是当前这个数的倍数,假设有n个数,题目所求为gcd*k,枚举1 注意求1-n的i*C(i,n)需要求一下公式,不能暴力求。 先把C(i,n)拆成阶乘的形式,就可以看出来i*C(i,n)就是n*(i-原创 2017-08-13 17:36:42 · 514 阅读 · 0 评论 -
codeforces 449 D Jzzhu and Numbers(容斥+dp)
这题真的爆炸难懂...待补。 代码: #include using namespace std; const int mod=1e9+7; const int maxn=1e6+5; int dp[maxn]; long long p[maxn]; int main() { int n, i, j, x; cin>>n; for(i=1, p[0]=1; i<原创 2017-08-23 20:29:12 · 343 阅读 · 0 评论