AC日记——[SCOI2008] 着色方案 bzoj 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的更多相关文章
- BZOJ 1079: [SCOI2008]着色方案 记忆化搜索
1079: [SCOI2008]着色方案 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- bzoj 1079: [SCOI2008]着色方案 DP
1079: [SCOI2008]着色方案 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 803 Solved: 512[Submit][Status ...
- bzoj1079: [SCOI2008]着色方案
ci<=5直接想到的就是5维dp了...dp方程YY起来很好玩...写成记忆化搜索比较容易 #include<cstdio> #include<cstring> #inc ...
- [SCOI2008]着色方案
1079: [SCOI2008]着色方案 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2228 Solved: 1353[Submit][Stat ...
- [SCOI2008] 着色方案[高维dp]
321. [SCOI2008] 着色方案 ★★★ 输入文件:color.in 输出文件:color.out 简单对比时间限制:1 s 内存限制:64 MB 题目背景: 有n个木块排成一 ...
- BZOJ 1079: [SCOI2008]着色方案(巧妙的dp)
BZOJ 1079: [SCOI2008]着色方案(巧妙的dp) 题意:有\(n\)个木块排成一行,从左到右依次编号为\(1\)~\(n\).你有\(k\)种颜色的油漆,其中第\(i\)种颜色的油漆足 ...
- 【BZOJ】1079: [SCOI2008]着色方案(dp+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1079 只能想到5^15的做法...........................果然我太弱. 其实 ...
- 【BZOJ 1079】[SCOI2008]着色方案
Description 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n.相邻两个木 ...
- [luogu2476][bzoj1079][SCOI2008]着色方案【动态规划】
题目描述 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+-+ck=n.相邻两个木块涂相同色显得很难 ...
随机推荐
- 容器技术的落地还要依靠SDN
容器能够实现新应用程序的快速部署,代表着目前IT开发社区的最热门趋势之一.然而,想要实现容器部署生产环境,IT人员还需要使用SDN技术,在分布式微应用程序之间实现可扩展.可管理且安全的通信. 什么是容 ...
- apache的/etc/httpd/conf/httpd.conf和/usr/local/apache2/conf/httpd.conf区别
一.问题 centos系统用yum安装完apache后,重启后有时会失效,然后去网上找资料,发现有的说重启命令是这样的: /etc/init.d/httpd restart 而有的呢,说重启命令应该是 ...
- Python SimpleHTTPServer简单HTTP服务器
搭建FTP,或者是搭建网络文件系统,这些方法都能够实现Linux的目录共享.但是FTP和网络文件系统的功能都过于强大,因此它们都有一些不够方便的地方.比如你想快速共享Linux系统的某个目录给整个项目 ...
- disable-network-config
network: {config: disabled}
- TensorFlow dataset API 使用
# TensorFlow dataset API 使用 由于本人感兴趣的是自然语言处理,所以下面有关dataset API 的使用偏向于变长数据的处理. 1. 从迭代器中引入数据 import num ...
- python作业:购物车(第二周)
一.作业需求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4 ...
- nodejs取参四种方法req.body,req.params,req.param,req.body
摘要: nodejs取参四种方法req.body,req.params,req.param,req.body 获取请求很中的参数是每个web后台处理的必经之路,nodejs提供了四种方法来实现. 获取 ...
- 第二阶段团队冲刺-five
昨天: 用servlet完成名单打印功能. 今天: 完成打印名单的功能. 遇到的问题: 在jsp中调用java方法与在main函数中的测试结果一致.
- Thymeleaf 模板 在spring boot 中的引用和应用
Thymeleaf是一个java类库,他是一个xml/xhtml/html5的模板引擎和Struts框架的freemarker模板类似,可以作为mvc的web应用的view层. Thymeleaf还提 ...
- 【bzoj3894】文理分科 网络流最小割
原文地址:http://www.cnblogs.com/GXZlegend 题目描述 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用 ...