
容斥问题
xyc1719
努力会说谎,但努力不会是白费
展开
-
省常中NOIP模拟 孤独 loneliness
【分析】我们开始胡思乱想,结果发现这道题一定是用容斥问题解决。 不是很看得懂。。。#include<bits/stdc++.h>using namespace std;const int maxn=1<<20;const int mod=1e9+7;template <typename T> void read(T &x){...原创 2018-08-14 13:01:40 · 353 阅读 · 0 评论 -
规避(Evade)
【一句话题意】给你一个图源点s和汇点t,先求得最短路,再在最短路上,求在s和t同时出发,不相遇不重复的路径方案数。对1e9+7取模。【分析】考虑容斥原理,不考虑相遇,则方案数为{最短路条数}2。再排除在边上相遇的情况{f[u]*g[v]}2和在点上相遇的情况{f[u]*g[u]}2。f、g数组为从s(或t)走最短路出发到点i的方案数。细节上处理的关键在于从整张图中抽离出最短路再进行dp。【...原创 2018-10-25 20:43:41 · 208 阅读 · 0 评论 -
相交(Access)
【一句话题意】有一棵n 个节点,n-1 条边的树。树上有m 条路径,定义两条路径相交仅当这两条路径经过至少一个相同的点。求这m 条路径中选择两条相交的路径的方案数。【分析】两条树上的链相交的充要条件为:一条链上深度最小的节点(lca)被另一条链所包含。通过欧拉序预处理+树状数组,我们可以通过O(logN)的时间求出一个点到根的路径上的所有点,共有多少个lca。因此我们可以方便的求出一条链上所有点...原创 2018-10-26 07:44:16 · 263 阅读 · 0 评论 -
朋友
【简要题意】每个人手上写着4个互不相同的数。如果两个人至少有一个数字相同,则他们是一对朋友。现在这n个人按序号从左到右排成了一排,每个人都想知道在他左边有多少个人是他的朋友。n<=1e5,所有数字均是不大于50的非负整数。【分析】发现数字的范围很小,所以我们可以考虑枚举数字求朋友数,但发现存在重复统计的情况。再次考虑这种算法,相当于求前面的数字关于这四个数的全集。所以用容斥原理加加减...原创 2019-02-16 15:20:57 · 201 阅读 · 1 评论 -
百万小小兵
【简要题意】求1-n中与n不互质的数的个数。 n<=1e8【分析】当然是求φ(n)\varphi(n)φ(n)然后相减啦。。。。利用公式φ(n)=n(1−1p1)(1−1p2)(1−1p3)⋅⋅⋅⋅⋅⋅\varphi(n)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3})······φ(n)=n(1−p11)(1−p21)...原创 2019-02-17 13:27:54 · 181 阅读 · 0 评论 -
【CF791D】tree 柠檬树
【题目描述】Herobrine能掌控所有,除了他内心的那棵柠檬树。他每看到一件让自己心生羡慕的事,他内心的柠檬树上就会多长出一只多汁美味的柠檬。现在,Herobrine有一棵含有n只柠檬的柠檬树,编号从1到n。这n只柠檬由n-1条树枝相连。 柠檬之间很喜欢用脱落酸进行交流。脱落酸只能通过树枝传递。柠檬们为了尽量频繁的进行交流,就团结一心,调整了树枝的形态,使得任意两只不同的柠檬之间都有且仅有...原创 2019-02-14 15:48:22 · 254 阅读 · 0 评论