1. 程式人生 > 實用技巧 >Codeforces Round #274 (Div. 2) C. Exams (貪心)

Codeforces Round #274 (Div. 2) C. Exams (貪心)

  • 題意:給\(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;
    }