1079

思路:

  dp;

  我们如果dp方程为15维,每维记录颜色还有多少种;

  不仅tle,mle,它还re;

  所以,我们压缩一下dp方程;

  方程有6维,第i维记录有多少种颜色还剩下i次;

  最后还要记录上次使用是第几维;

来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define ll long long
#define mod 1000000007 ll n,m[],sum,ai[],dp[][][][][][]; bool if_[][][][][][]; ll dfs(ll a,ll b,ll c,ll d,ll e,ll f)
{
if(a<||b<||c<||d<||e<) return ;
if(a+b+c+d+e>sum) return ;
if(a>m[]||b>m[]||c>m[]||d>m[]||e>m[]) return ;
if(if_[a][b][c][d][e][f]) return dp[a][b][c][d][e][f];
if_[a][b][c][d][e][f]=true;
ll now=;
if(f==)
{
now+=dfs(a,b,c,d,e+,)*(e+);
now+=dfs(a,b,c,d,e+,)*(e+);
now+=dfs(a,b,c,d,e+,)*e;
now+=dfs(a,b,c,d,e+,)*(e+);
now+=dfs(a,b,c,d,e+,)*(e+);
now+=dfs(a,b,c,d,e+,)*(e+);
}
else if(f==)
{
now+=dfs(a,b,c,d+,e-,)*(d+);
now+=dfs(a,b,c,d+,e-,)*(d+);
now+=dfs(a,b,c,d+,e-,)*(d+);
now+=dfs(a,b,c,d+,e-,)*d;
now+=dfs(a,b,c,d+,e-,)*(d+);
now+=dfs(a,b,c,d+,e-,)*(d+);
}
else if(f==)
{
now+=dfs(a,b,c+,d-,e,)*(c+);
now+=dfs(a,b,c+,d-,e,)*(c+);
now+=dfs(a,b,c+,d-,e,)*(c+);
now+=dfs(a,b,c+,d-,e,)*(c+);
now+=dfs(a,b,c+,d-,e,)*c;
now+=dfs(a,b,c+,d-,e,)*(c+);
}
else if(f==)
{
now+=dfs(a,b+,c-,d,e,)*(b+);
now+=dfs(a,b+,c-,d,e,)*(b+);
now+=dfs(a,b+,c-,d,e,)*(b+);
now+=dfs(a,b+,c-,d,e,)*(b+);
now+=dfs(a,b+,c-,d,e,)*(b+);
now+=dfs(a,b+,c-,d,e,)*b;
}
else if(f==)
{
now+=dfs(a+,b-,c,d,e,)*(a+);
now+=dfs(a+,b-,c,d,e,)*(a+);
now+=dfs(a+,b-,c,d,e,)*(a+);
now+=dfs(a+,b-,c,d,e,)*(a+);
now+=dfs(a+,b-,c,d,e,)*(a+);
now+=dfs(a+,b-,c,d,e,)*(a+);
}
now%=mod;
dp[a][b][c][d][e][f]=now;
// printf("%d %d %d %d %d %d %lld\n",a,b,c,d,e,f,now);
return now;
} int main()
{
// freopen("color.in","r",stdin);
// freopen("color.out","w",stdout);
cin>>n;ll pos;
for(ll i=;i<=n;i++)
{
cin>>pos;
ai[pos]++;
}
for(ll i=;i<=;i++)
{
for(ll j=i;j<=;j++) m[i]+=ai[j];
sum+=ai[i];
}
dp[ai[]][ai[]][ai[]][ai[]][ai[]][]=;
if_[ai[]][ai[]][ai[]][ai[]][ai[]][]=true;
cout<<dfs(,,,,,);
return ;
}

最新文章

  1. Remove Duplicates from Sorted Array II
  2. iOS 2D绘图 (Quartz 2D) 概述
  3. CANVAS 水波动态背景
  4. ROS下创建第一个节点工程
  5. Mantis1.2.19 在Windows 平台上的安装配置详解
  6. AE+C# 向axPageLayoutControl1添加图例
  7. MyBatis(3.2.3) - Configuring MyBatis using XML, Environment
  8. 网络通信 --&gt; CRC校验
  9. MIPCache 域名升级
  10. jmeter的基本功能使用详解
  11. SCCM2012 R2实战系列之九:OSD(中)--捕获镜像
  12. redis导数到mysql
  13. RestFul风格接口示例
  14. WiX: uninstall older version of the application
  15. 【Spring】SpringMVC之拦截器
  16. CentOS 7 安装开发者环境
  17. Ubuntu搜索不到WiFi的解决办法
  18. android:shape的使用(+圆角ListView)(转)
  19. Codeforces Beta Round #6 (Div. 2 Only) 单调队列
  20. Pandas:表计算与数据分析

热门文章

  1. 简洁好看的form样式收藏
  2. css一些事儿
  3. PowerDesigner如何将一个包里的表拷贝到另一个表以后在视图中也可以显示?
  4. Android通过用代码画虚线椭圆边框背景来学习一下shape的用法
  5. 《Cracking the Coding Interview》——第9章:递归和动态规划——题目4
  6. 抓取网站访问者的QQ号码
  7. TIDB介绍
  8. Python全栈工程师(每周总结:2)
  9. 孤荷凌寒自学python第三十天python的datetime.datetime模块
  10. Android 程序怎么打log