poj_1185状压dp
用二维数组写了好久,失败啊。。
#include<iostream>
#include<string.h>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
int dp[110][110][110];
char st[110][12];
int s[110],an[110],as[110];
int convert(int n)
{
int cnt=0;
while(n>0)
{
if(n%2)cnt++;
n/=2;
}
return cnt;
}
int main()
{
int cnt=0;
memset(s,0,sizeof(s));
for(int i=0;i<=(1<<10);i++)
{
if(!(i&(i<<1)))
if(!(i&(i<<2)))
{as[cnt]=i;s[cnt]=convert(i);cnt++;} }
while(cin>>n>>m)
{
int nallstatus=2<<(m-1);
memset(dp,-1,sizeof(dp));
memset(st,'\0',sizeof(st));
memset(an,0,sizeof(an));
for(int i=0; i<n; i++)
scanf("%s",st[i]);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(st[i][j]=='H')
an[i]|=(1<<j);
for(int j=0; as[j]<nallstatus; j++)
{
if(!(as[j]&an[0]))
{dp[0][0][j]=s[j];
}
}
for(int i=1;i<n;i++)
for(int j=0;as[j]<nallstatus;j++)
for(int k=0;as[k]<nallstatus;k++)
for(int l=0;as[l]<nallstatus;l++)
{
int state=1;
if(as[j]&an[i]) state=0;
if(as[j]&as[k]) state=0;
if(as[j]&as[l]) state=0;
if(as[k]&as[l]) state=0;
if(as[k]&an[i-1]) state=0;
if(as[l]&an[i-2]) state=0;
if(state)
{
dp[i][k][j]=max(dp[i][k][j],dp[i-1][l][k]+s[j]);
/*if(i==3&&as[j]==4)
{
cout<<s[k]<<s[j]<<dp[i-2][as[l]]<<dp[i][as[j]]<<endl;
cout<<as[k]<<as[l]<<endl;
}*/
}
}
/*for(int i=0;i<n;i++)
{
for(int j=0;as[j]<nallstatus;j++)
cout<<dp[i][as[j]];
cout<<endl;
}*/
/*for(int i=0;as[i]<nallstatus;i++)
cout<<dp[0][as[i]]<<as[i]<<endl;*/
int cur=0;
for(int i=0;as[i]<nallstatus;i++)
for (int j=0;as[j]<nallstatus;j++)
cur=max(cur,dp[n-1][i][j]);
cout<<cur<<endl;
}
return 0;
}
poj_1185状压dp的更多相关文章
- BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3336 Solved: 1936[Submit][ ...
- nefu1109 游戏争霸赛(状压dp)
题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...
- poj3311 TSP经典状压dp(Traveling Saleman Problem)
题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...
- [NOIP2016]愤怒的小鸟 D2 T3 状压DP
[NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...
- 【BZOJ2073】[POI2004]PRZ 状压DP
[BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...
- bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)
数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...
- HDU 1074 Doing Homework (状压dp)
题意:给你N(<=15)个作业,每个作业有最晚提交时间与需要做的时间,每次只能做一个作业,每个作业超出最晚提交时间一天扣一分 求出扣的最小分数,并输出做作业的顺序.如果有多个最小分数一样的话,则 ...
- 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP
[BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) ...
- 【BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP
[BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排 Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M< ...
随机推荐
- Java 零基础跑起第一个程序
Java 零基础跑起第一个程序 一 概述 1 java代码编译 编译后才干在计算机中执行.编译就是把人能看懂的代码转换成机器能看懂的形式 2 java的长处 一次编译.到处执行.由于java代码是在 ...
- AngularJS 下拉列表demo
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- 编译最新版webrtc源码和编译好的整个项目10多个G【分享】
编译最新版webrtc源码和编译好的整个项目10多个G[分享] 参考https://webrtc.org/native-code/development/编译最新版webrtc源码: Git clon ...
- BZOJ 2212线段树的合并
借鉴(抄)了一下题解-- 线段树合并的裸题吧- //By SiriusRen #include <cstdio> #include <cstring> #include < ...
- 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)
先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 不多说,直接上代码. 编写代码 运行 <!DOCTYPE html><html><head& ...
- vue 2.x axios 封装的get 和post方法
import axios from 'axios' import qs from 'qs' export class HttpService { Get(url, data) { return new ...
- html5中canvas(2)
1.绘制图片(drawImage)(重点) 1.1 基本绘制图片的方式 context.drawImage(img, x, y); 参数: img 可以为:图片.视频或者canvas画布 x,y 绘制 ...
- Tomcat转jboss踩的那些坑
问题背景 今天发版本,是一个httpclient的跳转(由于公司网络原因,所以对外网的访问都经过这个代理服务出去). 问题原因 之前的开发一直在window系统的tomcat服务器上进行的,对jbos ...
- MDL的一些理解
驱动程序要操作一个用户模式下的内存(32位下小于2G),那么是有风险的,因为用户模式下当前进程的线程不断切换,用户模式下的地址可能会无效.这时的操作将会有未知结果. 用MDL系统API可以将用户模式下 ...
- 基于cxf的webService服务发布及客户端开发
学习地址: http://www.cnblogs.com/leihenqianshang/category/795140.html