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 ;
}

AC日记——[SCOI2008] 着色方案 bzoj 1079的更多相关文章

  1. BZOJ 1079: [SCOI2008]着色方案 记忆化搜索

    1079: [SCOI2008]着色方案 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  2. bzoj 1079: [SCOI2008]着色方案 DP

    1079: [SCOI2008]着色方案 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 803  Solved: 512[Submit][Status ...

  3. bzoj1079: [SCOI2008]着色方案

    ci<=5直接想到的就是5维dp了...dp方程YY起来很好玩...写成记忆化搜索比较容易 #include<cstdio> #include<cstring> #inc ...

  4. [SCOI2008]着色方案

    1079: [SCOI2008]着色方案 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2228  Solved: 1353[Submit][Stat ...

  5. [SCOI2008] 着色方案[高维dp]

    321. [SCOI2008] 着色方案 ★★★   输入文件:color.in   输出文件:color.out   简单对比时间限制:1 s   内存限制:64 MB 题目背景: 有n个木块排成一 ...

  6. BZOJ 1079: [SCOI2008]着色方案(巧妙的dp)

    BZOJ 1079: [SCOI2008]着色方案(巧妙的dp) 题意:有\(n\)个木块排成一行,从左到右依次编号为\(1\)~\(n\).你有\(k\)种颜色的油漆,其中第\(i\)种颜色的油漆足 ...

  7. 【BZOJ】1079: [SCOI2008]着色方案(dp+特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1079 只能想到5^15的做法...........................果然我太弱. 其实 ...

  8. 【BZOJ 1079】[SCOI2008]着色方案

    Description 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n.相邻两个木 ...

  9. [luogu2476][bzoj1079][SCOI2008]着色方案【动态规划】

    题目描述 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+-+ck=n.相邻两个木块涂相同色显得很难 ...

随机推荐

  1. python 三目运算

    python中的三目运算: result = a if condition else b #当满足condition返回a否则返回b 三目运算可以使你的代码看起来简洁,且运算高效

  2. 【02】webstorm配置babel转换器+截图(by魔芋)

    [02]webstorm配置babel转换器+截图(by魔芋)   [02]魔芋的安装过程     01,配置babel.   02,用webstorm.注意webstorm的版本号.   03,使用 ...

  3. 《Cracking the Coding Interview》——第14章:Java——题目4

    2014-04-26 19:02 题目:解释下C++里模板和java里泛型的区别? 解法:我很少用java,属于连语法都不过关的程度.所以这个题还真没法详细答,查了些资料以后写了以下几点. 代码: / ...

  4. 【Minimum Window】cpp

    题目: Given a string S and a string T, find the minimum window in S which will contain all the charact ...

  5. python2.7写入文件时指定编码为utf-8

    python3.0可以这样写 f = open('ufile.log', 'w', 'utf-8')   但在python2.7中open()没有编码参数,如上那样写会报错,可以使用如下模块 impo ...

  6. springboot相关链接

    springboot的三种启动方式 https://blog.csdn.net/my__Sun_/article/details/72866329 springboot学历历程 https://www ...

  7. windows版本cloudbase-init流程说明

    源码流程说明 - 程序首先判断操作系统类型,加载对应的模块 - 加载服务,服务共分为四种: 'cloudbaseinit.metadata.services.httpservice.HttpServi ...

  8. 课时5:闲聊之Python的数据类型

    目录: 一.引言 二.数据类型 >整型 >浮点型 >布尔类型 三.类型转换 四.获得关于类型的信息 五.课时05课后习题及答案 *********** 一.引言 ********** ...

  9. 普通用户操作tomcat项目时报:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program

    在使用普通用户更新tomcat项目适合出现这个信息,Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At ...

  10. MSHflexgrid控件删除选中行

    相应的代码: Private Sub some_Click() '定义变量 Dim txtSQL As String Dim MsgText As String Dim Online_mrc As A ...