zoukankan      html  css  js  c++  java
  • P2476-记忆化搜索

    链接

    DP?

    我们看看,这个状态似乎有亿点点多。
    我们看看数据范围,数量不超过5,颜色数不超过15.
    15维DP显然不靠谱。
    那么我们就思考一下……个数?
    记忆化搜索可ac:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    typedef long long ll;
    using namespace std;
    const ll maxn=16,mod=1e9+7;
    ll f[maxn][maxn][maxn][maxn][maxn][6],b[6];
    
    ll dfs(ll a,ll b,ll c,ll d,ll e,ll last){
    	if(f[a][b][c][d][e][last]!=-1)return f[a][b][c][d][e][last];
    	if(a+b+c+d+e==0)return 1;
    	ll ans=0;
    	if(a)ans+=(a-(last==2))*dfs(a-1,b,c,d,e,1);
    	if(b)ans+=(b-(last==3))*dfs(a+1,b-1,c,d,e,2);
    	if(c)ans+=(c-(last==4))*dfs(a,b+1,c-1,d,e,3);
    	if(d)ans+=(d-(last==5))*dfs(a,b,c+1,d-1,e,4);
    	if(e)ans+=e*dfs(a,b,c,d+1,e-1,5);
    	ans%=mod;
    	f[a][b][c][d][e][last]=ans;
    	return ans;
    }
    
    int main()
    {
    	memset(f,-1,sizeof f);
    	int k;
    	scanf("%d",&k);
    	for(int a,i=1;i<=k;i++)scanf("%d",&a),b[a]++;
    	printf("%lld",dfs(b[1],b[2],b[3],b[4],b[5],0));
    	return 0;
    }
    
  • 相关阅读:
    团队第五次作业评分 项目冲刺
    团队第四次作业评分 系统设计和数据库设计
    随笔
    爬虫
    javascript简单分页
    cookie的存储与取值
    redis的五种数据类型
    什么是反射
    小王同学的随笔
    something just like this---About Me
  • 原文地址:https://www.cnblogs.com/BrotherHood/p/13387973.html
Copyright © 2011-2022 走看看