HDU4539+状态压缩DP
/*
题意:n行m列的矩阵,1表示可以放东西,0表示不可以。曼哈顿距离为2的两个位置最多只能有一个位置放东西。
问最多放多少个东西。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<stack>
#include<math.h>
#include<map>
using namespace std;
const int maxn = ;
const int maxm = ;
const int N = ;
int mat[ maxn ];
int dp[ maxn ][ N ][ N ];
int state[ N ];
int ones_state[ N ];
int Count_ones( int x ){
int cnt = ;
while( x ){
if( x& )
cnt++;
x>>=;
}
return cnt;
}
int init( int n,int m ){
memset( state,,sizeof( state ) );
memset( ones_state,,sizeof( state ) );
int M = <<m;
int cnt = ;
for( int i=;i<M;i++ ){
if( (i&(i<<))==&&(i&(i>>))== ){
state[ cnt ] = i;
ones_state[ cnt ] = Count_ones( i );
cnt++;
}
}
//printf("cnt=%d\n",cnt);最多169种状态!!
return cnt;
}
void DP( int cnt,int n,int m ){
memset( dp,-,sizeof( dp ) );
for( int i=;i<cnt;i++ ){
if( (state[i]&mat[])== )
dp[][i][] = ones_state[ i ];
}//初始化
for( int i=;i<n;i++ ){
for( int j=;j<cnt;j++ ){
if( (state[j]&mat[i])== ){
for( int k=;k<cnt;k++ ){
if( (state[j]&(state[k]<<))==&&(state[j]&(state[k]>>))== ){
for( int k2=;k2<cnt;k2++ ){
if( dp[i-][k][k2]==- ) continue;
if( (state[j]&state[k2])==&&(state[k]&(state[k2]>>))==&&(state[k]&(state[k2]<<))== )
dp[ i ][ j ][ k ] = max( dp[i][j][k],dp[i-][k][k2]+ones_state[j] );
}
}
}
}
}
}
}
int main(){
int n,m;
while( scanf("%d%d",&n,&m)== ){
int cnt = init( n,m );
memset( mat,,sizeof( mat ) );
int tmp;
for( int i=;i<n;i++ ){
for( int j=;j<m;j++ ){
scanf("%d",&tmp);
if( tmp== ){
mat[ i ] |= (<<j);
}
}
}
DP( cnt,n,m );
int ans = ;
for( int i=;i<cnt;i++ )
for( int j=;j<cnt;j++ )
ans = max( ans,dp[n-][i][j]);
printf("%d\n",ans);
}
return ;
}
HDU4539+状态压缩DP的更多相关文章
- hoj2662 状态压缩dp
Pieces Assignment My Tags (Edit) Source : zhouguyue Time limit : 1 sec Memory limit : 64 M S ...
- POJ 3254 Corn Fields(状态压缩DP)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4739 Accepted: 2506 Descr ...
- [知识点]状态压缩DP
// 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...
- HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP
题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...
- DP大作战—状态压缩dp
题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...
- 状态压缩dp问题
问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...
- BZOJ-1226 学校食堂Dining 状态压缩DP
1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...
- Marriage Ceremonies(状态压缩dp)
Marriage Ceremonies Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
- HDU 1074 (状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...
随机推荐
- php 中cookie和session的用法比较
1.cookie数据存放在客户的浏览器上,session数据放在服务器上. 2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session. ...
- spring mvc 拦截器
拦截器作用:可以用于用户操作的安全检查,如:登录.权限等 package com.tool; import java.util.List; import javax.servlet.http.Http ...
- Mysql 的安装与配置
MySQL的安装 第1步:下载 第2 步:以管理员身份进行安装 第3步:选择安装类型. 第4步:设置MySQL安装目录,及数据库文件目录 第5步:安装结束,开启配置向导 第6步:选择配置类型 第7步: ...
- undrop for innodb c_parser 不完美之处
今天发现c_parser导出数据是会丢掉某些行,给过调试发现是他处理utf8编码时计算有误,目前还没有发现自动解决总是的方法,只会手动改代码来解决. 下一步计划把c_parser移植到windows下 ...
- LibCurl笔记四
1,curl设置fiddler代理curl_easy_setopt(m_easyHandle, CURLOPT_PROXY, "127.0.0.1:8888"); 2,
- swfupload使用说明
网上的例子介绍的文档真的很多.下面简单介绍一下 SWFUpload的文件上传流程是这样的: 1.引入相应的js文件 2.实例化SWFUpload对象,传入一个配置参数对象进行各方面的配置. 3.点击S ...
- 小米2s换了屏幕后不能近距离对焦,拆过后无法对焦?
主要问题就是小米2/2S手机中壳套后摄像头的位置,里面还有一个正方形的黑色塑胶垫片,一般拆机后这个垫片是不会掉出来的,所以一般上盖时也是直接把中壳合上后上螺丝. 这样安装基本会导致塑胶垫片把摄像头顶住 ...
- python学习之html从0开始(一)
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- 前端encodeURIComponent 和后端http_build_query配合
解决特殊字符不能转义 1. function fixedEncodeURIComponent (str) { return encodeURIComponent(str).replace(/[!' ...
- 跟着PHP100第一季学写一个CMS(1-10)
笔记: 这次用的方法是先跟着视频做一遍,隔一天或半天后独立再做一遍,能发现真正不会的地方记录下来. CMS0.1界面布局1.问题:分两个css来实现时basic.css+index.php出现定位不正 ...