[CODEVS P2594]解药还是毒药
2017-08-08 17:05
381 查看
原题链接
二进制是好文明
谁敢反对二进制我就打爆谁的苟头
状态压缩真是太神奇辣
将得病的状态转换成二进制存储起来
初始时病全得
通过药剂
进行BFS
达到健康状态
其实一开始还纠结了一下
到底是记种类还是记数目
但是果然还是记数目啦
记种类根本不可做嘛
二进制是好文明
谁敢反对二进制我就打爆谁的苟头
状态压缩真是太神奇辣
将得病的状态转换成二进制存储起来
初始时病全得
通过药剂
进行BFS
达到健康状态
其实一开始还纠结了一下
到底是记种类还是记数目
但是果然还是记数目啦
记种类根本不可做嘛
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<cmath> #include<queue> #include<vector> #include<climits> #include<string> #include<cstdlib> #include<ctime> #define LL long long #define MOD 1000000007 #define pi 3.141592653589 using namespace std; int n,m,i,j,med,ill[105],cure[105],s,h,t,f[1050],ans[1050],num[1050],p; int main() { scanf("%d%d",&n,&m); for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { scanf("%d",&med); ill[i]<<=1; cure[i]<<=1; if(med==1) cure[i]++; if(med==-1) ill[i]++; } cure[i]=(~cure[i]); } s=(1<<n)-1; h=1; t=1; f[s]=1; ans[h]=0; num[h]=s; while(h<=t) { if(num[h]==0) { printf("%d",ans[h]); return 0; } for(i=1;i<=m;i++) { p=(num[h]&cure[i]); p=(p|ill[i]); if(!f[p]) { t++; ans[t]=ans[h]+1; f[p]=1; num[t]=p; } } h++; } printf("The patient will be dead."); return 0; }
相关文章推荐
- codevs 2594 解药还是毒药 状压dp
- Code VS 2594 解药还是毒药
- 【日常学习】【状压BFS】codevs2594 解药还是毒药题解
- 【codevs2594】解药还是毒药
- CODEVS 2594 解药还是毒药
- 【BFS】CODE[VS] 2594 解药还是毒药 (状态压缩优化BFS)
- codevs2594解药还是毒药(状压dp)
- CODE[VS] 2594 解药还是毒药【状压BFS】
- codevs 2594 解药还是毒药
- 解药还是毒药(codevs 2594)
- codevs vijos 解药还是毒药
- Codevs 2594 解药还是毒药
- 2594 解药还是毒药
- 2594 解药还是毒药
- codevs 2594 解药还是毒药(状压+bfs)
- codevs 2594 解药还是毒药(状态压缩BFS)
- codevs 2594 解药还是毒药(状态压缩BFS)
- 解药还是毒药
- 【BFS】【位运算】解药还是毒药
- 解药还是毒药 状压 bfs