题解 CF1519A 【Red and Blue Beans】
思路分析
前置
- 由于每一个容器必须要有一个红色豆子和蓝色豆子,则容器最多有红色豆子和蓝色豆子的最小值个。
- 我们要让豆子的数量差小,就必须要尽可能地平均分配豆子。
正文
我们只需要判断制是否造一种数据满足条件即可。
开始我们最喜欢的贪心:
首先,使用红色豆子和蓝色豆子的最小值个容器,在每个容器里先放一个红豆子,一个蓝豆子,由于我们要让豆子的数量差小,就必须要尽可能地平均分配豆子。
现在,考虑一下无解的情况:
由题目以及上述分析可得:
当
\texttt{AC Code}
C++
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read_int(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-'){
w=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
signed main(){
int n=read_int();
for(int i=0;i<n;i+=1){
int r=read_int();
int b=read_int();
int d=read_int();
int x=min(r,b);
int y=max(r,b)-min(r,b);
if(y>x*d){
puts("NO");
continue;
}
puts("YES");
}
return 0;
}
Python
n=int(input())
for i in range(0,n,1):
s = input().split()
r=int(s[0])
b=int(s[1])
d=int(s[2])
x=min(r,b)
y=max(r,b)-x
if y>x*d:
print("NO")
else:
print("YES");