着色方案

[SCOI2008]着色方案

https://ac.nowcoder.com/acm/problem/20265

代码如下:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#define mod 1000000007
using namespace std;
int s[6];
long long f[17][17][17][17][17][7];
long long dfs(int a1,int a2,int a3,int a4,int a5,int x)
{
    if(a1==0 && a2==0 && a3==0 && a4==0 && a5==0)f[a1][a2][a3][a4][a5][x]=1;
    if(f[a1][a2][a3][a4][a5][x]!=0)return f[a1][a2][a3][a4][a5][x];
    long long ans=0;
    if(a1!=0)
    {
        int he=a1;if(x==2)he--;
        ans+=he*dfs(a1-1,a2,a3,a4,a5,1);ans%=mod;
    }
    if(a2!=0)
    {
        int he=a2;if(x==3)he--;
        ans+=he*dfs(a1+1,a2-1,a3,a4,a5,2);ans%=mod;
    }
    if(a3!=0)
    {
        int he=a3;if(x==4)he--;
        ans+=he*dfs(a1,a2+1,a3-1,a4,a5,3);ans%=mod;
    }
    if(a4!=0)
    {
        int he=a4;if(x==5)he--;
        ans+=he*dfs(a1,a2,a3+1,a4-1,a5,4);ans%=mod;
    }
    if(a5!=0)
    {
        int he=a5;
        ans+=he*dfs(a1,a2,a3,a4+1,a5-1,5);ans%=mod;
    }
    f[a1][a2][a3][a4][a5][x]=ans;
    return ans;
}
int main()
{
    int k;
    scanf("%d",&k);
    for(int i=1;i<=k;i++)
    {
        int x;
        scanf("%d",&x);
        s[x]++;
    }
    printf("%lld\n",dfs(s[1],s[2],s[3],s[4],s[5],0));
    return 0;
}
全部评论

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务