Codeforces Round #632 (Div. 2) A Little Artem 【1333A】(思维题)

Little Artem

题意

要求给一个 n ∗ m n*m nm 的板子中的每一个小格子涂上黑或者白两种颜色,对于一个格子而言,如果与它相邻的格子中有和它异色的,那么可以称这个格子是有效的,需要输出一种涂法,使得有效的 黑色格子数=白色格子数+1,即 B = W + 1 。
给出的n,m保证一定存在一种涂法满足上述条件。

思路

按照CF常年第一题的特性,一定有什么及其简单的方法可以满足上面这个条件。
按照这个思路,我们尝试让有效的黑色格子数只有一个,有效的白色格子数只有两个,那么就能满足上面的条件。
具体分为如下两种情况:

  1. 板子只有一行或者一列:将W放在中间,如:BWBBBBB
  2. 其余情况:W放左上角,其他全B
    WBBB
    BBBB
    BBBB

后来我发现, n 和 m 都是大于1的,也就是只用第二种情况就行了…

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
 
using namespace std;
 
 
int main()
{
    int t;
    cin >> t;
    int n,m;
    while(t--){
        cin >> n >> m;
        if(n==1){
            for(int i = 1; i <= m; ++i){
                if(i==2)
                    printf("W");
                else
                    printf("B");
            }
            printf("\n");
        }
        else if(m==1){
            for(int i = 1; i <= n; ++i){
                if(i==2)
                    printf("W\n");
                else
                    printf("B\n");
            }
        }
        else{
            for(int i = 1; i <= n; ++i){
                for(int j = 1; j <= m; ++j){
                    if(i==1&&j==1)
                        printf("W");
                    else
                        printf("B");
                }
                printf("\n");
            }
        }
    }
    return 0;
}

碎碎念

唉,这种题有时候确实不好想,挺耽误时间的。
就使劲找规律,找特例,找通用解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值