zoukankan      html  css  js  c++  java
  • bzoj1079: [SCOI2008]着色方案

    1079: [SCOI2008]着色方案

    Time Limit: 10 Sec  Memory Limit: 162 MB

    Description

      有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块。
    所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n。相邻两个木块涂相同色显得很难看,所以你希望统计任意两
    个相邻木块颜色不同的着色方案。

    Input

      第一行为一个正整数k,第二行包含k个整数c1, c2, ... , ck。

    Output

      输出一个整数,即方案总数模1,000,000,007的结果。

    Sample Input

    3
    1 2 3

    Sample Output

    10

    HINT

     100%的数据满足:1 <= k <= 15, 1 <= ci <= 5

    Source

    所以用F[a][b][c][d][e][l]表示当前有能涂1次的油漆a个,能涂2次的b个….前一个颜色为l,再搞下转移就行了。

     1 #include<iostream>
     2 #include<cstdio>
     3 #define ll long long
     4 #define mod 1000000007
     5 using namespace std;
     6 ll f[16][16][16][16][16][6];int x[6],n;
     7 bool mark[16][16][16][16][16][6];
     8 ll dp(int a,int b,int c,int d,int e,int k)
     9 {
    10     ll t=0;
    11     if(mark[a][b][c][d][e][k])return f[a][b][c][d][e][k];
    12     if(a+b+c+d+e==0)return 1;
    13     if(a)  
    14         t+=(a-(k==2))*dp(a-1,b,c,d,e,1);  
    15     if(b)  
    16         t+=(b-(k==3))*dp(a+1,b-1,c,d,e,2);  
    17     if(c)  
    18         t+=(c-(k==4))*dp(a,b+1,c-1,d,e,3);  
    19     if(d)  
    20         t+=(d-(k==5))*dp(a,b,c+1,d-1,e,4);  
    21     if(e)  
    22         t+=e*dp(a,b,c,d+1,e-1,5);  
    23     mark[a][b][c][d][e][k]=1;
    24     return f[a][b][c][d][e][k]=(t%mod);
    25 }
    26 int main()
    27 {
    28     scanf("%d",&n);
    29     for(int i=1;i<=n;i++)
    30     {
    31             int t;
    32             scanf("%d",&t);
    33             x[t]++;
    34             }
    35     printf("%lld",dp(x[1],x[2],x[3],x[4],x[5],0));
    36     return 0;
    37 }
  • 相关阅读:
    POJ 2752 Seek the Name, Seek the Fame
    POJ 2406 Power Strings
    KMP 算法总结
    SGU 275 To xor or not to xor
    hihocoder 1196 高斯消元.二
    hihoCoder 1195 高斯消元.一
    UvaLive 5026 Building Roads
    HDU 2196 computer
    Notions of Flow Networks and Flows
    C/C++代码中的笔误
  • 原文地址:https://www.cnblogs.com/WQHui/p/8575529.html
Copyright © 2011-2022 走看看