Boboniu Likes to Color Balls

题意:有4种球:红球,绿球,蓝球和白球,可以进行这样的操作:同时将一个红球,一个绿球,一个蓝球刷成白球,上述操作可以进行多次,问你是否存在一个小球序列使颜色是回文的。

这题是A题,但脑子不太清醒竟然做了半个小时,比赛咕咕咕了,赛前一小时睡到了第二天。

满足题目回文的要求,则有:
①所有颜色的球的数量都是偶数
②至多只有一种颜色的球的数量是奇数

每次进行操作后所有颜色的球的数量的奇偶性都发生了变化,所以我们只需要探讨初始情况和进行一次操作后是否满足上述条件即可。

我一开始虽然是按奇偶性来的,但是没有抓住上面的要求,在那里细分每个球的奇偶性情况233

AC Code

#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;

bool sign1, sign2;

bool solve(int r,int g,int b,int w) {
	int ret = r % 2 + g % 2 + w % 2 + b % 2;
	if ( ret<= 1) sign1 = true;
	if (ret>=3) sign2 = true;
	return false;
}

int main() {
	int t;
	scanf("%d", &t);
	while (t--) {
		int r, g, b, w;
		sign1 = sign2 = false;
		scanf("%d %d %d %d", &r, &g, &b, &w);
		int temp = min(r, min(g, b));
		solve(r, g, b, w);
		if (sign1) {
			printf("Yes\n");
		}
		else if (temp != 0 && sign2) {
			printf("Yes\n");
		}
		else {
			printf("No\n");
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值