BZOJ3934 : [CQOI2015]标识设计
轮廓线插头DP。
设$f[i][j][a][b][c][d][e]$表示考虑到了$(i,j)$,轮廓线上3个下插头的位置分别为$a,b,c$,是否有右插头,已经放了$e$个$L$的方案数。
然后直接DP即可。
时间复杂度$O(nm^4)$。
#include<cstdio>
const int N=33,M=4530;
int n,m,cnt,o,i,j,k,x,id[N][N][N];long long f[2][M][2][4];char a[N];
struct P{int a,b,c;P(){}P(int _a,int _b,int _c){a=_a,b=_b,c=_c;}}q[M];
int main(){
scanf("%d%d",&n,&m);
for(i=0;i<=m;i++)for(j=i?i+1:0;j<=m;j++)for(k=j?j+1:0;k<=m;k++)q[cnt++]=P(i,j,k);
for(i=0;i<cnt;i++){
id[q[i].a][q[i].b][q[i].c]=i;
id[q[i].a][q[i].c][q[i].b]=i;
id[q[i].b][q[i].a][q[i].c]=i;
id[q[i].b][q[i].c][q[i].a]=i;
id[q[i].c][q[i].a][q[i].b]=i;
id[q[i].c][q[i].b][q[i].a]=i;
}
for(f[0][0][0][0]=i=1;i<=n;i++){
for(k=0;k<cnt;k++)for(x=0;x<4;x++)f[o][k][1][x]=0;
scanf("%s",a+1);
for(j=1;j<=m;j++){
o^=1;
for(k=0;k<cnt;k++)for(x=0;x<4;x++)f[o][k][0][x]=f[o][k][1][x]=0;
for(k=0;k<cnt;k++)for(x=0;x<4;x++){
if(f[o^1][k][0][x]){
if(a[j]=='.'){
f[o][k][0][x]+=f[o^1][k][0][x];
if(q[k].a==j)f[o][id[0][q[k].b][q[k].c]][1][x]+=f[o^1][k][0][x];
else if(q[k].b==j)f[o][id[q[k].a][0][q[k].c]][1][x]+=f[o^1][k][0][x];
else if(q[k].c==j)f[o][id[q[k].a][q[k].b][0]][1][x]+=f[o^1][k][0][x];
else if(x<3)f[o][id[j][q[k].b][q[k].c]][0][x+1]+=f[o^1][k][0][x];
}else if(q[k].a!=j&&q[k].b!=j&&q[k].c!=j)f[o][k][0][x]+=f[o^1][k][0][x];
}
if(f[o^1][k][1][x]&&a[j]=='.'){
if(q[k].a==j||q[k].b==j||q[k].c==j)continue;
f[o][k][0][x]+=f[o^1][k][1][x];
f[o][k][1][x]+=f[o^1][k][1][x];
}
}
}
}
return printf("%lld",f[o][0][0][3]),0;
}
BZOJ3934 : [CQOI2015]标识设计的更多相关文章
- [CQOI2015]标识设计
Luogu3170 128MB过不去 LOJ2099 256MB能卡过 BZOJ3934 512MB怎么都过的去 求在\(30*30\)的方格上放\(3\)个\(L\)的方案 , 有障碍 拓展这条路的 ...
- Luogu P3170 [CQOI2015]标识设计 状态压缩,轮廓线,插头DP,动态规划
看到题目显然是插头\(dp\),但是\(n\)和\(m\)的范围似乎不是很小.我们先不考虑复杂度设一下状态试试: 一共有三个连通分量,我们按照\(1,2,3\)的顺序来表示一下.轮廓线上\(0\)代表 ...
- [暑假的bzoj刷水记录]
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊 堆一起算了 隔一段更新一下. 7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ 3931: [CQOI2015]网络吞吐量
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1555 Solved: 637[Submit][Stat ...
- BZOJ 3930: [CQOI2015]选数 递推
3930: [CQOI2015]选数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...
- bzoj3931: [CQOI2015]网络吞吐量
将最短路图找出来,跑maxflow即可.有注意到数据范围.然后输出的时候%dWA了三次QAQ... #include<cstdio> #include<cstring> #in ...
- BZOJ 3931: [CQOI2015]网络吞吐量 最大流
3931: [CQOI2015]网络吞吐量 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- BZOJ 3931: [CQOI2015]网络吞吐量( 最短路 + 最大流 )
最短路 + 最大流 , 没什么好说的... 因为long long WA 了两次.... ------------------------------------------------------- ...
随机推荐
- ios中通过调试来使用私有api
转自:http://blog.csdn.net/cubepeng/article/details/11284173 OS不允许使用ios私有api,使用私有api可以获得意想不到的效果 ,同时使用私有 ...
- JDBC之SqlHelper
SqlHelper工具类如下: import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.Resul ...
- NYOJ之括号配对问题
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N&l ...
- Page Object Model (Selenium, Python)
时间 2015-06-15 00:11:56 Qxf2 blog 原文 http://qxf2.com/blog/page-object-model-selenium-python/ 主题 Sel ...
- APP测试流程(个人整理)
- EF – 7.一对多关联
5.6.8 <一对多关联(上)> 5.6.9 <一对多关联(下)> 一对多的关联,可以说是整个数据库应用程序中最常见的一种关联类型了,因此,必须高度重视这种关联类型CRUD的实 ...
- Kl 证明 凸函数
回到随机变量传输问题,假设传输中我们不知道具体 分布情况(unknown),我们用一个已知的分布 ,来模拟它,那么在这种情况下如果我们利用 尽可能高效的编码,那么我们平均需要多少额外的信息量来描述x呢 ...
- 重温WCF之消息契约(MessageContract)(六)
对于SOAP来说主要由两部分构成Header和Body,他们两个共同构成了SOAP的信封,通常来说Body保存具体的数据内容,Header保存一些上下文信息或关键信息.比如:在一些情况下,具有这样的要 ...
- WPF QuickStart系列
接触WPF有一段时间了,现在做的项目也是WPF相关的.所以决定写一个WPF QuickStart系列的文章.也是自己对WPF学习的总结,如果对你有帮助,就非常棒了.因为不善言辞,所以尽量以WPF示例和 ...
- hdu 4273 2012长春赛区网络赛 三维凸包中心到最近面距离 ***
新模板 /* HDU 4273 Rescue 给一个三维凸包,求重心到表面的最短距离 模板题:三维凸包+多边形重心+点面距离 */ #include<stdio.h> #include&l ...