题意:给定(R)、(G)、(B)三种颜色块的个数,与(N imes N)的方格。求有多少种方案,使得前面看,所有方块的颜色相同。答案mod (10^9+7)
(0le R,G,B <26 ,1le N<26)
题解:
计数类问题,考虑(DP)。
首先,设对于第(i)列,前面总共放了(R' ,G' ,B')的方案为(f[i][R'][G'][B']),则有
(f[i][R'][G'][B']=sum f[i][R''][G''][B'']*G[R'-R''][G'-G''][B'-B''] (R''le R',G''le G',B''le B'))
其中(G)为一列内,使用r、g、b个方块的方案数
那么现在来求(G)。
设(s[i][R'][G'][B'][h])为一列中,前(i)行放置(R',G',B')个,且最高的高度为(h)的方案数
则(G[R'][G'][B']=sum_{k=1}^{maxheight} s[N][R'][G'][B'][k])
显然,(maxheight)由决定的那一个颜色的个数决定。
这样做时间复杂度是(O(N^8)),会t掉
有没有更好的方法?
我们可以颜色分为需要在前面看到的颜色与另外的两种颜色。将其称作(Co)与(other)
则上面的数组都可以省掉一维,求(s)时枚举减少两维,则时间复杂度为(O(N^6))
这样做显然不对,由于把两种颜色(假使为(c1 ,c2))合了起来,所以最后答案应乘上$ C_{c1+c2}^{c1}$