「CF#664」A Boboniu Likes to Color Balls(div.2)

题意

Link

给你4种颜色的球(R,G,B,W)的数量,你可以各选择一个颜色为R,G,B的球把他们变成三个颜色为W的球

你可以进行无限次这种操作,问是否能让所有的球组成回文串

题解

先吐槽一下这题目,我吃了4发fst(wtcl

构成回文,需要全部为偶数或者只有一个奇数

所以三偶一奇,四偶是可以的

但是!!!

三奇一偶在R,G,B为奇数,W为偶数才成立

因为如果进行操作,对于W颜色的球就是+3,改变了奇偶性

这样就变成了三偶一奇了qwq

Code

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

#define RE register

inline void fread(long long &x){
    x=0;
    int f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    x*=f;
}

inline void work(){
    long long f[5];
    int tot=0,cnt=0;
    for(RE int i=1;i<=4;i++){
        fread(f[i]);
        if(f[i]%2==0)cnt++;
    }
    if(cnt>=3){printf("Yes\n");return;}
    for(RE int i=1;i<=3;i++){
        if(f[i]==0){printf("No\n");return;}
    }
    for(RE int i=1;i<=3;i++){
        if(f[i]%2)tot++;
    }
    if(tot==3){printf("Yes\n");return;}
    else if(tot==2&&f[4]%2==1){printf("Yes\n");return;}
    else {printf("No\n");return;}
}

int main(){
    long long T;
    fread(T);
    for(RE int i=1;i<=T;i++)work();
    return 0;
}
posted @ 2021-08-13 11:27  sushitong  阅读(61)  评论(0)    收藏  举报