UVA 11729 - Commando War
挺简单的贪心。
直觉告诉我直接从时间长的任务开始交代就好了。
可是总觉得怪怪的。
直接敲了代码上去就AC了。
然后看了看书发现思路没错:)
#include<iostream> using namespace std; const int MAXN=1000+10; int B[MAXN],J[MAXN]; int main() { int n,i,sum,count=1; while(cin>>n,n) { for(i=0;i<n;i++) cin>>B[i]>>J[i]; int max,k,temp; for(i=0;i<n;i++) { max=i; for(k=i+1;k<n;k++) if(J[k]>J[max]) max=k; if(k!=i) { temp=B[i];B[i]=B[max];B[max]=temp; temp=J[i];J[i]=J[max];J[max]=temp; } } max=B[0]+J[0]; temp=B[0]; for(i=1;i<n;i++) { if(temp+B[i]+J[i]>max) max=temp+B[i]+J[i]; temp+=B[i]; } cout<<"Case "<<count++<<": "<<max<<endl; } }
新 blog : www.hrwhisper.me