博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
caioj1421&&hdu2167: [视频]【状态压缩】选数
阅读量:5119 次
发布时间:2019-06-13

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

这道题的状态压缩简直匪夷所思(其实是我孤陋寡闻,而且我以前的博客竟然写了这题。。水啊)

嗯这题可以发现,我们可以用一个二进制表示一行的状态,1表示选0反之,可以发现行与行之间可选的范围是确定的,比如说:

100
这样的状态适用于每一行,推广一下:
100
001
是适用于任何两行之间的。所以我们可以先将所有成立的状态求出来,要求就是左移一位和右移一位和原状态&运算为0,这样保证每个1左右都没有1。然后枚举行、状态,可以继承的状态,继承可以继承的状态的最大值,然后加上这一行的得到的值即可。

#include
#include
#include
using namespace std;int n,mp[20][20];int ol,o[41000],f[20][41000];bool bj(int x,int y){ return ((x&y)==0)?true:false;}int hehe(int k,int x){ int tp=0,ans=0; while(x!=0) { tp++; if(x%2==1)ans+=mp[k][tp]; x/=2;if(tp==n)break; } return ans;}int main(){ scanf("%d",&n); int t=1;for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) scanf("%d",&mp[i][j]); t=t*2; } o[++ol]=0;f[1][0]=0; for(int i=1;i
ans)ans=f[n][o[i]]; printf("%d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/7612866.html

你可能感兴趣的文章
rsync排除多个文件实现同步
查看>>
【Linux】- ps -ef |grep 命令
查看>>
bzoj 1584 Cleaning Up 打扫卫生 dp
查看>>
Python_shelve模块
查看>>
from __future__ import print_function的使用
查看>>
两台电脑直接共享文件
查看>>
[bzoj4827][Hnoi2017]礼物_FFT
查看>>
[bzoj1926][Sdoi2010]粟粟的书架_二分_主席树
查看>>
[bzoj4154][Ipsc2015]Generating Synergy_KD-Tree_dfs序
查看>>
[poj2425]A Chess Game_博弈论
查看>>
雅礼集训2019 day5
查看>>
去除一段文字最后一个符号
查看>>
支持向量机
查看>>
Hadoop之HDFS原理及文件上传下载源码分析(下)
查看>>
glusterfs分布式文件系统
查看>>
[Swift]学习笔记-可选类型/可选链
查看>>
正态分布的前世今生
查看>>
使用yum高速部署Oracle安装环境(11g)
查看>>
HTML在Select具体的使用说明
查看>>
周期串 字符串的最小正周期
查看>>