HDU1565 方格取数 &&uva 11270 轮廓线DP
方格取数(1)
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8851 Accepted Submission(s): 3386
从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。
75 15 21
75 15 28
34 70 5
#include<bits/stdc++.h>
using namespace std;
int ans;
int dp[][(<<)+];
bool judge(int a,int b){return (a&(<<b));}
int clr(int a,int b){ if(judge(a,b)){return (a^(<<b));}
else return a;}
void update(int cur,int now,int pre,int num)
{
dp[cur][now]=max(dp[cur][now],dp[-cur][pre]+num); //我为人人
}
int main()
{
int e[][],i,j,k,s,t,n;
while(cin>>n){int cur=;
for(i=;i<n;++i)
for(j=;j<n;++j)
cin>>e[i][j];
memset(dp,,sizeof(dp));
for(i=;i<n;++i){
for(j=;j<n;++j){
cur^=;memset(dp[cur],,sizeof(dp[cur]));
for(k=;k<(<<n);++k){
update(cur,clr(k<<,n),k,);
if(!j){
if(!judge(k,n-)){
update(cur,clr((k<<)+,n),k,e[i][j]);
}
}
else{
if((!judge(k,))&&(!judge(k,n-))){
update(cur,clr((k<<)+,n),k,e[i][j]);
}
}
}
}
}
ans=;
for(i=;i<(<<n);++i) ans=max(ans,dp[cur][i]);
cout<<ans<<endl;
}
return;
}
题目不再赘述就是骨牌放置问题,这里采用轮廓线dp
要注意的就是横放时列数不能为1,竖放时行不能为1,md最近一直犯zz错误,cout ans数组我一直cout dp数组检查半天mb
#include<bits/stdc++.h>
using namespace std;
#define LL long long
LL dp[2][(1<<11)];
LL ans[101][101];
bool judge(int a,int b){return (a&(1<<b));}
int clr(int a,int b){return (a>>b)?(a^(1<<b)):a;}
void update(int cur,int now,int pre) { dp[cur][now]+=dp[1-cur][pre]; }
int main()
{
int i,j,k,n,m,s,t;
memset(ans,-1,sizeof(ans));
while(cin>>n>>m){int cur=0;
memset(dp,0,sizeof(dp));
if(n*m%2==1) {puts("0");continue;}
if(ans[n][m]+1) {cout<<ans[n][m]<<endl;continue;}
if(m>n) swap(m,n);
dp[cur][(1<<m)-1]=1;
for(i=1;i<=n;++i){
for(j=1;j<=m;++j){cur^=1;memset(dp[cur],0,sizeof(dp[cur]));
for(k=0;k<(1<<m);++k){
if(judge(k,m-1)) update(cur,clr((k<<1),m),k); //不放
if(i>1&&!judge(k,m-1)) update(cur,(k<<1)^1,k); //竖放
if(j>1&&(!judge(k,0))&&judge(k,m-1)) update(cur,clr((k<<1)^3,m),k); //横放
}
}
}
ans[n][m]=ans[m][n]=dp[cur][(1<<m)-1];
cout<<ans[n][m]<<endl;
}
return 0;
}
HDU1565 方格取数 &&uva 11270 轮廓线DP的更多相关文章
- HDU1565 方格取数(1) —— 状压DP or 插头DP(轮廓线更新) or 二分图点带权最大独立集(最小割最大流)
题目链接:https://vjudge.net/problem/HDU-1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Memory L ...
- HDU1565 方格取数(1)(状态压缩dp)
题目链接. 分析: 说这题是状态压缩dp,其实不是,怎么说呢,题目数据太水了,所以就过了.手动输入n=20的情况,超时.正解是网络流,不太会. A这题时有个细节错了,是dp[i][j]还是dp[i][ ...
- Hdu-1565 方格取数(1) (状态压缩dp入门题
方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 1565 - 方格取数(1) - [状压DP][网络流 - 最大点权独立集和最小点权覆盖集]
题目链接:https://cn.vjudge.net/problem/HDU-1565 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32 ...
- HDU-1565 方格取数(1)
http://acm.hdu.edu.cn/showproblem.php?pid=1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Me ...
- hdu 1565 方格取数(1) 状态压缩dp
方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- hdu 2167 方格取数 【状压dp】(经典)
<题目链接> 题目大意: 给出一些数字组成的n*n阶矩阵,这些数字都在[10,99]内,并且这个矩阵的 3<=n<=15,从这个矩阵中随机取出一些数字,在取完某个数字后,该数 ...
- UVA - 11270 轮廓线DP
其实这题还能用状压DP解决,可是时间达到2000ms只能过掉POJ2411.状压DP解法详见状压DP解POJ2411 贴上POJ2411AC代码 : 2000ms 时间复杂度h*w*(2^w)*(2^ ...
- TYVJ 1011 NOIP 2008&&NOIP 2000 传纸条&&方格取数 Label:多线程dp
做题记录:2016-08-15 15:47:07 背景 NOIP2008复赛提高组第三题 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...
随机推荐
- Git源码安装
系统自带yum安装的git版本较老,需要安装最新版本可以使用源码安装 下载最新安装包,下载地址https://github.com/git/git/releases 安装依赖包 yum install ...
- Flask wtform组件
Wtforms简介 WTForms是一个支持多个web框架的form组件 主要能够帮助我们生成html标签 对数据进行验证 安装 pip install wtforms Wtforms的使用 这里借助 ...
- python操作mysql数据库读取一个数据库的表写入另一个数据库
写这个肯定是工作需要了,不啰嗦,直接说事 我现在有两台主机,一台是公司主机,一台是客户主机,要求把公司主机上的三个表同步到客户主机上的数据库 注意是同步,首先就得考虑用linux定时任务或者主从复制, ...
- centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /dev/tty(0,6) 模拟终端 /dev/pts/# grub-md5-crypt 给grub加密码 initrd 第二节课
centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /d ...
- Spring源码解析(五)循环依赖问题
引言 循环依赖就是多个类之间互相依赖,比如A依赖B,B也依赖A,如果日常开发中我们用new的方式创建对象,这种循环依赖就会导致不断的在创建对象,导致内存溢出. Spring是怎么解决循环依赖的问题的? ...
- Executor框架与Thread
Executor将线程的创建和线程的执行解耦,比较下面两个例子: 1:TaskExecutionWebServer.java package chapter06; import java.io.IOE ...
- mydumper原理介绍
mydumper的安装:http://www.cnblogs.com/lizhi221/p/7010174.html mydumper介绍 MySQL自身的mysqldump工具支持单线程 ...
- Java游戏服务器成长之路——你好,Mongo
关于mongo的思考 第一阶段的弱联网游戏已基本完成,截至今天下午,测试也基本差不多了,前端还有一些小bug需要优化,接下来会接入小米,360,百度,腾讯等平台,然后推广一波,年前公司还能赚一笔,而我 ...
- node必知必会之node简介
1.什么是node.js 按照: Node.js官方网站主页 的说法: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript ...
- 爬虫概要及web微信请求分析
一.爬虫概要 1.网络爬虫是什么 百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常 ...