洛谷P2564 SCOI2009 生日禮物

2022-06-27 22:03:12 字數 723 閱讀 8126

傳送門

一道單調佇列的應用

(其實有點不像是單調佇列)

大概就是先按照座標軸排序,依次處理

維護乙個佇列儲存當前在佇列中的每個球(記錄其下標)

然後對於每乙個區間一定有右端點和乙個左端點

列舉右端點,左端點單調佇列維護,可以求得最右的左端點的下標

然後維護過程就是每次看當前這個顏色的\(cnt\)陣列是否\(>1\),如果是,那麼就可以不要這個點,這個點出隊,如果不是,那麼保留

#includeusing namespace std;

template inline void read(t &x)ch=getchar();}

while(isdigit(ch))

x=f?-x:x;

return ;

}template inline void write(t x)

const int n=1000005;

int n,k,op,idx,cnt[n],now,ans=0x3f3f3f3f,hh,tt=-1,que[n];

struct nodea[n];

inline bool cmp(node x,node y)

write(ans);

return 0;

}

P2564 SCOI2009 生日禮物

傳送 預處理 把m個區間合併成乙個大區間 按照橫座標排序即可 思路 因為我們要一段盡可能小的區間包含所有的彩帶種類,我們不防開乙個陣列,記錄當前區間內每種彩帶多有多少個,從 1,1 開始,如果當前彩帶種類1,即說明這是一條新彩帶,彩帶種類 1,當彩帶種類 m時,記錄下當前區間長度,把左端點向右移,把...

洛谷 P4159 SCOI2009 迷路

如果邊權為 1 11,則是簡單的矩陣快速冪加速dp遞推方程,又因為邊權並不大,所以考慮拆點,新圖中邊權均為 1 11,將每個點暴力拆成相連的 9 99 個點,對於原先某條邊 u,v,w u,v,w u,v,w 可以轉化為 u uu 拆成的點中第 w ww 個連向 v vv 拆成的點中第 1 11 個...

洛谷 P4159 SCOI2009 迷路

windy在有向圖中迷路了。該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在 t 時刻到達節點 n 1。現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎?注意 windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。根據題意,可以寫出轉移方程 f sum f ...