誰先晚餐
題目連結
按照Greegy 的想法,吃最慢的人要最先吃,吃最快的人要後吃,才能讓整個時間盡量的縮短
這一題之前學長講解過,所以自然是比較簡單。But! 要怎麼證明這樣可以得到最佳解呢~留到手寫作業!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <bits/stdc++.h> #define ios ios::sync_with_stdio(0),cin.tie(0) using namespace std; int n;
struct student{ int eat,cook; }people[10005];
bool comp(student a,student b){ return a.eat > b.eat; } int main(){ ios; while(cin>>n){ if(n==0)break; for(int i=0;i<n;i++){ cin>>people[i].cook>>people[i].eat; } sort(people, people+n, comp); int ans = 0,cook = 0; for(int i=0;i<n;i++){ cook+=people[i].cook; int leave = cook+people[i].eat; ans = max(ans, leave); } cout<<ans<<endl; } }
|