容斥原理
芋智波佐助
菜鸟一只
展开
-
URAL 1091. Tmutarakan Exams 容斥
从1到s选出k个数 他们的最大公约数大于1 求方案数 容斥 S(1)-S(2)+S(3) S(x)为选出k个数的公因子个数为x的数量 #include #include #include using namespace std; typedef long long LL; const int maxn = 55; int prime[maxn], vis[maxn]; int n, m;原创 2014-11-07 10:46:51 · 765 阅读 · 0 评论 -
ZOJ 3233 Lucky Number 容斥
给你a数组和b数组 求x到y之间有多少个数至少被a中一个数整除并且至少不被b中一个数整除 容斥第一问很简单 第二问可以考虑反面 设满足被a中至少一个数整除的数有sum1个 在被a中至少一个数整除的前提下 被b中所有数整除的数有sum2 答案就是sum1-sum2 在dfs的时候溢出了 借鉴了某大牛的方法 #include #include using namespace std;原创 2014-11-07 19:45:35 · 1108 阅读 · 0 评论 -
ZOJ 3556 How Many Sets I 二项式+容斥
n个元素的子集有2^n个 求从这些子集选出k个组成有序集 并且有序集的交集为空的方案数 总数为2^n^k 减去不符合的 不符合的为交集存在1个共同元素 存在2个共同元素.... 2^n^k-C(n, 1)*2^(n-1)^k+C(n, 2)*2^(n-2)^k.... (2^k-1)^n #include #include using namespace std; typedef原创 2014-11-07 16:22:02 · 864 阅读 · 0 评论 -
POJ 3904 Sky Code 容斥原理
题目来源:POJ 3904 Sky Code 题意:选出最大公约数为1的四元组的方案 思路:容斥原理 总的方案C(n,4)减去t(1)+t(2)-t(3)+...+(-)^kt(k) t(i)表示四元组公因子的个数为i的方案数 #include #include #include using namespace std; const int maxn = 10010; typedef原创 2014-08-03 16:10:40 · 1130 阅读 · 0 评论 -
HDU 1695 GCD 欧拉函数+容斥定理
输入a b c d k求有多少对x y 使得x在a-b区间 y在c-d区间 gcd(x, y) = k 此外a和c一定是1 因为gcd(x, y) == k 将b和d都除以k 题目转化为1到b/k 和1到d/k 2个区间 假设第一个区间小于第二个区间 讲第二个区间分成2部分来做1-b/k 和 b/k+1-d/k 第一部分对于每个数i 和他互质的数就是这个数的欧拉函数值 所有数的欧拉函数的和就是原创 2014-10-13 14:06:45 · 945 阅读 · 0 评论 -
UVa 11806 Cheerleaders / 容斥原理
求k个石子放在n*m的矩阵里 并且第一行 最后一行 第一列 最后一列都要有石子 考虑反面 求出所有的 减去不满足的情况 容斥原理总共4个 集合A(第一行没有石子) B(最后行没有石子)C(第一列没有石子)D(最后一列没有石子) 减去1个集合的 加上2个集合的 减去3个集合的 加上4个集合的 #include #include const int maxn = 510; const i原创 2014-02-06 23:58:28 · 1318 阅读 · 0 评论