P2564 生日禮物

2022-05-01 00:57:16 字數 709 閱讀 4941

洛谷鏈結

題目描述:

在一段彩帶上有不同顏色的彩珠,求出包含所有顏色彩珠的最短彩帶長度。

思路:我們可以把按彩珠的位置把所有彩珠排一下序,然後從1開始遍歷這些彩珠,並記錄出現過的顏色數目,知道該數目等於顏色總數,就開始模擬佇列的先進先出,不斷更新答案。

**:

1 #include2 #include3 #include4

#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 }

view code

P2564 生日禮物(單調佇列)

這個題看上去狀態比較多,實際上由於題目的輸出需要,又因為是乙個線性的結構,所以我們可以有一些操作。這麼想,如果我們有了乙個滿足條件的區間,此時我們縮減左端點,然後判斷此時是否還是滿足,滿足就繼續縮減,不滿足就伸長右端點,直到下一次又滿足條件為止,複雜度差不多o n include include i...

P2564 SCOI2009 生日禮物

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

洛谷P2564 SCOI2009 生日禮物

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