![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
容斥||莫比乌斯反演
Marcus-Bao
这个作者很懒,什么都没留下…
展开
-
hdu 6053 TrickGCD 筛法+莫比乌斯函数+分块处理
题目链接题意:给你n个数字,每个位置的数字可以小于等于a[i],求所有gcd(l,r)都满足大于等于2的情况数;思路:首先,比较好想到的就是枚举gcd,那么每个ai,都有ai/gcd 的选择,然后n个数累乘.但是我们发现,比如 6 6 的时候 2 3 都计算了6 ,6也算了6.有很多重复的情况没法处理,所以想到了容斥,可是当时真的不知道怎么去容斥原创 2017-07-28 13:41:28 · 413 阅读 · 0 评论 -
51nod 1678 lyk与gcd mobius反演
题意:它拥有一个n个数的数列,它想实现两种操作。 1.将ai改为b 将a_i 改为b 2.给定一个数i,求所有 gcd(i,j)=1 时的 aja_j 的总和。 n,q<=105n,q <= 10^5 思路: gcd为1的很像mobius反演啊…题目就是要我们求给定n,∑Nj=1aj∗[gcd(j,n)==1] \sum_{j = 1} ^ N a_j *[gcd(j,n)==原创 2017-10-24 18:40:49 · 423 阅读 · 0 评论 -
51Nod - 1675 序列变换 mobius反演
题意: lyk有两序列a和b。 lyk想知道存在多少对x,y,满足以下两个条件。 1:gcd(x,y)=1。 2: abx=bay a_{b_x} = b_{a_y} 。例如若a={1,1,1},b={1,1,1}。那么存在7对,因为除了x=2,y=2或x=3,y=3外都满足条件。 Input 第一行一个数n(1<=n<=100000)。 接下来一行n个数,表示ai(1<=a原创 2017-10-14 12:03:20 · 577 阅读 · 0 评论 -
CodeForces - 548E Mike and Foam 容斥||莫比乌斯反演
题意:输入n,m,然后输入n个数,之后是m次操作,每次操作输入一个下标i,下标i第一次出现,代表把数组第i个数放进架子中,第二次出现,代表取出来,每次操作完之后,输出架子中的数字中,有几对是互质的. 思路:看到gcd我们首先想容斥,mobius,想mobius的第二种形式.mobius第二种形式为: F(n)=∑n|df(d)F(n) = \sum_{n|d} f(d) f(n)=∑n|原创 2017-10-11 00:35:44 · 433 阅读 · 0 评论 -
HDU - 4135 HDU - 4135 容斥
hdu 4135 题意:给一个区间[a,b],从区间[a,b]中找出共有多少个数是与n互质的。 思路:很水的一个容斥,由于1e9以内的因子很少,所以我们很容易想到预处理n所有的因子,然后求出[1,a-1]和[1,b]中和n不互质的个数,然后求差即可得到和n互质的个数了.#include<bits/stdc++.h>using namespace std;typedef long long原创 2017-10-11 00:04:26 · 477 阅读 · 0 评论 -
HDU - 1695 GCD 莫比乌斯反演
题目链接 题意:给你 a , b , c , d , k 五个值 (题目说明了 你可以认为 a=c=1) x 属于 [1,b] ,y属于[1,d] 让你求有多少对这样的 (x,y)满足gcd(x,y)==k。给你的时间是 3000 MS。 0 < a <= b <= 100,000, 0 < c <= d <= 100,000, 0 <= k <= 100,000 思路:mobius原创 2017-10-10 23:52:15 · 487 阅读 · 0 评论 -
hdu 6134 Battlestation Operational mobius反演
给你一个n 让你计算 F(n)=∑ni=1∑ij=1⌈ij⌉[gcd(i,j)==1] F(n) = \sum_{i=1}^{n} \sum_{j=1}^{i} \lceil \frac{i}{j} \rceil [gcd(i,j) == 1] 考虑 g(i)=∑ij=1⌈ij⌉,h(i)=∑ij=1⌈ij⌉[gcd(i,j)==1],f(n)=∑ni=1h(i) g(i) = \sum_{j=1}原创 2017-10-17 22:22:16 · 393 阅读 · 0 评论 -
HDU - 5514 Frogs 欧拉函数||容斥定理
题目链接 题意:有 n 个青蛙,第 i 个青蛙每次只能够跳 ai 步,现在有 m 个石头围成一圈,编号为 0 到 m−1,现在青蛙可以围着这个石头组成的圆跳无限次,每跳一次就会占领这个石头,可以无限占领,现在问你的是这 n 个青蛙占领的石头的编号的总和是多少。思路: 先说第一种方法: 我们可以发现对于每个ai,他所能经过的石头为 k*gcd(m,ai).但是我们发现比如第一个样例 2 1原创 2017-09-28 00:14:22 · 507 阅读 · 0 评论 -
HDU - 5768 Lucky7 CRT +容斥
题目链接题意:对于给出的区间[x, y]找出有多少个符合要求的数:能被7整除.给出不超过15组(pi, ai),其中pi为质数;要求找出的数x满足 x % pi != ai;思路: 按照数位dp那一顿怼啊,后来发现好像不大对啊。我们知道如果给你很多(pi,ai)让你找出最小的x%pi = ai。也就是解同余方程,我们肯定就知道是CRT原创 2017-09-01 23:55:33 · 365 阅读 · 0 评论 -
Codeforces Round #428 (Div. 2) B 细节 D gcd预处理因子+容斥
题意:给出n行,每行有8个座位, {1, 2} {3 4} {4, 5} {5, 6} {7, 8} 一行中这些位置算相邻,给出k个不同部队的士兵,要求不同部队的士兵部能坐相邻的位置,问能否达到这个目的思路:这个题我的思路比较丑..我先把所有奇数的+1判断能否全部坐下,不能就一定不可以了.然后优先考虑人数大于等于4的,放在中间的四人座,如果都填完了,还剩余四人座,在考虑了剩下的原创 2017-08-15 01:30:11 · 318 阅读 · 0 评论 -
51nod 1407 与与与与 dp+容斥
题意:有n个整数,问从他们中取出若干个数字相与之后结果是0的有多少组。 答案比较大,输出对于 1,000,000,007 (1e9+7)取模后的结果。思路:我们首先从反面考虑,n个数所有组合情况为2n−1 2 ^ n - 1 ,然后在减掉相与不为0的情况即可.现在考虑不为0的方法数怎么求? 设dp[i]表示和 a[x] & i == i的方法数.那么我们可以知道,对于所有和 i相与还为i的数,任原创 2017-10-24 23:58:46 · 298 阅读 · 0 评论