hdoj 2037 今年暑假不AC

2021-07-27 06:34:48 字數 939 閱讀 9987

題目

可以這樣理解題意:將每個節目看做是乙個區間,起始時間為左右端點,待求的是:最多可以有多少個區間互不相交(注意:[3,5]和[5,7]雖有共同的端點,但是是不相交的).

思路:所選擇的區間長度(節目時間長短)越小,餘下的空餘區間就越多,所以長度小的區間,應該先被選中.因此,步驟如下:

step1.對所有的區間按照區間長度遞增的順序排序.

step2.依次考察每個區間,看看這個區間與已經選中的區間是否相交,如果都不相交,則這個區間被選中,否則不能選擇這個區間.以此類推,直至考察完所有區間.

例如,題目中的乙個例子,解答如下圖

c++**如下:

#include#includeusing namespace std;

struct tv//結構體

; bool cmp(tv tv1,tv tv2)//作為sort函式的乙個引數,以便進行結構體排序

int main()

if(ok)//如果ok=1,表明節目i與已經選中的所有的節目都不衝突,則可以加入它們

indexofok[numofok++] = i;//記錄下它的下標,並且數目++

} cout << numofok << endl;

} return 0;

}

注意:上述**提交會出現錯誤提示,刪掉所有的注釋再提交,可以通過.

總結:

1.結構體的使用不必過於複雜,寫上資料成員即可.

2.sort()中的函式引數決定了如何排序.

3.注意中indexofok陣列的用法.

HDOJ 2037今年暑假不AC

問題描述 今年暑假不ac?是的。那你幹什麼呢?看世界盃呀,笨蛋!確實如此,世界盃來了,球迷的節日也來了,估計很多acmer也會拋開電腦,奔向電視了。作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播 永遠不要忘記關心國家大事 非常6 7 超級女生...

hdoj 2037 今年暑假不AC

題目 可以這樣理解題意 將每個節目看做是乙個區間,起始時間為左右端點,待求的是 最多可以有多少個區間互不相交 注意 3,5 和 5,7 雖有共同的端點,但是是不相交的 思路 所選擇的區間長度 節目時間長短 越小,餘下的空餘區間就越多,所以長度小的區間,應該先被選中.因此,步驟如下 step1.對所有...

Hdoj 2037 今年暑假不AC

problem description 今年暑假不ac?是的。那你幹什麼呢?看世界盃呀,笨蛋!確實如此,世界盃來了,球迷的節日也來了,估計很多acmer也會拋開電腦,奔向電視了。作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播 永遠不要忘記關心...