
容斥原理
文章平均质量分 85
Frozen_Guardian
已退役菜鸡Acmer
展开
-
HDU - 7009 树上游走(树的直径+容斥)
题目链接:点击查看题目大意:给一棵树,称一个点集 S 是好的当且仅当存在一个点,其到 S 中所有点的距离互不相同,求 |S| 的最大值和使得 |S| 最大的 S 的个数题目分析:不难看出 ∣S∣|S|∣S∣ 就是树的直径,而满足条件的 SSS 的个数,无非就是枚举每个点作为树的根节点,然后将 nnn 个节点按层划分,每一层恰好选择一个点的方案数,这个可以根据乘法原理,将每一层节点的个数累乘起来即可。这样确实可以计算出所有的答案,但是会有重复。不过通过思考后可以看出,重复的部分当且仅当 SSS 中的点是原创 2021-08-01 20:42:13 · 375 阅读 · 2 评论 -
CodeForces - 1486F Pairs of Paths(树上计数+容斥)
题目链接:点击查看题目大意:给出一棵 nnn 个点的树,再给出 mmm 条路径,现在问有多少个路径对 (x,y)(x,y)(x,y),满足第 xxx 条路径和第 yyy 条路径有且仅有一个交点题目分析:参考至大佬博客:https://www.cnblogs.com/syksykCCC/p/CF1486F.html再借个图。。(侵权删)本题需要求的路径只有可能是上述两种情况,第一种是 LCALCALCA 相同,第二种是 LCALCALCA 不同,不过总而言之都需要利用 LCALCALCA 来辅助计数原创 2021-06-10 16:46:43 · 368 阅读 · 0 评论 -
CodeForces - 1425D Danger of Mad Snakes(容斥+组合数学)
题目链接:点击查看题目大意:初始时有一个二维平面, 平面上给出 n 条蛇,现在可以选择 m 条不同的蛇进行捕杀,当选择了某条蛇,其所在的坐标可以覆盖到的半径为 r 的范围内的蛇都会被捕杀,更确切的说,选择了位置 ( x , y ) 的蛇,那么 ( x - r , y - r ) ~ ( x + r , y + r ) 这个矩形内的蛇都会被捕杀,每条蛇都有自己的价值,每次捕杀的价值是(所有被捕杀的蛇的价值和)的平方,问所有方案的价值和是多少题目分析:比较巧妙的一道容斥题目,首先看到平方应该顺着去思考,原创 2020-12-09 22:05:12 · 1108 阅读 · 8 评论 -
HDU - 5514 Frogs(容斥原理)
题目链接:点击查看题目大意:给出 0 ~ m - 1 共 m 个石头首尾相连呈现出一个环状,初始时在第 0 个石头上有 n 只青蛙,n 只青蛙相互独立,每一只青蛙每次都会向前跳 a[ i ] 步,问最后有多少个石头可以被跳过至少一次,输出石头的编号之和题目分析:首先打个表不难看出,对于每只青蛙 i 来说,他可以到达的石头的编号是 gcd( a[ i ] , m ) 的所有倍数,又因为一个石头可能会被多个青蛙到达,所以考虑容斥考虑直接容斥,我们现在需要解决的问题实际上是:0 ~ m-1 中有多少个原创 2020-09-11 13:58:59 · 356 阅读 · 2 评论 -
CodeForces - 1400G Mercenaries(容斥原理)
题目链接:点击查看题目大意:给出 n 个区间 [ l[ i ] , r[ i ] ] ,再给出 m 个限制 ( a[ i ] , b[ i] ),求在 n 个区间中能选出多少种子集 S,满足,且任意一条限制都不能同时出现在 S 中题目分析:先不考虑限制,在输入时可以对 n 个区间差分一下,差分数组记为 cnt[ i ] ,然后求一下前缀和,就可以枚举子集的大小 | S | = i,那么当子集大小 | S | 为 i时的种类数就是 C( cnt[ i ] , i)对于一个限制和一个子集共有...原创 2020-08-26 19:40:09 · 553 阅读 · 2 评论 -
牛客 - 小朋友你是否有很多问号(容斥+组合数学)
题目链接:点击查看题目大意:先抛出公质数的定义,若数 num 与 m 个数都互质,则称 num 为 m 个数的 m元公质数 ,现在给出 n 个数和 m ,需要求出任意 m 个数的所有 m 元公质数(要求公质数也在这nn个数中)之和题目分析:读完题后可能有点迷茫,但是仔细分析一下发现并不难,首先 m元公质数 要求 m 个数与其互质,且这个公质数也要在 n 个数之中,不难想到可以枚举这 n 个...原创 2020-05-02 21:33:34 · 372 阅读 · 0 评论 -
HDU - 6194 string string string(后缀数组+RMQ+容斥)
题目链接:点击查看题目大意:给出一个字符串和一个数字 k,问字符串中出现次数恰好等于 k 次的字串有多少个题目分析:在跑完后缀数组后,我们可以用sa数组求解,具体做法是枚举起点,找长度为 k 的sa数组的最长前缀就是出现至少k次的答案了,但是不能保证所有子串恰好出现了k次,所以我们在累加答案后再减去出现至少k+1次的答案,最后因为容斥原理还需要加上一部分,因为出现k+1次,多出来的一次可以...原创 2020-01-24 18:32:02 · 296 阅读 · 0 评论 -
UVA - 11806 Cheerleaders(组合数学+容斥原理)
题目链接:点击查看题目大意:给出一个n*m的矩阵,现在有k个拉拉队员,要求在第一列、最后一列、第一行和最后一行至少有一个拉拉队员,注意以下要求:四个角上的拉拉队员可以同时属于两条边 每个方格至多只能存在一个拉拉队员问能有多少种分配方案题目分析:这个题目很明显的要用到组合数学了,我们假设C(n,m)代表的是从n个物品中选出m个的方案数,如果没有约束条件,那么答案显然是C(n*m,k)...原创 2019-12-23 10:26:58 · 475 阅读 · 1 评论 -
HDU - 1796 How many integers can you find(容斥原理)
题目链接:点击查看题目大意:给出一个n,再给出一个含有m个数的集合,问1~n-1中有多少个数可以被集合中的所有数字整除题目分析:因为1~n-1中的每个数可能会被整除多次,所以我们可以利用容斥原理枚举集合,奇加偶减,从而就能算出正确的答案了,类似于之前计算有多少种互斥的数那样写一个dfs就好,不过需要修改一个细节,就是累乘的地方要写成求lcm,因为一个数若想被集合中的所有数整除,只需要被其l...原创 2019-12-23 00:08:09 · 210 阅读 · 0 评论 -
POJ - 1091 跳蚤(容斥原理+数论)
题目链接:点击查看题目大意:中文题意,不多赘述题目分析:根据题目的意思,其实只需要让所有数的最大公约数为1就可以满足条件,好像是用到了欧几里得的一些知识,奈何我的数论比较菜,也不会证明,就直接用网上大牛们的结论吧,题目说了第n+1个数已经帮我们选好了,为m,所以我们只需要找出有多少种情况选择n个与m互质的数就是题目所求了,不过正难则反,我们可以求有多少组数与m是有不互质的,用总数减去当前答...原创 2019-12-21 03:07:19 · 494 阅读 · 0 评论 -
HDU - 4135 Co-prime(容斥原理)
题目链接:点击查看题目大意:给出一个区间[l,r],再给出一个n,问区间中有多少个数与n互质题目分析:容斥原理应用的经典题目,马克一篇非常不错的博客,留着以后慢慢消化:https://blog.youkuaiyun.com/m0_37286282/article/details/78869512那么这个题目转换一下,先求1~m中有多少个与n互质的数,这样cal(r)-cal(l-1)就是答案了...原创 2019-12-21 02:24:40 · 258 阅读 · 0 评论