【题解】Solution Set - NOIP2024集训Day37 计数 dp

【题解】Solution Set - NOIP2024集训Day37 计数 dp

https://www.becoder.com.cn/contest/5555

T1,2 easier

1,5,(6,3),(2,7),8,4


「CQOI2011」放棋子

做过。

考虑容斥。

二维二项式反演?


感觉用二项式反演,转化为逆向问题反而不好做,考虑一个 dp 直接做。

\(f_{i,j,k}\):用前 \(k\) 个颜色,放置在恰好 \(i\) 行,\(j\) 列中。

\[f_{i,j,k}=\sum_{p=0}^{j-1}f_{i,p,k-1}\times ... \]

又死了,显然最后这个颜色 \(k\) 在放置 \((j-p)\) 列的同时,可以再放在若干行上。

(dp 转移还是需要加强啊,想想某一个特定元素的所有情况,并消除她们的贡献之后来划分子问题。


\[f_{i,j,k}=\sum_{l\in[0,i],r\in[0,j]}[(i-l)(j-r)\ge a_k]\left(f_{l,r,k-1}{n-l\choose i-l}{m-r\choose j-r}g_{i-l,j-r,a_k} \right) \]

\(g_{i,j,k}\):将 \(k\) 个同色棋子恰好填满 \(i\) 行,\(j\) 列。

\[g_{i,j,k}=\frac 1{k!}((ij-(k-1))g_{i,j,k-1}+ij(g_{i-1,j,k-1}+g_{i,j-1,k-1}+g_{i-1,j-1,k-1})) \]

相当于我们先钦定每个元素不同,然后分讨这个元素插入进去之后的影响。

胡对了!!!

(虽然时间复杂度 \(O(n^2m^2\sum a)\) 没有题解的 \(O(n^2m^2c)\) 优,但是好歹她对了。😁

与题解不同的部分就在于 \(g\) 的求解上面(题解的求法可以看 luogu 的代码。

题解那个也挺对的,就是:所有的 - 不合法的。



「ARC117C」Tricolor Pyramid

之前好像碰过这道题,但是没有 A 来着(

把原字符集映射到 \(1\sim 3\)

然后不同的取第三者,就相当于异或。但是相同怎么办啊。

15min passed...(又想了一些奇怪的东西。


(瞄了一眼题解,发现 \(\bmod3\)

实际上,最开始这个思路大体是对的,就是要找到一个合适的运算来表达这种操作,然后再通过这个运算的一些性质来合并计算整个过程。

\(a,b\) 合并就等价于:\(-(a+b)\bmod 3\)

(真就乱试啊。

现在问题就简单了,就是要算每个底部元素对顶部的贡献次数。(注意通过 \(n\) 的奇偶来判一下最后的符号。

image

相当于每次选择是否向右走一步,所以 \(i\) 的贡献次数就应该是 \(\displaystyle{n-1\choose i-1}\)

然后就没了?

5min passed...

注意,因为我们的阶乘可能整除 \(3\),所以必须要用 lucas


「AGC035D」Add and Remove

\(n\le 18\)???

区间 dp?


实际上所有的操作,可以视作一个长度为 \(n-2\) 的值域在 \([1,n]\) 每个元素互不相同的序列。

感觉这道题大体的思路应该是:

  1. 通过一种神秘的方法,对于一种策略,可以等价知道每个元素对答案的贡献;(尝试过用 dag 计数来理解。
  2. 根据上面找到的这种等价方式,将问题转化。

20min passed...


https://www.luogu.com.cn/article/sh7ab2sh

首先要意识到,最后剩下的两个数一定是 \(a_1,a_n\)。这个可以反证。

其实这种 “倒着思考” 可以视作是一种思考转移的策略。

而每次删掉最后这一个元素的时候,对两侧的贡献的系数在转移的时候跟着转移,实际上就是上面第一点提到的这个系数问题。

把系数放在状态里面。

可以证明的是,对一个区间存在的 \(cl,cr\) 不会相同。

所以总的状态数是 \(O(2^n)\),而每个 dp 值只会被用到一次,所以直接打爆搜就行(否则会 MLE。

posted @ 2024-09-29 21:05  CloudWings  阅读(17)  评论(3编辑  收藏  举报