傳送門
一道單調佇列的應用
(其實有點不像是單調佇列)
大概就是先按照座標軸排序,依次處理
維護乙個佇列儲存當前在佇列中的每個球(記錄其下標)
然後對於每乙個區間一定有右端點和乙個左端點
列舉右端點,左端點單調佇列維護,可以求得最右的左端點的下標
然後維護過程就是每次看當前這個顏色的\(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 ...