zoukankan      html  css  js  c++  java
  • **** **** 建筑物|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}$

  • 相关阅读:
    Kibana安装
    elasticsearch安装
    分布式_zookeeper
    通信协议_三次握手_四次挥手
    Spring中的IOC_源码_随笔
    Spring设计模式_策略模式/其他
    Spring设计模式_工厂模式
    spring设计模式_代理模式
    docker常用指令01
    ubuntu18下安装docker
  • 原文地址:https://www.cnblogs.com/fmj123/p/SMOJ2806.html
Copyright © 2011-2022 走看看