読者です 読者をやめる 読者になる 読者になる

出来るだけ寝ていたい

1日最低12時間睡眠、寝たら負け

貪欲2

#define make_pair MP
#define N_MAX 100000
using namespace std;
//---------------------------------------------------------------------------//
int n,s[N_MAX],t[N_MAX],min1=t[0];

int main(){
        cin>>n;
        for(int i=0; i<n; i++) {
                cin>>s[i]>>t[i];
        }
        pair<int,int > work[N_MAX];
        for(int i=0; i<n; i++) {
                work[i].first=s[i];
                work[i].second=t[i];
        }
        sort(work,work+n);
        int sum=0,f=0;
        for(int i=0; i<n; i++) {
                if(f<work[i].first) {
                        sum++;
                        f=work[i].second;
                }
        }
        cout<<sum<<endl;
}

これはスケジュールにある出席可能な会議で会議同士の時間が重ならないよう出来るだけ多く出席するような最適解を求めるアルゴリズム
pair にしてソート、次に早く終わるものから順番に選択って感じ。