hdu 4539(状压dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539
思路:跟poj1185简直就是如出一辙!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int row[];
int dp[][][];
int s[<<];
int num[<<];
int n,m,state,ans,x; int Get_Num(int x)
{
int cnt=;
while(x>){
cnt++;
x=x&(x-);
}
return cnt;
} int main()
{
while(~scanf("%d%d",&n,&m)){
memset(row,,sizeof(row));
memset(dp,,sizeof(dp));
for(int i=;i<n;i++){
for(int j=;j<m;j++){
scanf("%d",&x);
if(!x)row[i]=(row[i]<<)|;
else row[i]<<=;
}
}
state=;
for(int i=;i<(<<m);i++){
if(i&(i<<))continue;
s[state]=i;
num[state++]=Get_Num(i);
}
for(int i=;i<state;i++){
if(s[i]&row[])continue;
dp[][i][]=num[i];
}
for(int i=;i<n;i++){
for(int j=;j<state;j++){
if(s[j]&row[i])continue;
for(int k=;k<state;k++){ //i-1行信息
if((s[j]&(s[k]>>))||(s[j]&(s[k]<<)))continue;//曼哈顿距离为2冲突
for(int l=;l<state;l++){ //i-2行信息
if(s[j]&s[l])continue;
if((s[k]&(s[l]>>))||(s[k]&(s[l]<<)))continue;//曼哈顿距离为2冲突
dp[i][j][k]=max(dp[i][j][k],dp[i-][k][l]+num[j]);
}
}
}
}
ans=;
for(int i=;i<state;i++){
for(int j=;j<state;j++){
ans=max(ans,dp[n-][i][j]);
}
}
printf("%d\n",ans);
}
return ;
}
hdu 4539(状压dp)的更多相关文章
- HDU 4778 状压DP
一看就是状压,由于是类似博弈的游戏.游戏里的两人都是绝对聪明,那么先手的选择是能够确定最终局面的. 实际上是枚举最终局面情况,0代表是被Bob拿走的,1为Alice拿走的,当时Alice拿走且满足变换 ...
- HDU 3001 状压DP
有道状压题用了搜索被队友骂还能不能好好训练了,, hdu 3001 经典的状压dp 大概题意..有n个城市 m个道路 成了一个有向图.n<=10: 然后这个人想去旅行.有个超人开始可以把他扔到 ...
- hdu 2809(状压dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2809 思路:简单的状压dp,看代码会更明白. #include<iostream> #in ...
- hdu 2167(状压dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2167 思路:经典的状压dp题,前后,上下,对角8个位置不能取,状态压缩枚举即可所有情况,递推关系是为d ...
- Engineer Assignment HDU - 6006 状压dp
http://acm.split.hdu.edu.cn/showproblem.php?pid=6006 比赛的时候写了一个暴力,存暴力,过了,还46ms 那个暴力的思路是,预处理can[i][j]表 ...
- hdu 3254 (状压DP) Corn Fields
poj 3254 n乘m的矩阵,1表示这块区域可以放牛,0,表示不能,而且不能在相邻的(包括上下相邻)两个区域放牛,问有多少种放牛的方法,全部不放也是一种方法. 对于每块可以放牛的区域,有放或者不放两 ...
- HDU 5823 (状压dp)
Problem color II 题目大意 定义一个无向图的价值为给每个节点染色使得每条边连接的两个节点颜色不同的最少颜色数. 对于给定的一张由n个点组成的无向图,求该图的2^n-1张非空子图的价值. ...
- hdu 4739 状压DP
这里有状态压缩DP的好博文 题目:题目比较神,自己看题目吧 分析: 大概有两种思路: 1.dfs,判断正方形的话可以通过枚举对角线,大概每次减少4个三角形,加上一些小剪枝的话可以过. 2.状压DP,先 ...
- Travel(HDU 4284状压dp)
题意:给n个城市m条路的网图,pp在城市1有一定的钱,想游览这n个城市(包括1),到达一个城市要一定的花费,可以在城市工作赚钱,但前提有工作证(得到有一定的花费),没工作证不能在该城市工作,但可以走, ...
随机推荐
- 【leetcode】Reorder List (python)
问题的思路是这样: 循环取头部合并,事实上也能够换个角度来看,就是将后面的链表结点,一次隔空插入到第一部分的链表中. class Solution: # @param head, a ListNode ...
- Node.js开发入门—HelloWorld再分析
在Node.js开发入门(1)我们用http模块实现了一个简单的HelloWorld站点,这次我们再来细致分析下代码.了解很多其它的细节. 先看看http版本号的HelloWorld代码: 代码就是这 ...
- 英文版windows乱码问题(win7/8/10)
- 要练习的lambda
取list的id 放入新List<Integer> List<Integer> list1 = list.stream().map(albumGroup1 -> albu ...
- unity, break prefab instance
菜单->GameObject->Break Prefab Instance,可以打断prefab实例与prefab的连接. 一个用处是:比如想从sceneA拷贝一部分Hierarchy结构 ...
- 에러 처리 HandleErrorAttribute
ExceptionInfo info = new ExceptionInfo(); info.Success = false; info.Message = filterContext.Excepti ...
- C#调用自己定义表类型參数
-SQL SERVER生成測试环境: --创建測试DB CREATE database Sales; go USE Sales GO --创建表类型 IF TYPE_ID('LocalDT') IS ...
- tensorflow之损失函数
#coding:utf-8 __author__ = 'similarface' import tensorflow as tf sess=tf.Session() #max(features, 0) ...
- html-文本处理
文本处理-相关操作: <!-- 申明为html5版本 --> <!DOCTYPE html> <html> <head> <title>文本 ...
- JS面试题目
哪些地方会出现css阻塞,哪些地方会出现js阻塞? js的阻塞特性: 所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等.直到JS下载.解析.执行完毕后才开始继续并行下 ...