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< ...
随机推荐
- 这里是指推送通知跟NSNotification有区别:
1.NSNotification是系统内部发出通知,一般用于内部事件的监听,或者状态的改变等等,是不可见的2.本地通知与远程通知是可见的,主要用于告知用户或者发送一些App的内容更新,推送一些相关的消 ...
- When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结很有用 看未来演进方向
链接:http://ucys.ugr.es/jnic2016/docs/MachineLearning_LiorRokachJNIC2016.pdf https://people.eecs.berke ...
- 均匀分布(uniform distribution)期望的最大似然估计(maximum likelihood estimation)
maximum estimator method more known as MLE of a uniform distribution [0,θ] 区间上的均匀分布为例,独立同分布地采样样本 x1, ...
- ACM/OI 出题用
之前出题,很苦恼出数据和检查程序,因为很多繁琐的工作,还很可能小手一抖出问题. 最近又在出题...想起之前的对拍脚本,感觉不能更方便,于是撸了一套出题用的小工具,也学习了一点点的DOS命令 首先是输入 ...
- [jzoj 6080] [GDOI2019模拟2019.3.23] IOer 解题报告 (数学构造)
题目链接: https://jzoj.net/senior/#main/show/6080 题目: 题意: 给定$n,m,u,v$ 设$t_i=ui+v$ 求$\sum_{k_1+k_2+...+k_ ...
- 一个Python项目的创建架构
要进行Python项目的编写,很多人刚开始一筹莫展,不知道该如何去构建一个项目,现在粗略的描述一下一个项目的创建过程,供大家参考了解一下: 大家可以先忽略其中创建的函数 ,每个包的含义都有定义,大家可 ...
- AlertDialog的使用
1.Alertdialog的几种形式: 2.第一种:简单对话框 AlertDialog.Builder localBuilder = new AlertDialog.Builder(this); lo ...
- GridBagLayout使用案例+获取目录下所有的文件+获取创建时间及最后修改时间
package vvv; import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLay ...
- Debian下签名无法验证
又收集到的新方法 gpg --keyserver subkeys.pgp.net --recv-keys AED4B06F473041FA && apt-key add /root ...
- 【Django】创建后的基本操作
1.创建Django项目做基本的配置步骤Pycharm->new->New Project 2.基本的配置settings.py-->STATIC_URL = '/static/'后 ...