BZOJ 1434: [ZJOI2009]染色游戏 博弈

[Submit][Status][Discuss]
Description
一共n × m 个硬币,摆成n × m 的长方形。dongdong 和xixi 玩一个游戏, 每次可以选择一个连通块,并把其中的硬币全部翻转,但是需要满足存在一个 硬币属于这个连通块并且所有其他硬币都在它的左上方(可以正左方也可以正 上方),并且这个硬币是从反面向上翻成正面向上。dongdong 和xixi 轮流操作。 如果某一方无法操作,那么他(她) 就输了。dongdong 先进行第一步操作,假 设双方都采用最优策略。问dongdong 是否有必胜策略。
Input
第一行一个数T,表示他们一共玩T 局游戏。接下来是T 组游戏描述。每 组游戏第一行两个数n;m,接下来n 行每行m 个字符,第i 行第j 个字符如 果是“H” 表示第i 行第j 列的硬币是正面向上,否则是反面向上。第i 行j 列 的左上方是指行不超过i 并且列不超过j 的区域。
Output
对于每局游戏,输出一行。如果dongdong 存在必胜策略则输出“- -”(不含 引号) 否则输出“= =”(不含引号)。(注意输出的都是半角符号,即三个符号 ASCII 码分别为45,61,95)
Sample Input
32

3

HHH

HHH

2 3

HHH

TTH

2 1

T

H

Sample Output
= =

  • -

  • -

HINT

对于40% 的数据,满足1 ≤ n;m ≤ 5。
对于100% 的数据,满足1 ≤ n;m ≤ 100,1 ≤ T ≤ 50。

解法:跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪

拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪

拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜跪拜

http://blog.csdn.net/whjpji/article/details/7442935

//BZOJ 1434
//ORZORZORZORZORZORZORZ
//ORZORZORZORZORZORZ
//MAYAMAAMAYAMAYA
//WEISHENME
//WOZHEMERUOJI

#include <bits/stdc++.h>
using namespace std;

bool vis[220];
inline int lowbit(int x){
    return x&(-x);
}

inline int sg(int i, int j)
{
    if(i&&j) return i+j;
//    int cnt = 0;
//    for(int tmp = i+j+1; !(tmp&1); tmp/=2) ++cnt;
//    return cnt;
    else return log2(lowbit(i+j+1));
}

char s[110][110];
int main(){
    int T,n,m;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&n,&m);
        memset(vis, 0, sizeof(vis));
        for(int i=0; i<n; i++){
            scanf("%s", s[i]);
            for(int j=0; j<m; j++){
                if(s[i][j]=='T'){
                    vis[sg(i,j)]^=1;
                }
            }
        }
        int flag = 0;
        for(int i=0; i<n+m-1; i++){
            if(vis[i]){
                printf("-_-\n");
                flag = 1;
                break;
            }
        }
        if(!flag) printf("=_=\n");
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值