博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
阅读量:5247 次
发布时间:2019-06-14

本文共 807 字,大约阅读时间需要 2 分钟。

这题用直接枚举是超时的,必须要用搜索来搜索出所有可能的状态,然后再进行枚举

这是较慢的做法

/*方格取数,相邻格子的数不可取,问最多取到的和是什么 有点类似炮兵布阵,先打出所有可能的状态,然后dp[i][j]表示前i行在状态v[j]下的最大和 dp[i][j]由dp[i-1][t]推出,v[t]是和v[j]兼容的状态 */#include
using namespace std;int mp[25][25],n,dp[21][200000];int v[200000],tot;vector
sum[25];//sum[i][j]表示第i行在状态v[j]下的和 inline int legal(int j){ if( j&(j<<1) )return false; return true;}inline int cal(int s,int k){
//状态s对应的数值 int res=0; for(int i=1;i<=n;i++) if( s&(1<<(i-1)) )res+=mp[k][n-i+1]; return res;}void init(){ tot=0; for(int j=0;j<=(1<
>n){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)cin>>mp[i][j]; init(); memset(dp,0,sizeof dp); for(int i=0;i

 

转载于:https://www.cnblogs.com/zsben991126/p/10361813.html

你可能感兴趣的文章
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
【欧拉函数模板题】最大公约数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
织梦仿站第三课:网站的文件分割
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
用sql删除数据库重复的数据的方法
查看>>
输出n阶“魔方阵”
查看>>
学习笔记21—PS换图片背景
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
Spring3.0 AOP 具体解释
查看>>
我的Hook学习笔记
查看>>
EasyUI DataGrid 中字段 formatter 格式化不起作用
查看>>
海量数据存储
查看>>
js中的try/catch
查看>>