求助该题的正确做法
查看原帖
求助该题的正确做法
207996
yzy1Ẽd<ßDream楼主2022/1/11 21:38

想了两个小时脑子都晕,结果发现自己做法假了,所以求助这题的正确做法。

先说一下我的假做法:

为了表述方便,下面的大写 KK 代表题面中小写 kk 的含义。

首先 DP 预处理出点集的所有大小为 ii 的子集的最大团大小之和为 F(i)F(i)

然后我们对于每一种情况计算贡献。即答案为:在第 kk 回合结束后,剩下 ss 个点没被删的方案数乘上 F(s)F(s)。所以我们先要求出这个「方案数」。

考虑组合意义,我们要求的是:「长度为 KK,第 kk 位为 ss,且每一位都在 [1,n][1,n] 之间的不增序列」计数。考虑组合意义,在一个网格图上从 (1,1)(1,1) 走到 (k,n)(k,n),每一步都是向右或者向下,且规定某个竖线必须走,则一条折线会对 KK 条竖线产生贡献。即方案数为 K(K+sK)=K(K+ss)K\binom{K+s}{K} = K\binom{K+s}{s}。从 11nn 枚举 ss,则答案为:

s=1nF(s)K(K+ss)\sum_{s=1}^n F(s)K\binom{K+s}{s}

然后我打完代码才发现这个思路有个问题,就是我的 F(i)F(i) 代表的是「所有」大小为 ii 的子集的最大团大小之和。但是你每次计算的时候,应该乘的是「一种」大小为 ii 的子集的最大团大小。所以导致答案错误。而且我感觉我的思路从头到尾全错了。

我已经想了俩小时了,现在脑子想晕了且一点进展都没有,我想知道这题应该咋计算每种方案的贡献,而且题解区和网上都没有搜到关于这题的题解。求助。

2022/1/11 21:38
加载中...