智力大衝浪
翻了翻題解發現沒有並查集解法(眼瞎勿怪),於是水一發題解。(貌似跑得比某些題解快)
首先肯定是盡量做減少**大的任務,所以就按照價值從大到小排個序。
然後就有並查集的玄學操作了:
找到商品 \(i\) 的祖先 \(find(i)\)。
倘若 \(find(i)!=0\) ,加上 \(i\) 的價值,合併 \(find(i)\) 與 \(find(find(i)-1)\)。
否則跳過。
其實這裡的並查集維護的是\(i\) 能插入的最晚時間,顯然每次插入應盡量插入到最晚的時間,所以符合貪心。
最壞時間複雜度:\(o(nlogn)\)。
#include#include#include#include#include#define n 510
using namespace std;
int m,n,fa[n];
struct nodea[n];
int read()
bool cmp(node a,node b)
int find(int x)
int main()
printf("%d\n",max(0,m-ans));
return 0;
}
P1230 智力大衝浪
這題應該是貪心吧,對於每乙個遊戲,當然是扣錢扣得多的先玩,按照價值從大到小排序,對於當前的價值,從當前的t時段開始遍歷,如果說t時段已經被占用了,看看前面的t 1是否被占用,一直到1 如果都被占用了,說明這個遊戲不能進行 include include using namespace std str...
P1230 智力大衝浪
小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?接下來主持人宣布了比賽規則 首先,比賽時間分為n個時段 n 500 它又給出了很多小遊戲,每個小遊戲都必須在規定期限ti前完成 1 ti n 如...
洛谷P1230智力大衝浪
小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?接下來主持人宣布了比賽規則 首先,比賽時間分為n個時段 n 500 它又給出了很多小遊戲,每個小遊戲都必須在規定期限ti前完成 1 ti n 如...