//有m項工作每項工作分別在si時間開始,在ti時間結束。
//對於每項工作你都可以選擇參與與否。如果選擇參與
//那麼自始至終都必須全程參與,此外參與工作的時間端不能
//重疊(即使是開始的瞬間的重疊也是不允許的)
//input
//n=5
//s=
//t=
//output
//3#include "cstdio"
#include "iostream"
#include "algorithm"
using std::pair;
const int max_n=10000;
int n;
int s[max_n];
int t[max_n];
pairtime[max_n];
void solve()
sort(time,time+n);
int ans=0;
int t=0;
for(int i=0;iprintf("%d\n",ans);
}int main(int argc, char const *argv)
for(int i=0;isolve();
return 0;
}
貪心演算法
每次選取可以選擇(上個工作結束時間小於下個工作開始時間)且結束時間最早的工作
利用pair容器將每乙個工作開始時間和結束時間繫結起來
區間排程問題
有n項工作,每項工作分別在start i 時間開始,在end i 時間結束。對於每項工作,你都可以選擇參與與否,如果選擇參與,那麼自始至終必須全程參與。此外參與時間段不能重疊 即使是開始的瞬間與結束的瞬間重疊也是不允許的 那麼最多能參與多少項工作?演算法思想 在可選的工作中,每次都選取結束時間最早的...
區間排程問題
有n項工作,每項工作分別在start i 時間開始,在end i 時間結束。對於每項工作,你都可以選擇參與與否,如果選擇參與,那麼自始至終必須全程參與。此外參與時間段不能重疊 即使是開始的瞬間與結束的瞬間重疊也是不允許的 那麼最多能參與多少項工作?演算法思想 在可選的工作中,每次都選取結束時間最早的...
區間排程問題
我們要選擇結束時間最早的,這樣才能保證選的區間比較多,因此這個裡面會有對區間的排序,結束時間最早排在前面,運用了pair,pair中有兩個屬性就是first,second,把s存在了second中,把t存在了first中,這樣就可以把結束時間最早放在前面。include include includ...