麻麻我会写插头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)的更多相关文章

  1. 【BZOJ1187】[HNOI2007]神奇游乐园 插头DP

    [BZOJ1187][HNOI2007]神奇游乐园 Description 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细 ...

  2. bzoj 1187: [HNOI2007]神奇游乐园 插头dp

    1187: [HNOI2007]神奇游乐园 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 668  Solved: 337[Submit][Statu ...

  3. [bzoj1187][HNOI2007]神奇游乐园_插头dp

    bzoj-1187 HNOI-2007 神奇游乐园 题目大意:经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这 ...

  4. [HNOI2007][bzoj1187] 神奇游乐园 [插头dp]

    题面: 传送门 给定一个四联通棋盘图,每个格子有权值,求一条总权值最大的回路 思路: 插头dp基础教程 棋盘? 回路? n,m<=10? 当然是插头dp啦~\(≧▽≦)/~ 然后发现这道题并不是 ...

  5. [bzoj1187][HNOI2007]神奇游乐园

    来自FallDream的博客,未经允许,请勿转载,谢谢, 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这是一 ...

  6. 洛谷 P3190 [HNOI2007]神奇游乐园 解题报告

    P3190 [HNOI2007]神奇游乐园 Description 给你一个 \(m * n\) 的矩阵,每个矩阵内有个权值\(V(i,j)\) (可能为负数),要求找一条回路,使得每个点最多经过一次 ...

  7. [HNOI2007]神奇游乐园(插头DP)

    题意:n*m的矩阵内值有正有负,找一个四连通的简单环(长度>=4),使得环上值的和最大. 题解:看到2<=m<=6和简单环,很容易想到插头DP,设f[i][j][k]表示轮廓线为第i ...

  8. 洛谷P3190 [HNOI2007]神奇游乐园(插头dp)

    传送门 大概是算第一道自己做出来的插头dp? (虽然都是照着抄板子的) (虽然有个地方死活没调出来最后只能看题解才发现自己错在哪里的) 我就当你们都会插头dp了…… 因为必须得是一条路径,所以扫描线上 ...

  9. 【bzoj1187】 HNOI2007—神奇游乐园

    http://www.lydsy.com/JudgeOnline/problem.php?id=1187 (题目链接) 题意 一个$n*m$的矩阵,其中每一个位置有一个权值,求一条回路使得经过的位置的 ...

随机推荐

  1. android context获取目录详解

    获取 sqlite系统数据库路径 方式1: ApkInfo apkInfo = new ResourceUtil(context).getApkInfo(); APP_PATH = new Strin ...

  2. 在arc模式下 CGImage 释放问题

    //大图bigImage //定义myImageRect,截图的区域 if (imagecount >= 3) { CGRect myImageRect; if (i.size.width< ...

  3. JAVA_SE基础——1.JDK&JRE下载及安装

    这是我学了JAVA来写的第一篇博客: 我首先是在传智播客领了张.毕向东老师的免费JAVA学习光盘来学习! 下面我来教大家安装使用JAVA时候必备的JDK 1.首先上甲骨文公司的官方网站下载JDK的安装 ...

  4. Mysql数据库mys和ora库的备份与恢复脚本

    !/bin/bash Time=$(date +%Y%md%H%M%S) Back_dir="$HOME/mysqlback/${Time}" function Detect_u_ ...

  5. api-gateway实践(07)新服务网关 - 手动发布

    应用地址:http://10.110.20.191:8080/api-gateway-engine/ 一.准备工作 1.xshell登陆云主机 1.1.配置链接 1.2.链接成功 1.3.关闭防火墙 ...

  6. BlueMix - IBM的Paas云计算平台

    Bluemix,2015年年中,IBM推出了名为Bluemix的云计算平台.这一"平台即服务"的PaaS云将帮助开发者更快的进行应用开发和部署.   Bluemix正是IBM回应这 ...

  7. js jquery 获取元素(父节点,子节点,兄弟节点),元素筛选

    转载:https://www.cnblogs.com/ooo0/p/6278102.html js jquery 获取元素(父节点,子节点,兄弟节点) 一,js 获取元素(父节点,子节点,兄弟节点) ...

  8. vue组件详解(五)——组件高级用法

    一.递归组件 组件在它的模板内可以递归地调用自己, 只要给组件设置name 的选项就可以了. 示例如下: <div id="app19"> <my-compone ...

  9. HTNL表单详解

    HTML表单 表单的结构 表单的标签:<form> </form> 常用属性 Name , method(get,post), action(服务器的接收的页面如:reg.ph ...

  10. else语句的搭配

    1.else语句搭配if 要么怎样,要么怎样 2.else语句搭配for和while 干完循环之后执行else,干不完或者break就不执行 3.else与异常处理 没有问题的话就执行else吧