**** **** 建筑物|DP

题意:给定(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}$

原文地址:https://www.cnblogs.com/fmj123/p/SMOJ2806.html