zoukankan      html  css  js  c++  java
  • BZOJ 1079 着色方案

    本来只会压位。。。看了黄学长的题解恍然大悟。。。同样数量的颜色本质上是相同的啊。。。

    然后就从5^15变成15^5就可以做了。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define mod 1000000007
    using namespace std;
    long long k,cnt[6],c[20],dp[6][16][16][16][16][16];
    long long dfs(long long x,long long a,long long b,long long c,long long d,long long e)
    {
        if (dp[x][a][b][c][d][e]) return dp[x][a][b][c][d][e];
        long long ret=0;
        if (a) ret=(ret+(a-(x==2))*dfs(1,a-1,b,c,d,e)%mod)%mod;
        if (b) ret=(ret+(b-(x==3))*dfs(2,a+1,b-1,c,d,e)%mod)%mod;
        if (c) ret=(ret+(c-(x==4))*dfs(3,a,b+1,c-1,d,e)%mod)%mod;
        if (d) ret=(ret+(d-(x==5))*dfs(4,a,b,c+1,d-1,e)%mod)%mod;
        if (e) ret=(ret+e*dfs(5,a,b,c,d+1,e-1)%mod)%mod;
        dp[x][a][b][c][d][e]=ret;
        return ret;
    }
    int main()
    {
        scanf("%lld",&k);
        for (long long i=1;i<=k;i++)
        {
            scanf("%lld",&c[i]);
            cnt[c[i]]++;
        }
        for (int i=1;i<=5;i++) dp[i][0][0][0][0][0]=1;
        printf("%lld
    ",dfs(0,cnt[1],cnt[2],cnt[3],cnt[4],cnt[5]));
        return 0;
    }
  • 相关阅读:
    hive基本操作与应用
    理解MapReduce计算构架
    熟悉HBase基本操作
    熟悉常用的HDFS操作
    爬虫大作业
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    Hadoop综合大作业
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/6015404.html
Copyright © 2011-2022 走看看