题意:n*m的矩阵内值有正有负,找一个四连通的简单环(长度>=4),使得环上值的和最大。

题解:看到2<=m<=6和简单环,很容易想到插头DP,设f[i][j][k]表示轮廓线为第i行第j列,插头状态为k的最大满意度。然后又成了一道插头DP的板子题。注意左插头为左括号,上插头为右括号,其余位置无插头,因为题目不要求走遍所有格子,且只能走一条回路。

#include<bits/stdc++.h>
using namespace std;
const int N=,mod=;
int n,m,ans,p,bin[],w[][],a[][N],f[][N],tot[N],hd[N],nxt[N];
void add(int S,int v)
{
int u=S%mod;
for(int i=hd[u];i;i=nxt[i])if(a[p][i]==S){f[p][i]=max(f[p][i],v);return;}
a[p][++tot[p]]=S,nxt[tot[p]]=hd[u],hd[u]=tot[p],f[p][tot[p]]=v;
}
int main()
{
scanf("%d%d",&n,&m);
ans=-1e9;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&w[i][j]);
bin[]=;for(int i=;i<=;i++)bin[i]=bin[i-]<<;
tot[p]=;
for(int i=;i<=n;i++)
{
for(int j=;j<=tot[p];j++)a[p][j]<<=;
for(int j=;j<=m;j++)
{
p^=;
memset(hd,,sizeof hd);
tot[p]=;
for(int k=;k<=tot[p^];k++)
{
int S=a[p^][k],b1=(S>>j*-)%,b2=(S>>j*)%,val=f[p^][k];
if(!b1&&!b2)
{
if(i<n&&j<m)add(S+bin[j-]+*bin[j],val+w[i][j]);
add(S,val);
}
else if(!b1&&b2)
{
if(j<m)add(S,val+w[i][j]);
if(i<n)add(S-b2*bin[j]+b2*bin[j-],val+w[i][j]);
}
else if(b1&&!b2)
{
if(j<m)add(S-b1*bin[j-]+b1*bin[j],val+w[i][j]);
if(i<n)add(S,val+w[i][j]);
}
else if(b1==&&b2==)
{
int k1=;
for(int t=j+;t<=m;++t)
{
if((S>>t*)%==)k1++;
if((S>>t*)%==)k1--;
if(!k1){add(S-bin[j-]-bin[j]-bin[t],val+w[i][j]);break;}
}
}
else if(b1==&&b2==)
{
int k1=;
for(int t=j-;t>=;--t)
{
if((S>>t*)%==)k1--;
if((S>>t*)%==)k1++;
if(!k1){add(S-*bin[j-]-*bin[j]+bin[t],val+w[i][j]);break;}
}
}
else if(b1==&&b2==)add(S-*bin[j-]-bin[j],val+w[i][j]);
else if(S-bin[j-]-*bin[j]==)ans=max(ans,val+w[i][j]);
}
}
}
printf("%d",ans);
}

最新文章

  1. AngularJS过滤器filter-保留小数,小数点-$filter
  2. SQL Server数据库转换成oracle
  3. 一个很奇怪的重复链接lib的问题
  4. javascript在调试bug的奇淫技巧(Chrome, Firebug, Filddle 调试)
  5. Castle IOC容器内幕故事(下)
  6. &lt;摘录&gt;详谈高性能UDP服务器的开发
  7. 本人第一个android游戏《新连连看》上架
  8. DataUml Design 课程6-DataUML Design 1.1版本号正式宣布(支持PD数据模型)
  9. HDU------checksum
  10. opnet点对点通信模型 分类: opnet 2014-05-26 22:15 246人阅读 评论(3) 收藏
  11. Oracle12c中性能优化&amp;amp;功能增强新特性之临时undo
  12. HTML5 CSS3专题 纯CSS打造相册效果
  13. LVM备份(2)-创建LVM逻辑卷
  14. vue页面传参和接参
  15. css中px,em,rem,rpx的区别
  16. re、词云
  17. Windows 2008 R2防火墙设置运行被ping通
  18. Eclipse报This version of the rendering library is more recent than your version of ADT ...
  19. python接口测试中安装whl格式的requests第三方模块
  20. gcc5.2版本安装详解

热门文章

  1. vue+element-ui实现行数可控的表格输入
  2. HTML5 新增的 input 事件
  3. 解决Angular2 (SystemJS) XHR error (404 Not Found) loading traceur
  4. 从0开始的Python学习017Python标准库
  5. 野指针与&#39;关键字&#39;NULL
  6. Linux新手随手笔记1.2
  7. 如何在本地编译Fabric Code
  8. QPushButton class
  9. elementUi、iview、ant Design源码button结构篇
  10. 随心测试_软测基础_004&lt;测试人员工作职责&gt;