[ARC101E]Ribbons on Tree(容斥,dp)】的更多相关文章

Description 给定一棵有 \(n\) 个节点的树,满足 \(n\) 为偶数.初始时,每条边都为白色. 现在请你将这些点两两配对成 \(\frac{n}{2}\) 个无序点对.每个点对之间的的路径都会被染成黑色 求有多少种配对方案,使得树上没有白边? \(n\le 5000\) Solution 法一: 树上的路径很难直接考虑. 有一种容斥的做法:记边集为 E ,枚举 T 子集中的边强制为白边,其余的不作限制, 那么: \[ Ans = \sum_{T\subseteq E} (-1)…
题目链接 \(Description\) 给定一棵\(n\)个点的树.将这\(n\)个点两两配对,并对每一对点的最短路径染色.求有多少种配对方案使得所有边都至少被染色一次. \(n\leq5000\). \(Solution\) 考虑容斥.令边集\(E\)的子集\(S\in E\),\(f(S)\)表示使得\(S\)中所有边都不被染色的配对方案数(其余边任意),则\(Ans=\sum_{S\in E}(-1)^{|S|}f(S)\). 如果确定边集\(S\),我们可以求\(f(S)\).设\(S…
题目链接 ARC101E - Ribbons on Tree 题解 令边集\(S \subseteq E\) 设\(f(S)\)为边集S中没有边被染色的方案数 容斥一下,那么\(ans = \sum_{S \subseteq E} (-1)^{ \| S\| f(S) }\) 那么如何求对于原边集的\(f(S)\),也就是把\(S\)集合中的边全部删掉之后的各联通块内匹配的乘积 设\(g(x)\)为大小为x的联通块内点两两匹配的方案 那么\(f(S)=\prod_{i=1}^{|S|+1}g(a…
A Simple Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 Description There is a n×m board, a chess want to go to the position (n,m) from the position (1,1). The chess is able to go to position (x2,y2) from the position (x1,y1), only and if…
给一个n*n的矩阵,保证:(1)每行都是一个排列 (2)每行每个位置和上一行对应位置不同.求这个矩阵在所有合法矩阵中字典序排第几.考虑类似数位DP的做法,枚举第几行开始不卡限制,那么显然之前的行都和题给矩阵相同,之后都是错排.现在要求的就是,当前行在所有与上一行不交的排列中字典序排第几.同样考虑数位DP,从后往前枚举到当前位开始不卡限制.用两个树状数组分别维护:(1)这一位之后的数组成的集合 (2)这一位之后当前行和上一行均有的数的集合.那么分当前这位是否使用上一行这一位之后存在的数讨论,现在要…
[BZOJ3622]已经没有什么好害怕的了 Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相同. 还有输入应该是第二行是糖果,第三行是药片 题解:好吧这题不是神题,而是套路题,容斥+DP的套路在很多题中都用到过,不过我虽然知道套路,却被这题的第一步卡住了. 我们将两个序列从小到大排序. 好吧这步看起来可能很水,正常人看到无序的序列都会先想到排序,…
正解:容斥+$dp$ 解题报告: 传送门$QwQ$ $umm$虽然题目蛮简练的了但还是有点难理解,,,我再抽象一点儿,就说有$n$个点,点$i$和点$j$之间有$a_{i,j}$条无向边可以连,问有多少种方案可以连成一张联通图 显然考虑容斥呗?设$f_i$表示状态为$i$的点连成联通图的合法方案,$g_i$表示状态为$i$的点随便连边的所有方案 显然$g_i$可以先预处理出来?就等于$\prod_{u,v\in i}a_{u,v}$.然后$f_i$就等于$g_i$减去不合法的数量.不合法数量显然…
题目链接 https://atcoder.jp/contests/arc101/tasks/arc101_c 题解 直接容斥.题目要求每一条边都被覆盖,那么我们就容斥至少有几条边没有被覆盖. 那么没有被覆盖的几条边一个可以把整棵树划分成很多连通块,每一块的贡献就是 \((siz-1)!!\).(\(x!!=x(x-2)(x-4)\cdots\)) 然后就可以 dp 了. 令 \(dp[x][i][j]\) 表示以 \(x\) 为根的子树内,\(x\) 位于一个大小为 \(i\) 的联通块,子树内…
题目大意 定义一个序列的权值为:把所有相邻的相同的数合并为一个集合后,所有集合的大小的乘积. 特别的,第一个数和最后一个数是相邻的. 现在你有 \(n\) 种数,第 \(i\) 种有 \(c_i\) 个.求所有不同的序列的权值的和. \(n\leq 50,c_i\leq 100\) 题解 考虑第一个数和最后一个数不相邻时怎么做. 记 \(g_{i,j}\) 为出现了 \(i\) 次的数分成 \(j\) 个集合,所有集合大小的乘积的和. \[ g_{i,j}=\sum_{k=1}^ig_{i-k,…
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3782 有部分分的传送门:https://www.luogu.org/problemnew/show/P4478 看到标题开始还以为是AHOI的小雪和小可可…… 题解:乍一看会40pts:测试点1.2:n,m<=1000的直接O(nm)DP:测试点3.4:没有障碍物直接C(n+m,n),然后p=1e6+3是质数可以直接取模. 想了几分钟会60pts:测试点5.6:模数可以拆成几个不超过1e…