ACM 區間排程問題

2021-07-02 05:02:20 字數 801 閱讀 9468

//有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...