bzoj1079: [SCOI2008]着色方案
来源:互联网 发布:java项目开发环境 编辑:程序博客网 时间:2024/05/29 09:44
传送门
普通记忆化搜索绝逼爆掉。
但是我们发现能涂i个的油漆实质上是相同的。
得到状态f[a][b][c][d][e][i],表示涂1个的有a个,2个的有b个,3个的有c个,4个的有d个,5个的有e个,上一个涂的是l的方案数。
然后一波记忆化水过。
var ma:array [0..15,0..15,0..15,0..15,0..15,0..5] of boolean; f:array [0..15,0..15,0..15,0..15,0..15,0..5] of int64; x:array [1..5] of int64; n,i,t:longint;function dp(a,b,c,d,e,k:int64):int64; var tem:int64; begin if ma[a,b,c,d,e,k] then exit(f[a,b,c,d,e,k]); if (a+b+c+d+e=0) then begin ma[a,b,c,d,e,k]:=true; f[a,b,c,d,e,k]:=1; exit(1); end; tem:=0; if (a<>0) then if (k<>2) then tem:=tem+a*dp(a-1,b,c,d,e,1) else tem:=tem+(a-1)*dp(a-1,b,c,d,e,1); if (b<>0) then if (k<>3) then tem:=tem+b*dp(a+1,b-1,c,d,e,2) else tem:=tem+(b-1)*dp(a+1,b-1,c,d,e,2); if (c<>0) then if (k<>4) then tem:=tem+c*dp(a,b+1,c-1,d,e,3) else tem:=tem+(c-1)*dp(a,b+1,c-1,d,e,3); if (d<>0) then if (k<>5) then tem:=tem+d*dp(a,b,c+1,d-1,e,4) else tem:=tem+(d-1)*dp(a,b,c+1,d-1,e,4); if (e<>0) then tem:=tem+e*dp(a,b,c,d+1,e-1,5); ma[a,b,c,d,e,k]:=true; f[a,b,c,d,e,k]:=tem mod 1000000007; exit(f[a,b,c,d,e,k]); end;begin read(n); for i:=1 to n do begin read(t); inc(x[t]); end; write(dp(x[1],x[2],x[3],x[4],x[5],0));end.
0 0
- [bzoj1079][SCOI2008]着色方案
- BZOJ1079: [SCOI2008]着色方案
- bzoj1079 [SCOI2008]着色方案
- bzoj1079 [SCOI2008]着色方案
- bzoj1079: [SCOI2008]着色方案
- bzoj1079[SCOI2008]着色方案
- BZOJ1079[SCOI2008]着色方案
- 【bzoj1079】[SCOI2008]着色方案
- BZOJ1079: [SCOI2008]着色方案
- bzoj1079 [SCOI2008]着色方案
- bzoj1079: [SCOI2008]着色方案 dp
- [BZOJ1079]SCOI2008着色方案|DP
- [BZOJ1079][SCOI2008][DP]着色方案
- [DP] BZOJ1079: [SCOI2008]着色方案
- 【bzoj1079】【SCOI2008】【着色方案】【记忆化搜索】
- [BZOJ1079][SCOI2008]着色方案(记搜)
- 【BZOJ1079】[SCOI2008]着色方案【计数DP】【奇怪的姿势】
- BZOJ1079 [SCOI2008]着色方案 记忆化搜索DP 妙啊
- IIC总线协议
- 加沙事件叹言
- MindManager美化导图——主题
- 优先级
- 比较好的事件应用实践记录
- bzoj1079: [SCOI2008]着色方案
- 常用命令笔记
- Model常用搜索方法
- Rules
- iOS中MVC设计模式的优缺点
- Android Binder 全解析(1) -- 概述
- Netbeans Subversion 1.7 client …
- 【斯坦福大学-机器学习】3.线性代数
- 笔记