洛谷鏈結
題目描述:
在一段彩帶上有不同顏色的彩珠,求出包含所有顏色彩珠的最短彩帶長度。
思路:我們可以把按彩珠的位置把所有彩珠排一下序,然後從1開始遍歷這些彩珠,並記錄出現過的顏色數目,知道該數目等於顏色總數,就開始模擬佇列的先進先出,不斷更新答案。
**:
1 #include2 #include3 #include4view code#define n 1000010
5using
namespace
std;
6int
r,l,ans,col[n],num,sum,n,m,a;
7struct
hehe;
11hehe q[n],que[n];
12int
cmp(hehe a,hehe b)
15void
join(hehe a)
22void
exit()
28int
main()37}
38 sort(que+1,que+n+1
,cmp);
39 l=1;r=0;ans=1e9;
40for(int i=1;i<=n;++i)46}
47 printf("%d"
,ans);
48return0;
49 }
P2564 生日禮物(單調佇列)
這個題看上去狀態比較多,實際上由於題目的輸出需要,又因為是乙個線性的結構,所以我們可以有一些操作。這麼想,如果我們有了乙個滿足條件的區間,此時我們縮減左端點,然後判斷此時是否還是滿足,滿足就繼續縮減,不滿足就伸長右端點,直到下一次又滿足條件為止,複雜度差不多o n include include i...
P2564 SCOI2009 生日禮物
傳送 預處理 把m個區間合併成乙個大區間 按照橫座標排序即可 思路 因為我們要一段盡可能小的區間包含所有的彩帶種類,我們不防開乙個陣列,記錄當前區間內每種彩帶多有多少個,從 1,1 開始,如果當前彩帶種類1,即說明這是一條新彩帶,彩帶種類 1,當彩帶種類 m時,記錄下當前區間長度,把左端點向右移,把...
洛谷P2564 SCOI2009 生日禮物
傳送門 一道單調佇列的應用 其實有點不像是單調佇列 大概就是先按照座標軸排序,依次處理 維護乙個佇列儲存當前在佇列中的每個球 記錄其下標 然後對於每乙個區間一定有右端點和乙個左端點 列舉右端點,左端點單調佇列維護,可以求得最右的左端點的下標 然後維護過程就是每次看當前這個顏色的 cnt 陣列是否 1...