BZOJ1187 [HNOI2007]神奇游乐园(插头dp)
麻麻我会写插头dp了!
推荐陈丹琦论文:https://wenku.baidu.com/view/3e90d32b453610661ed9f4bd.html
破题调一年
#include <cstdio>
#include <cstring> const int N=<<;
int n,m,tt,a1=0xcfcfcfcf,st[],a[][],b[N],g[N][],f[][][N];
void up(int &x,int y) {if(x<y) x=y;}
void dfs(int x,int s,int k) {
if(x==m+) {
if(!k) {
for(int i=,tp=;i<m;i++) {
int t=(s>>(i*))&;
if(t==) st[++tp]=i;
else if(t==) g[s][i]=st[tp],g[s][st[tp]]=i,tp--;
}
b[++tt]=s;
} return;
}
dfs(x+,s<<,k),dfs(x+,s<<|,k+);
if(k) dfs(x+,s<<|,k-);
} int main() {
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) for(int j=;j<=m;j++) scanf("%d",&a[i][j]);
memset(f,0xcf,sizeof f),f[][][]=,f[][][(<<(m*))|(*(<<(m-)*))]=a[][],dfs(,,);
for(int i=;i<=n;i++) {
for(int j=;j<m;j++) {
for(int k=;k<=tt;k++) if(f[i][j][b[k]]!=0xcfcfcfcf) {
int t1=(b[k]>>((m-j)*))&,t2=(b[k]>>((m-j-)*))&,t3=<<((m-j)*),t4=<<((m-j-)*);
int s=b[k]&((<<((m+)*))--t3*-t4*),t=f[i][j][b[k]]+a[i][j+];
if(!t1&&!t2) up(f[i][j+][s],t-a[i][j+]),up(f[i][j+][s|t3|(t4*)],t);
else if(!t1) up(f[i][j+][s|(t3*t2)],t),up(f[i][j+][s|(t4*t2)],t);
else if(!t2) up(f[i][j+][s|(t3*t1)],t),up(f[i][j+][s|(t4*t1)],t);
else if(t1==&&t2==) up(f[i][j+][s-(<<(g[b[k]][m-j-]*))],t);
else if(t1==&&t2==) {
if(b[k]==t3+t4*&&a1<t) a1=t;
} else if(t1==&&t2==) up(f[i][j+][s],t);
else up(f[i][j+][s+(<<(g[b[k]][m-j]*))],t);
}
}
for(int k=;k<=tt;k++) if(f[i][m][b[k]]!=0xcfcfcfcf) {
int t1=(b[k]>>(m*))&,t3=<<(m*),t4=<<((m-)*),s=(b[k]&((<<(m*))-))>>,t=f[i][m][b[k]]+a[i+][];
if(!t1) up(f[i+][][s],t-a[i+][]),up(f[i+][][s|t3|(t4*)],t);
else up(f[i+][][s|(t3*t1)],t),up(f[i+][][s|(t4*t1)],t);
}
}
printf("%d",a1);
return ;
}
BZOJ1187 [HNOI2007]神奇游乐园(插头dp)的更多相关文章
- 【BZOJ1187】[HNOI2007]神奇游乐园 插头DP
[BZOJ1187][HNOI2007]神奇游乐园 Description 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细 ...
- bzoj 1187: [HNOI2007]神奇游乐园 插头dp
1187: [HNOI2007]神奇游乐园 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 668 Solved: 337[Submit][Statu ...
- [bzoj1187][HNOI2007]神奇游乐园_插头dp
bzoj-1187 HNOI-2007 神奇游乐园 题目大意:经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这 ...
- [HNOI2007][bzoj1187] 神奇游乐园 [插头dp]
题面: 传送门 给定一个四联通棋盘图,每个格子有权值,求一条总权值最大的回路 思路: 插头dp基础教程 棋盘? 回路? n,m<=10? 当然是插头dp啦~\(≧▽≦)/~ 然后发现这道题并不是 ...
- [bzoj1187][HNOI2007]神奇游乐园
来自FallDream的博客,未经允许,请勿转载,谢谢, 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这是一 ...
- 洛谷 P3190 [HNOI2007]神奇游乐园 解题报告
P3190 [HNOI2007]神奇游乐园 Description 给你一个 \(m * n\) 的矩阵,每个矩阵内有个权值\(V(i,j)\) (可能为负数),要求找一条回路,使得每个点最多经过一次 ...
- [HNOI2007]神奇游乐园(插头DP)
题意:n*m的矩阵内值有正有负,找一个四连通的简单环(长度>=4),使得环上值的和最大. 题解:看到2<=m<=6和简单环,很容易想到插头DP,设f[i][j][k]表示轮廓线为第i ...
- 洛谷P3190 [HNOI2007]神奇游乐园(插头dp)
传送门 大概是算第一道自己做出来的插头dp? (虽然都是照着抄板子的) (虽然有个地方死活没调出来最后只能看题解才发现自己错在哪里的) 我就当你们都会插头dp了…… 因为必须得是一条路径,所以扫描线上 ...
- 【bzoj1187】 HNOI2007—神奇游乐园
http://www.lydsy.com/JudgeOnline/problem.php?id=1187 (题目链接) 题意 一个$n*m$的矩阵,其中每一个位置有一个权值,求一条回路使得经过的位置的 ...
随机推荐
- HTTP协议以及HTTP2.0/1.1/1.0区别
HTTP协议以及HTTP2.0/1.1/1.0区别 一.简介 摘自百度百科: 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所 ...
- 【深度学习】深入理解Batch Normalization批标准化
这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...
- clang++ 链接问题 和 VS Code
clang++ 链接问题 和 VS Code 如果你在windows上使用clang 并且同时安装有vs和mingw, clang链接是会自动使用msvs, 链接时会有LINK error LINK ...
- Spring邮件发送2
前言:上一篇博文讲解了邮件发送的基础用法(数据是写死的),然而在实际开发中,大多数情况下邮件内容都是根据业务来动态生成的.所以在此篇博文中,我们将讲解邮件发送携带数据的几种方案. 一.解析自定义占位符 ...
- python3+beautifulSoup4.6抓取某网站小说(四)多线程抓取
上一篇多文章,是二级目录,根目录"小说",二级目录"作品名称",之后就是小说文件. 本篇改造了部分代码,将目录设置为根目录->作者目录->作品目录- ...
- C语言学习(二)
今天在程序员面试题中,碰到一个有意思的题目:数组a[N],存放了1至N-1个数,其中某个数重复一次,现在要求找出重复的数字且程序时间复杂度必须为O(N).乍一看,如果不计时间复杂度和空间复杂度程序比较 ...
- restful架构风格设计准则(四)资源表示和资源访问
读书笔记,原文链接:http://www.cnblogs.com/loveis715/p/4669091.html,感谢作者! 一.资源表示 1.资源表示:使用 单数 vs. 复数 如果一个URL所对 ...
- Linux下的Shell编程(2)环境变量和局部变量
Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型. 局部变量在本地数据区分配内存进行存储,这个变量归当前的Shell所有,任何子进 程都不能访问本地变量.这些变量与环境变量不 ...
- python入门(12)dict
python入门(12)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例 ...
- Linux命令(持续更新中)
命令名 用法 安装上传下载 yum install lrzsz rz上传文件,sz下载文件 压缩 解压文件 tar -zxvf 文件名 压缩文件 tar -zcvf 文件名 删除非空目录: rm ...