解题思路:
贪心算法,一路贪心下去
注意事项:
参考代码:
#include<iostream> #include<algorithm> using namespace std; const int maxn = 10010; typedef long long LL; struct Block{ LL have; LL sum; LL need; }block[maxn]; bool cmp(Block x,Block y) { return x.need<y.need; } int main(void) { int m,n,count=0; bool ans[10]; cin >> m; while(count<m) { cin >> n; for(int i=0;i<n;i++) cin >> block[i].have >> block[i].sum; for(int i=0;i<n;i++) block[i].need = block[i].sum-block[i].have; sort(block,block+n,cmp); ans[count] = true; LL sum = 0; for(int i=0;i<n;i++) { if(sum+block[i].have>=block[i].sum) { sum+=block[i].have; } else { ans[count]=false; break; } } count++; } for(int i=0;i<m;i++) { if(ans[i]) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; }
0.0分
7 人评分