题意:有两种豆,若干个袋子,每个袋子里的豆满足两个限制:
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; }