CodeForces-606#A 题解
正文
妥妥的模拟,当然这边有个易错的地方:最后合并出来的所有类型球数只要大于等于这种类型的目标球数就可以合成。
我们设 \(g\),对于每一种类型的球,如果它的现有球数(即 \(k\in\{a,b,c\}\))大于等于它的目标球数(即 \(t\in\{x,y,z\}\)),那么 \(g\leftarrow g+\left \lfloor (k-t)\div 2 \right \rfloor\),代表可以用来转换的球数;相反的,我们设 \(d\) 代表需要转换的球数,显而易见当 \(t>k\) 时 \(d\leftarrow d+(t-k)\)。
最后只要判断可以用来转换的球数是否大于等于需要转换的球数,即如果 \(k\geq d\),输出 Yes,否则输出 No。
#include<iostream>
using namespace std;
int a,b,c,x,y,z;
int d,g;
int main(){
cin>>a>>b>>c>>x>>y>>z;
if(a>=x) g+=(a-x)/2;
else d+=x-a;
if(b>=y) g+=(b-y)/2;
else d+=y-b;
if(c>=z) g+=(c-z)/2;
else d+=z-c;
if(g>=d) cout<<"Yes";
else cout<<"No";
}
后附
日志
v1.0 on 2023.01.01: 发布

浙公网安备 33010602011771号