【题解】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\) 列中。
又死了,显然最后这个颜色 \(k\) 在放置 \((j-p)\) 列的同时,可以再放在若干行上。
(dp 转移还是需要加强啊,想想某一个特定元素的所有情况,并消除她们的贡献之后来划分子问题。
\(g_{i,j,k}\):将 \(k\) 个同色棋子恰好填满 \(i\) 行,\(j\) 列。
相当于我们先钦定每个元素不同,然后分讨这个元素插入进去之后的影响。
胡对了!!!
(虽然时间复杂度 \(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\) 的奇偶来判一下最后的符号。
相当于每次选择是否向右走一步,所以 \(i\) 的贡献次数就应该是 \(\displaystyle{n-1\choose i-1}\)。
然后就没了?
5min passed...
注意,因为我们的阶乘可能整除 \(3\),所以必须要用 lucas
「AGC035D」Add and Remove
\(n\le 18\)???
区间 dp?
实际上所有的操作,可以视作一个长度为 \(n-2\) 的值域在 \([1,n]\) 每个元素互不相同的序列。
感觉这道题大体的思路应该是:
- 通过一种神秘的方法,对于一种策略,可以等价知道每个元素对答案的贡献;(尝试过用 dag 计数来理解。
- 根据上面找到的这种等价方式,将问题转化。
20min passed...
https://www.luogu.com.cn/article/sh7ab2sh
首先要意识到,最后剩下的两个数一定是 \(a_1,a_n\)。这个可以反证。
其实这种 “倒着思考” 可以视作是一种思考转移的策略。
而每次删掉最后这一个元素的时候,对两侧的贡献的系数在转移的时候跟着转移,实际上就是上面第一点提到的这个系数问题。
把系数放在状态里面。
可以证明的是,对一个区间存在的 \(cl,cr\) 不会相同。
所以总的状态数是 \(O(2^n)\),而每个 dp 值只会被用到一次,所以直接打爆搜就行(否则会 MLE。