A. Boboniu Likes to Color Balls(思维)

A 题 都 想 了 一 下 . . . . . . A题都想了一下...... A......

红 绿 蓝 − > 白 最 多 只 会 只 执 行 一 次 红绿蓝->白最多只会只执行一次 绿>

为啥?

构 成 回 文 , 只 和 最 终 某 种 颜 色 是 奇 是 偶 有 关 构成回文,只和最终某种颜色是奇是偶有关 ,

偶 数 就 对 称 放 置 偶数就对称放置

奇 数 就 对 称 放 , 多 余 的 一 个 放 中 间 奇数就对称放,多余的一个放中间 ,

执 行 红 绿 蓝 − > 白 两 次 不 会 改 变 红 绿 蓝 的 奇 偶 性 执行红绿蓝->白两次不会改变红绿蓝的奇偶性 绿>绿

对 当 前 局 面 没 有 改 变 对当前局面没有改变

所 以 最 多 执 行 一 次 就 好 了 所以最多执行一次就好了

#include 
using namespace std;
#define int long long
int r,g,b,w,t;
bool isok( )
{
	int ji=0;
	if( r%2==1 )	ji++;
	if( g%2==1 )	ji++;
	if( b%2==1 )	ji++;
	if( ji==0 )	return true;
	if( ji==1&&w%2==0 )	return true;//1个奇数情况才可以把奇数放中间 
	return false;
}
signed main()
{
	cin >> t;
	while( t-- )
	{
		cin >> r >> g >> b >> w;
		if( isok() )	cout << "YES\n";
		else if(r&&g&&b )
		{
			r--,g--,b--,w+=3;
			if( isok() )	cout << "YES\n";
			else	cout << "NO\n";
		}
		else	cout << "NO\n";
	}
}

你可能感兴趣的:(div题解)