首页 > 其他分享 >p3214-solution

p3214-solution

时间:2024-03-01 09:13:07浏览次数:20  
标签:限制 最后 solution p3214 减去 集合 去掉 dp

P3214 Solution

link

为了方便,我们求有序的答案最后再除掉 \(m!\)。

题目的限制包括:

  • 每种元素总共出现偶数次

  • 不存在相同的两个集合

  • 没有空集

考虑偶数的限制,你发现每个集合中元素出现次数要么 \(0\) 要么 \(1\)。

于是如果你确定了前 \(m-1\) 个集合,最后一个集合会被唯一确定。

我们先确定前 \(m-1\) 个集合,这里方案数是 \(A_{2^n-1}^{m-1}\),因为要保证这 \(m-1\) 个集合非空且不重。

但是这样无法保证最后一个集合非空且和前面不重。我们考虑减去不合法的方案。

如果最后一个集合空了,把它去掉,前 \(m-1\) 个集合仍然满足所有三条限制。

如果设 \(dp_{i}\) 为 \(i\) 个集合的答案,这部分要减去的就是 \(dp_{m-1}\)。

最后限制一下最后一个集合不与前面的重复,因为前面的集合已经互不相同了,我们假设 \(m\) 与 \(i\) 相同。

把 \(m\) 和 \(i\) 去掉,这部分的元素去掉了 \(2\) 次,于是剩下的集合会满足题目的三条限制。

这部分要减去的方案即为 \((m-1)(2^n-1-(m-2))dp_{m-2}\)。

\(m-1\) 表示 \(i\) 有 \(m-1\) 种选法,\(2^n-1-(m-2)\) 表示集合 \(m\) 和 \(i\) 的形态,且要和其他 \(m-2\) 个集合不同。

最后转移式即

\[dp_{m}=A_{2^n-1}^{m-1}-dp_{m-1}-(m-1)(2^n-1-(m-2))dp_{m-2} \]

\(\mathcal O(m)\) 求解即可。

标签:限制,最后,solution,p3214,减去,集合,去掉,dp
From: https://www.cnblogs.com/iorit/p/18046097

相关文章

  • p2791-solution
    P2791Solutionlink给你\(N,M,S,L\),\(S\)组询问,每次给出\(n,m,k\),表示有\(m\)个\(1\)和\(n-m\)个\(0\),求随机选出\(k\)个数的和的\(L\)次幂的期望,模数\(998244353\)。\(S\le200,L\le2\times10^5,M\leN\le2\times10^7\),每次询问的\(n,m,k\)满足\(m,k\len......
  • p2150-solution
    P2150Solutionlink首先两人选的数两两互质相当于两人的质因数集合无交。先考虑\(n\le30\):由于\(30\)内的质因只有\(10\)个,我们考虑状压\(dp\)。设\(dp_{i,S1,S2}\)表示考虑到第\(i\)个数,G选了质因数集合\(S1\),W选了质因数集合\(S2\)的方案数。刷表转移:\[d......
  • p1587-solution
    P1587Solutionlink给你\(n,m,k\),求满足\(1\lex\len,1\ley\lem\)且最简分数\(\dfracxy\)是\(k\)进制下纯循环小数的二元组\((x,y)\)个数。考虑纯循环小数的性质:我们知道纯循环小数的小数部分去除一个循环节后与原数的循环节相等,也就是\[\fracxy-\left\lfloor......
  • 2.29闲话 & solution 『任无数/花开花落之后/你仍君临芸芸众生』
    明天就省选了,我咋啥也不会最破防的一集一道LCT调了一下午没调出来最后发现是min和max取反了改完之后发现自己的访问有问题,如果有0边权我就会直接返回LLONG_MAX啊哈哈,我调了一下午,发了7个帖子然后校内OJ过了,POJ因为只有C++98所以CE了哈哈哈写个简要题解吧[......
  • P10202 [湖北省选模拟 2024] 沉玉谷 Solution
    好像比题解劣一个\(n\),但是也跑的很快。首先说明,问题等价于计算有多少种本质不同的方案使得整个序列被删完,证明省略。考虑用区间的方式表述这些操作,具体的,忽略删除后的移位操作,将每次删除的左右段点视为一个区间,则一定会有:区间的并是\([1,n]\)。区间之间要么不交,要么包含。......
  • solution-P1667(more)
    这道题,我不会做,我就是菜,我就是没水平,我就是傻逼。这道题,我不会做,我就是菜,我就是没水平,我就是傻逼。这道题,我不会做,我就是菜,我就是没水平,我就是傻逼。正文直接前缀和,发现操作相当交换\(s_{i-1},s_j\),显然最后我们只需要让\(s\)单调上升即可。直接做,找有多少个环,答案为\(n......
  • niu-zi-solution
    牛子Solutionlink结论:一个方案合法当且仅当,每行数种类为\(2\),或者每列数种类为\(2\)。证明:我们试图证明,如果一个方案存在一行的数种类\(\ge3\),则这个方案的每列数种类为\(2\)。对于有\(\ge3\)种数的这一行,必然存在某连续的三个数两两不同,即形如abc的形式。这个可以......
  • cf1748f-solution
    CF1748FSolutionlink题目也就是要我们交换每对\(a_i\)和\(a_{n-1-i}\)。考虑如何利用这个异或操作交换:我们自然地想到x^=y,y^=x,x^=y。如何操作使得x^=y?我们把环上\(x\)到\(y\)的路径拉出来,假装是个序列:\(a_x.a_{x+1},a_{x+2},\dots,a_{y-2},a_{y-1},a_y\)现在要使......
  • cf1621g-solution
    CF1621GSolutionlink考虑对每个位置\(i\)作为\(i_j\)时计算贡献。\(i\)对一次答案有贡献当且仅当:设其子序列内最右端的位置为\(r\),则要满足\(r\)右侧存在一个数大于\(a_{i}\)。即,设\(lst_i\)表示整个序列最右侧的大于\(a_i\)的数,要满足\(lst_i>r\)。现......
  • cf1606e-solution
    CF1606ESolutionlink考虑dp。注意到这个题造成的伤害与剩余人数有关,每次消灭的人数又与剩余人的血量最大值有关:设\(dp_{i,j}\)表示剩下\(i\)个人中血量最大值为\(j\)的方案数。显然当\(i-1>=j\)时一次伤害就可以杀光所有人,于是这时\(dp_{i,j}=j^i-(j-1)^i\)(只需让......