有一條很長很長的線段,線段上有很多個點,每個點上有若干個彩珠(也可以沒有),彩珠有顏色,取出最短的線段長,使得這條線段上有所有顏色的彩珠
一開始空間開太大了,搞得t了好幾遍
然後優化了一下下
記錄每個彩珠的位置和顏色,然後把彩珠按照位置排一遍,然後用乙個結構體來把彩珠分成幾段,使得每段的位置相等
然後定義l和r為當前匹配到哪幾段,然後用sum陣列儲存每種顏色彩珠出現的次數,kk表示出現的彩珠種數,一旦kk等於彩珠顏色種數就更新答案
這道題就搞定了
#include#include#include
#include
#include
using
namespace
std;
struct
node
a[1100000];int
len;
bool
cmp(node n1,node n2)
int sum[61
];struct
duan
b[1100000
];int
main()
}sort(a+1,a+len+1
,cmp);
int cnt=1
; b[cnt].x=1
;
for(int i=1;i<=len;i++)
}int l=1,r=0;int kk=0
;
int ans=1
<<31-1
;
while(rwhile(kk==k)
l++;}}
printf(
"%d\n
",ans);
return0;
}
BZOJ1293 SCOI2009 生日禮物
標籤 單調佇列 description 小西有一條很長的彩帶,彩帶上掛著各式各樣的彩珠。已知彩珠有n個,分為k種。簡單的說,可以將彩帶考慮為x軸,每乙個彩珠有乙個對應的座標 即位置 某些座標上可以沒有彩珠,但多個彩珠也可以出現在同乙個位置上。小布生日快到了,於是小西打算剪一段彩帶送給小布。為了讓禮物...
BZOJ 1293 SCOI2009 生日禮物
鏈結 我是鏈結,點我呀 題意 在這裡輸入題意 題解 顯然的滑動視窗題。尺取法 如果l.i這一段已經有k種珍珠了。那麼就嘗試把l 即把l這個影響嘗試去掉一下 如果不足k種珍珠了,那麼就把l 撤銷。否則l 照常 離散化一下資料 include define ll long long define rep...
BZOJ1293 SCOI2009 生日禮物
time limit 10 sec memory limit 162 mb submit 2590 solved 1424 submit status discuss 小西有一條很長的彩帶,彩帶上掛著各式各樣的彩珠。已知彩珠有n個,分為k種。簡單的說,可以將彩帶考慮為x軸,每乙個彩珠有乙個對應的座標...