题意:有两种豆,若干个袋子,每个袋子里的豆满足两个限制:
1.至少放每种豆各一个
2.两种豆的个数差不超过d
问能否用完所有的豆子。
令x为较少的豆数,y为较多的豆数。当x,y相等时肯定满足,x,y不等时就要用较少的那种尽可能多的消耗较多的那种。
令某袋里有1个少的,1+d个多的,这样消耗最快。当然可以选择少消耗点以达成x=y.
所以满足限制当且仅当(1+d)*x>=y
#include<bits/stdc++.h>
using namespace std;
void swapmy(long long &a,long long &b)
{
long long c=a;
a=b;
b=c;
}
int main()
{
long long t;
cin>>t;
while(t--)
{
long long x,y,z;
cin>>x>>y>>z;
if(x>y) swap(x,y);
if(z==0) {if(x!=y) printf("NO\n");else printf("YES\n");continue;}
if(x*(z+1)>=y) printf("YES\n");
else printf("NO\n");
}
return 0;
} 


京公网安备 11010502036488号