P2564 SCOI2009 生日禮物

2022-05-27 19:18:12 字數 797 閱讀 6986

*傳送

*預處理:把m個區間合併成乙個大區間(按照橫座標排序即可)

*思路:因為我們要一段盡可能小的區間包含所有的彩帶種類,我們不防開乙個陣列,記錄當前區間內每種彩帶多有多少個,從[1,1]開始,如果當前彩帶種類1,即說明這是一條新彩帶,彩帶種類+1,當彩帶種類==m時,記錄下當前區間長度,把左端點向右移,把該種彩帶在區間內的數量-1,如果該種彩帶的數量從1->0,說明該種彩帶不包含在區間裡。彩帶種類-1

**如下:

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7int n,m,a[1000005],b[20005],k,l,r,t,ans=0;8

struct

nodenum[1000005

];11

bool

cmp(node a,node b)

14int

main()

1524

}25 sort(num+1,num+ans+1

,cmp);

26 l=1; r=1; k=1; b[num[1].val]=1; int tmp=2000000005;27

while(l<=r && r<=n)

34 r++, b[num[r].val]++;

35if(b[num[r].val]==1) k++;36}

37 cout38return0;

39 }

洛谷P2564 SCOI2009 生日禮物

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

P2564 生日禮物

洛谷鏈結 題目描述 在一段彩帶上有不同顏色的彩珠,求出包含所有顏色彩珠的最短彩帶長度。思路 我們可以把按彩珠的位置把所有彩珠排一下序,然後從1開始遍歷這些彩珠,並記錄出現過的顏色數目,知道該數目等於顏色總數,就開始模擬佇列的先進先出,不斷更新答案。1 include2 include3 includ...

P4160 SCOI2009 生日快樂

windy的生日到了,為了慶祝生日,他的朋友們幫他買了乙個邊長分別為 x 和 y 的矩形蛋糕。現在包括windy,一共有 n 個人來分這塊大蛋糕,要求每個人必須獲得相同面積的蛋糕。windy主刀,每一切只能平行於一塊蛋糕的一邊 任意一邊 並且必須把這塊蛋糕切成兩塊。這樣,要切成 n 塊蛋糕,wind...