51NOD1337 翻转游戏 【贪心】
2017-09-06 21:41
323 查看
传送门
显然当没有'?'时,模拟一遍即可 当位置i是'?'时,如果后续的关卡中,位置i需要关灯,且当前关卡必须关掉一些灯,则顺手关掉 开灯也同理
#include<stdio.h> #include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define MEM(a,x) memset(a,x,sizeof(a)) #define lowbit(x) ((x)&-(x)) using namespace std; const int inf=1e9+7; const int N = 50+5; char str ; int to ;//0:必须关,1必须开,2尽量关,3尽量开 int now ; void initTo(int n,int m){ for(int i=0;i<n;++i){ for(int j=0;j<m;++j){ switch(str[i][j]){ case '-': to[i][j]=0; break; case '+': to[i][j]=1; break; case '?': to[i][j]=2; for(int k=i+1;k<n;++k){ if(str[k][j]!='?'){ to[i][j]=2+(str[k][j]=='+'); break; } } break; } } } } int slove(int n,int m){ initTo(n,m); int ans=n; MEM(now,0); for(int i=0;i<n;++i){ bool mustOpen=0; bool mustClose=0; for(int j=0;j<m;++j){ if(to[i][j]==0&&now[j]==1){ mustClose=1; } if(to[i][j]==1&&now[j]==0){ mustOpen=1; } } ans+=mustOpen+mustClose; for(int j=0;j<m;++j){ if(to[i][j]<2){ now[j]=to[i][j]; } if(mustClose&&to[i][j]==2){ now[j]=0; } if(mustOpen&&to[i][j]==3){ now[j]=1; } } } return ans; } int main(){ // freopen("/home/lu/code/r.txt","r",stdin); //freopen("/home/lu/code/w.txt","w",stdout); int T; scanf("%d",&T); while(T--){ int n,m; scanf("%d%d",&n,&m); for(int i=0;i<n;++i){ scanf("%s",str[i]); } printf("%d\n",slove(n,m)); } return 0; }
相关文章推荐
- 普及练习场 贪心 国王游戏
- BZOJ 2563: 阿狸和桃子的游戏 贪心 思路题
- 基于allegro5的黑白棋子翻转游戏
- 计蒜客 跳跃游戏 贪心
- 22th【贪心&&优先队列】打地鼠游戏
- hiho 1271 舰队游戏 状压dp 贪心 模拟
- 贪心算法——跳跃游戏
- [bzoj2563] 阿狸和桃子的游戏 贪心
- [Bigint][贪心][模板]vijosp1779国王游戏
- Cocos2D游戏之旅(四):卡牌翻转效果的实现(下)
- 【jzoj3100】【NOIP2012提高组】【国王游戏】【贪心】【高精度】
- VUE+WebPack游戏设计:用CSS实现扑克牌翻转特效
- 国王游戏 2012年NOIP全国联赛提高组(贪心+高精)
- NOIP 2012 国王游戏 贪心 高精度 (COGS 1263)
- 国王游戏(贪心+模拟)
- BZOJ_P2563 阿狸和桃子的游戏(贪心)
- 【LeetCode】Jump Game II 跳跃游戏II - 贪心 Medium
- ssoj2435 回文串游戏(贪心)
- 洛谷 1080 [NOIP2012] 国王游戏 贪心+高精