题目链接:http://codeforces.com/problemset/problem/606/A
题意:有蓝、紫、橙三种颜色的小球,已知各有a,b,c个,现在想要得到至少x,y,z个,其中有一个转换规则,就是消耗两个相同颜色的小球可以得到一个其他颜色的小球。给定a、b、c和x、y、z,求是否能得到想要的结果。
解:首先,读错题意系列,如果a>x&&b>y&&c>z的话,就是Yes。
否则,如果有一种颜色有少的,假设一共少m个,就是说,至少要进行m次转换。
又因为每次转换需要消耗两个相同颜色的小球,所以,计算每个颜色比最低要求多的数目,然后让这个数整除2,把所得到的相加,
若>=m,则是Yes,否则就是No。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
//freopen("input.txt", "r", stdin);
int a[3], x[3], ans = 0;
for (int i = 0; i < 3; ++i)
scanf("%d", &a[i]);
for (int i = 0; i < 3; ++i)
{
scanf("%d", &x[i]);
if (a[i] - x[i] < 0)
ans += a[i] - x[i];
else
ans += (a[i] - x[i]) / 2;
}
if (ans < 0)
printf("No\n");
else
printf("Yes\n");
//system("pause");
//while (1);
return 0;
}