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. 容器技术的落地还要依靠SDN

    容器能够实现新应用程序的快速部署,代表着目前IT开发社区的最热门趋势之一.然而,想要实现容器部署生产环境,IT人员还需要使用SDN技术,在分布式微应用程序之间实现可扩展.可管理且安全的通信. 什么是容 ...

  2. apache的/etc/httpd/conf/httpd.conf和/usr/local/apache2/conf/httpd.conf区别

    一.问题 centos系统用yum安装完apache后,重启后有时会失效,然后去网上找资料,发现有的说重启命令是这样的: /etc/init.d/httpd restart 而有的呢,说重启命令应该是 ...

  3. Python SimpleHTTPServer简单HTTP服务器

    搭建FTP,或者是搭建网络文件系统,这些方法都能够实现Linux的目录共享.但是FTP和网络文件系统的功能都过于强大,因此它们都有一些不够方便的地方.比如你想快速共享Linux系统的某个目录给整个项目 ...

  4. disable-network-config

    network: {config: disabled}

  5. TensorFlow dataset API 使用

    # TensorFlow dataset API 使用 由于本人感兴趣的是自然语言处理,所以下面有关dataset API 的使用偏向于变长数据的处理. 1. 从迭代器中引入数据 import num ...

  6. python作业:购物车(第二周)

    一.作业需求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4 ...

  7. nodejs取参四种方法req.body,req.params,req.param,req.body

    摘要: nodejs取参四种方法req.body,req.params,req.param,req.body 获取请求很中的参数是每个web后台处理的必经之路,nodejs提供了四种方法来实现. 获取 ...

  8. 第二阶段团队冲刺-five

    昨天: 用servlet完成名单打印功能. 今天: 完成打印名单的功能. 遇到的问题: 在jsp中调用java方法与在main函数中的测试结果一致.

  9. Thymeleaf 模板 在spring boot 中的引用和应用

    Thymeleaf是一个java类库,他是一个xml/xhtml/html5的模板引擎和Struts框架的freemarker模板类似,可以作为mvc的web应用的view层. Thymeleaf还提 ...

  10. 【bzoj3894】文理分科 网络流最小割

    原文地址:http://www.cnblogs.com/GXZlegend 题目描述 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用 ...