改进后的算法也超时。。。
为什么总是运行超时 ,。。。。通过率只有40%?
#include <iostream> #include <algorithm> const int Max= 1e7+5; using namespace std; struct gift{ int a; int b; }gs[Max]; int cmp(gift &A, gift &B){ if(A.a != B.a){ return A.a <B.a; } else{ return A.b >B.b; } } int main(){ int t;int n,v; cin>>t; while(t--){ cin>>n>>v; long long space =v; int num =0; for(int i=0;i<n;i++){ int a ,b,c; cin>>a>>b; c = b-a; space =space+c; if(c>0){ gs[num].a =a; gs[num].b = b; num++; } } sort(gs,gs+num,cmp); int flag = true; if(space<0){ flag = false; } else{ for(int k=0;k<num;k++){ v = v-gs[k].a; if(v<0){ flag= false; break; } else{ v= v+ gs[k].b; } } } if(flag){ cout<<"yes"<<endl; } else{ cout<<"no"<<endl; } } }