題目:
可以這樣理解題意:將每個節目看做是乙個區間,起始時間為左右端點,待求的是:最多可以有多少個區間互不相交(注意:[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也會拋開電腦,奔向電視了。作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播 永遠不要忘記關心...