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代码是在 ...
- [POI 2007] 旅游景点
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1097 [算法] 首先,用Dijkstra算法求出2-k+1到每个点的最短路 然后,我 ...
- intelliJ idea运行新的test功能时,报错:class not found "....." empty test suite
转自:https://blog.csdn.net/u012560212/article/details/75037578
- React 父组件触发子组件事件
Parent组件 import React from "react"; import Child from "./component/Child"; class ...
- vue入门--初始化
VUE初始化时,可以用vue init webpack-simple或者vue init webpack.前者是简易版的工程,后者是标准的初始化.工程创建成功后,打开发现两个的目录结构有很大不同.si ...
- nginx 与 Windows 错误
设置根目录 root "D:/www/app"; proxy_pass 反向代理 404 location php 模块添加 fastcgi_split_path_info ^(( ...
- Windows2003 安装MVC4 环境的步骤
一.作为部署服务器的安装步骤 1.服务器上安装SP2 和 IIS6 2.安装.Net Framework3.5 SP1(完整安装包,包含2.0 2.0SP1,237MB那个安装包) 3.安装.Net ...
- dedecms清空栏目后,新建ID不从1开始的解决方法
在后台SQL运行器运行下面的语句,这样新建的栏目ID就从1开始了: ALTER TABLE `dede_arctype` AUTO_INCREMENT =1; (注意表名) 下面是文章的,运行后,发布 ...
- gbk编码
GBK 编码 GBK编码范围:8140-FEFE,汉字编码范围见第二节:码位分配及顺序. GBK编码,是对GB2312编码的扩展,因此完全兼容GB2312-80标准.GBK编码依然采用双字节编码方 ...
- EntityFramework 一
EntityFramework EF核心库 EntityFramework.SqlServer EF针对sqlsever的库 引用 system.Data.Entity EF相比SQL语句方便,但 ...