![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
容斥原理
芋智波佐助
菜鸟一只
展开
-
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 · 756 阅读 · 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 · 1099 阅读 · 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 · 854 阅读 · 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 · 1124 阅读 · 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 · 937 阅读 · 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 · 1311 阅读 · 0 评论