零起點學演算法94 今年暑假不AC(貪心)

2021-08-10 13:23:58 字數 1219 閱讀 8768

#include #include #include #include #includeusing namespace std;

struct node

a[105];

bool cmp(node a,node b)

else if(a[i].e思路:把所有節目按照開始時間從小到大排序,貪心策略有兩個

1:當前節目的開始時間大於或者等於上乙個已選節目的結束時間,那麼加上這個節目,結束時間變成當前節目的結束時間。

因為節目是按照開始時間排過序的,所以後面的節目開始時間肯定會比當前節目開始時間晚,所以選擇當前節目,結果不會比選後面的節目差

2:當前節目的結束時間小於上乙個已選節目的結束時間,那麼說明上乙個已選節目的開始時間比當前節目的開始時間早或者相等,而結束時間比當前節目晚,那麼同樣是乙個節目,把上乙個節目換成當前節目效果會更好(這樣節目數不會變,但是結束時間變早了,後面就可以有更多選擇)

description

「今年暑假不ac?」

「是的。」

「那你幹什麼呢?」

「看世界盃呀,笨蛋!」

「@#$%^&*%...」

確實如此,世界盃來了,球迷的節日也來了,估計很多acmer也會拋開電腦,奔向電視了。

作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播(永遠不要忘記關心國家大事)、非常6+7、超級女生,以及王小丫的《開心辭典》等等,假設你已經知道了所有你喜歡看的電視節目的轉播時間表,你會合理安排嗎?(目標是能看盡量多的完整節目)

input

輸入資料報含多個測試例項,每個測試例項的第一行只有乙個整數n(n<=100),表示你喜歡看的節目的總數,然後是n行資料,每行包括兩個資料ti_s,ti_e (1<=i<=n),分別表示第i個節目的開始和結束時間,為了簡化問題,每個時間都用乙個正整數表示。n=0表示輸入結束,不做處理。

output

對於每個測試例項,輸出能完整看到的電視節目的個數,每個測試例項的輸出佔一行。

sample input

121 3

3 40 7

3 815 19

15 20

10 15

8 18

6 12

5 10

4 14

2 90

sample output

5

零起點學演算法68 刪除字元

include include include int main printf n memset str,0,sizeof str getchar 不寫會出錯 return 0 這是乙個非常水的題,主要想講一下gets 讀取的換行符會被轉化成 0 來結束字串的讀入。但是gets之後,再次讀取乙個字元...

零起點學演算法104 第幾天?

time limit 1 sec memory limit 128 mb 64bit io format lld 給定乙個日期,輸出這個日期是該年的第幾天。輸入資料有多組,每組佔一行,資料格式為yyyy mm dd組成,具體參見sample input 另外,可以向你確保所有的輸入資料是合法的。對於...

1171 零起點學演算法78 牛牛

牛牛是一種紙牌遊戲,總共5張牌,規則如下 如果找不到3張牌的點數之和是10的倍數,則為沒牛 如果其中3張牌的點數之和是10的倍數,則為有牛,剩下兩張牌的點數和對10取餘數,餘數是幾,就是牛幾,特別的當餘數是0的時候是牛牛 例如 1 2 3 4 5,1 4 5 0 mod 10 2 3 5 mod 1...