【SCOI2008】着色方案
题目:
http://oj.changjun.com.cn/problem/detail/pid/2027
考虑记忆化搜索。
因为每种颜色能涂的木块<=5,设f[a][b][c][d][e][last]代表当前还剩a个能涂1的木块......上一个涂的木块是剩last的木块
则f[a,b,c,d,e,last]=(a-(last==2))*f[a-1,b,c,d,e]+(b-(last==3))*f[a+1,b-1,c,d,e]+
(c-(last==4))*f[a,b+1,c-1,d,e]+...+( e(last==6))*f[a,b,c,d+1,e-1]。
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<ctime>
#include<cmath>
#include<string>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define LL long long
#define mod 1000000007
using namespace std;
int g[],n=,k;
LL f[][][][][][];//第六维判重
bool bj[][][][][][];
LL dfs(int a,int b,int c,int d,int e,int Last)
{
if(a+b+c+d+e==) return ;
if(bj[a][b][c][d][e][Last]) return f[a][b][c][d][e][Last]%mod;
LL ans=;
if(a) ans+=(a-(Last==))*dfs(a-,b,c,d,e,),ans%=mod;//放a
if(b) ans+=(b-(Last==))*dfs(a+,b-,c,d,e,),ans%=mod;//放b
if(c) ans+=(c-(Last==))*dfs(a,b+,c-,d,e,),ans%=mod;//放c
if(d) ans+=(d-(Last==))*dfs(a,b,c+,d-,e,),ans%=mod;//放d
if(e) ans+=(e-(Last==))*dfs(a,b,c,d+,e-,),ans%=mod;//放e
f[a][b][c][d][e][Last]=ans%mod;
bj[a][b][c][d][e][Last]=;
return ans%mod;
}
int main()
{
freopen("!.in","r",stdin);
freopen("!.out","w",stdout);
scanf("%d",&k);
int op;
for(int i=;i<=k;i++)
scanf("%d",&op),g[op]++;//能涂op个的数量
dfs(g[],g[],g[],g[],g[],);
printf("%lld",f[g[]][g[]][g[]][g[]][g[]][]);
return ;
}
【SCOI2008】着色方案的更多相关文章
- BZOJ 1079: [SCOI2008]着色方案 记忆化搜索
1079: [SCOI2008]着色方案 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- bzoj1079: [SCOI2008]着色方案
ci<=5直接想到的就是5维dp了...dp方程YY起来很好玩...写成记忆化搜索比较容易 #include<cstdio> #include<cstring> #inc ...
- bzoj 1079: [SCOI2008]着色方案 DP
1079: [SCOI2008]着色方案 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 803 Solved: 512[Submit][Status ...
- [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]着色方案
Description 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块.所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n.相邻两个木 ...
- BZOJ 1079: [SCOI2008]着色方案(巧妙的dp)
BZOJ 1079: [SCOI2008]着色方案(巧妙的dp) 题意:有\(n\)个木块排成一行,从左到右依次编号为\(1\)~\(n\).你有\(k\)种颜色的油漆,其中第\(i\)种颜色的油漆足 ...
- 【状态表示】Bzoj1096 [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.相邻两个木块涂相同色显得很难 ...
- SCOI2008着色方案(记忆化搜索)
有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i 种颜色的油漆足够涂ci 个木块.所有油漆刚好足够涂满所有木块,即 c1+c2+...+ck=n.相邻两个木块涂相同色显得很难 ...
随机推荐
- windows下Visual Studio Code 1.9安装
点击送你去官网下载vs code 进入下载页面如下 下载完成双击安装 安装完成打开之后如下图,最新版的默认中文就挺好的! 注意下面是微软建议: Note: .NET Framework 4.5.2 i ...
- Hadoop权威指南:压缩
Hadoop权威指南:压缩 [TOC] 文件压缩的两个好处: 减少储存文件所需要的磁盘空间 加速数据在网络和磁盘上的传输 压缩格式总结: 压缩格式 工具 算法 文件扩展名 是否可切分 DEFLATE ...
- C# vs TypeScript - 高级类型
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...
- setTimeout小总结
▓▓▓▓▓▓ 大致介绍 今天看了一篇文章,觉得写得不错,所以学习了一下,这篇博客是我自己的理解和总结 原文:你应该知道的 setTimeout 秘密 主要内容: 1.setTimeout原理 2.se ...
- list_删除元素
项目遇到了题目所述的问题,还是折腾了一会... 现在总结一下: 这里写一个测试小程序: List<Integer> ints = new ArrayList<Integer>( ...
- mybatis中mapping文件like查询方式
方式1: select * from person where name like "%"#{name}"%" 方式2: select * from perso ...
- 如何创建DLL文件
动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的.所有的C语言标准库函数都存放在某一函数库中.在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添 ...
- List<bean>转换Jsonarray知识心得
使用基本的jdbc连接mysql,获取数据. 创建实体类user: package com.json; public class user { private int id; private Stri ...
- 最新虚拟机SAP ECC6.0 EHP7带示例数据IDES版+BW740
学习SAP,需要虚拟机,请联系QQ:858-048-581 版本:ECC6.0 EHP7.虚拟机操作系统:windows server 2008 64bit..数据库:SQL2008 R2.系统已经做 ...
- jsp判断为空用not empty
试过 !='' 不管用,只好百度,现在知道了 <c:if test="${not empty pos.requireDegreeName }"> ${pos.requi ...