XTUOJ1090校園活動 經典貪心

2021-07-11 20:30:30 字數 1760 閱讀 3129

accepted : 18

submit : 73

time limit : 1000 ms

memory limit : 65536 kb

description

校園文化節的時候,bob被好友推薦到學校當志願者。學校一共有n個活動,每個活動有乙個開始時間s和乙個結束時間t(包括時間s和時間t)。每個活動開始時,這個活動的負責人就會去找空閒的志願者幫忙。因為bob特別有能力,活動負責人都會優先喊他去幫忙。也就是說,只要bob有空,就會被人叫去幫忙。當然,同一時間,bob只能去乙個活動幫忙。而活動負責人在活動開始以後會非常忙而不會注意是否有人離開。所以只要過了開始時間bob可以隨時離開這個活動。然而熟悉乙個新活動所需要花費的代價很大,所以bob寧願一直呆在乙個已經熟悉了的活動也不願更換動。bob是個非常聰明的人,所以他可能會中途退出某個活動參加另乙個活動來避開更多的活動。

input

第一行為乙個正整數,表示樣例的數目。對於每乙個測試樣例的第一行為乙個正整數n(0output

對於每乙個測試樣例,輸出bob最少需要參加的活動數。

sample input

1 10

5 71 5

1 56 7

1 15

9 25

6 17

20 30

sample output

hint

對於第二個樣例,bob被叫去活動2,完成活動2後,時間點為5,沒有符合條件的活動了。

對於第四個樣例,bob先去活動1;最後他可以在中途出來去活動2,或者等活動1完成以後,去活動4。這樣只需要去2個活動。

題意: 給你n個活動區間,可能乙個活動區間還沒結束另乙個活動就開始了,策略就是你可以選擇跳或者不跳,從而使自己盡量少的參加活動。

這個題是模擬賽的時候碰到的題,當時和hz討論了很久,但由於當時思路不清晰沒能a,後來仔細想了一下舉了一些特例,找出來最佳貪心策略,然後果斷ac。

思路:具體貪心策略,對於每個活動,有兩種選擇乙個是跳出這個活動和不跳出這個活動,不管如何選擇count總會加一,那麼就要看跳出好,還是不跳等這個活動結束然後進入下乙個活動好,那麼我們不管具體是多少,就選擇他們之中結束時間晚的。那麼這樣就可以從區域性最優解推出整體最優解了。

同時,還要注意結束邊界的控制,如果乙個活動的包括了最後乙個活動的話,那麼兩種情況都不用選了直接等它結束就可以了。

特例:1—5   2—8  6—10  9—11  這個情況下肯定選擇2-8和6-10中結束時間晚的那個

code:

#include #include using namespace std;

struct nodea[100000];

bool cmp(node a,node b) //按開始時間小到大,結束時間大到小排序

int main()

}if(a[j].e>max) //和這個活動不包括的下乙個活動相比選最晚的那個

}i=k; //然後進入那個活動,繼續迴圈

count++;

}printf("%d\n",count);

}return 0;

}

貪心問題,一定要思路清晰,找特殊案例很重要啊。

XTUOJ 1041 狼群戰術

題目 description 二戰中德軍潛艇使用狼群戰術使得盟軍的運輸線遭受重大的損失。盟軍截獲了德軍潛艇的通訊電報,但電報顯然是加了密的,經過盟軍解密人員和情報人員的努力,終於解密了德軍的密碼,其編碼方式如下 使用乙個5 5的矩陣,縱和橫座標都依次為abcde,上面分別寫有除v以外的25個字母,然...

10 9學習總結

先補上前兩天的學習總結,假裝現在是10.9.今天覆習了hja的講課內容,總結出重要的有3點,第一點是比賽的對於long long int的應用,如下 ifdef win32 define lld i64d else define lld lld endif int main 第二點是關於noip 2...

每日練習109

1.在同一通道上同一時刻,可進行雙向資料傳送的通訊方式是 c單工 半雙工全雙工 上述三種均不是 如果在通訊過程的任意時刻,資訊只能由一方a傳到另一方b,則稱為單工。如果在任意時刻,資訊既可由a傳到b,又能由b傳a,但只能由乙個方向上的傳輸存在,稱為半雙工傳輸。如果在任意時刻,線路上存在a到b和b到a...