*傳送
*預處理:把m個區間合併成乙個大區間(按照橫座標排序即可)
*思路:因為我們要一段盡可能小的區間包含所有的彩帶種類,我們不防開乙個陣列,記錄當前區間內每種彩帶多有多少個,從[1,1]開始,如果當前彩帶種類1,即說明這是一條新彩帶,彩帶種類+1,當彩帶種類==m時,記錄下當前區間長度,把左端點向右移,把該種彩帶在區間內的數量-1,如果該種彩帶的數量從1->0,說明該種彩帶不包含在區間裡。彩帶種類-1
**如下:
1 #include 2 #include 3 #include 4 #include 5 #include 6using
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...