Codeforces Round #274 (Div. 2) C. Exams (貪心)
阿新 • • 發佈:2020-10-23
-
題意:給\(n\)場考試的時間,每場考試可以提前考,但是記錄的是原來的考試時間,問你如何安排考試,使得考試的記錄時間遞增,並且最後一場考試的時間最早.
-
題解:因為要滿足記錄的考試時間遞增,所以我們用結構體記錄兩個時間,並按第一個時間排序,然後遍歷考試時間,\(ans\)記錄上次考試的時間,我們每次將兩個時間和\(ans\)比一下,如果提前考試的時間比\(ans\)小,說明我們一定不能提前考試(因為時間已經晚了),否則就提前考掉.
-
程式碼:
struct misaka{ int a,b; bool operator < (const misaka &mikoto) const{ if(a==mikoto.a) return b<mikoto.b; return a<mikoto.a; } }e[N]; int n; int main() { //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); n=read(); for(int i=1;i<=n;++i) e[i].a=read(),e[i].b=read(); sort(e+1,e+1+n); int ans=0; for(int i=1;i<=n;++i){ if(e[i].b>=ans) ans=e[i].b; else ans=e[i].a; } printf("%d\n",ans); return 0; }