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.相邻两个木块涂相同色显得很难 ...
随机推荐
- spring里面的context:component-scan
原文:http://jinnianshilongnian.iteye.com/blog/1762632 component-scan的作用的自动扫描,把扫描到加了注解Java文件都注册成bean &l ...
- FIFO页面淘汰算法
1.优异虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行以下访问页号序列后1,3,4,2,1,3,5,1,2,5,4,2,会产生多少次缺页(9) 在 ...
- HNOI2018 摸鱼记
HNOI2018 摸鱼记 今天我又来记流水账啦 Day 0 颓废的一天. 我,球爷和杜教在颓膜膜.io ych看起来在搓碧蓝 鬼知道哥达鸭干了什么 学习氛围只局限在机房的一角 后来全体Oier开会,5 ...
- 关于 Inno Setup 报木马的问题处理
用 Inno Setup 生成的安装包总是报木马,尝试了N次之后发现,把 Compression=lzma 改为 Compression=zip 就不会再报了,可能lzma的压缩算法导致delphi的 ...
- 使用Html5shiv.js让ie支持html5
ie低版本不支持html5标签,可以引入一段脚本,在ie浏览器中创建html5的标签. 1,可以在网上下载html5shiv的压缩包,引入压缩版的html5shiv.min.js即可. 脚本引用要在h ...
- Python import与from import使用
Python程序可以调用一组基本的函数(即内建函数),比如print().input()和len()等函数.Python本身也内置一组模块(即标准库).每个模块都是一个Python程序,且包含了一组相 ...
- SQL 与关系代数
Table of Contents 前言 关系与表 关系代数的基本运算 投影 选择 并运算 集合差运算 笛卡尔积 更名运算 关系代数的附加运算 集合交运算 连接运算 自然连接 内连接 外连接 结语 前 ...
- PoolManager
我用的PoolManager版本是5.5.2的,导入的包总共有三个文件夹:Editor,Plugins,PoolManagerExampleFiles 1.Editor这个文件夹里面的东西,顾名思义, ...
- ASP.NET Core 2.1 源码学习之 Options[3]:IOptionsMonitor 【转】
原文链接:https://www.cnblogs.com/RainingNight/p/strongly-typed-options-ioptions-monitor-in-asp-net-core. ...
- Oz 创建Windows2008R2镜像
此tdl和auto文件只可定义windows disk bus以ide模式启动,不支持virtio. <template> <name>Windows-gushiren< ...