1293 SCOI2009 生日禮物

2022-09-06 23:03:31 字數 1946 閱讀 9983

昨天想了好久這個題,最後發現竟然已經ac過了,還是寒假ac的!!真是。。。。。。

網上都是些動歸,堆什麼的解法,我是佇列。

按位置排序,依次加入佇列。加入乙個元素後判斷,保證隊首顏色只有一種

runid

user

problem

result

memory

time

language

code_length

submit_time

346220

lbz007

1293

accepted

15852 kb

3424 ms

pascal/edit

1221 b

2013-02-05 18:33:29

view code

1

var2 ss,c,a,q:array[0..1000002]of

longint;

3ans,num,k,n,m,s,x,h,t,i,j:longint;

4procedure

sort(l,r:longint);

5var

i,j,x,y:longint;

6begin

7 i:=l;j:=r;

8 x:=a[(l+r) shr 1];9

repeat

10while a[i]do

11inc(i);

12while xdo

13dec(j);

14if

not(i>j) then

15begin

16 y:=a[i];

17 a[i]:=a[j];

18 a[j]:=y;

19 y:=c[i];

20 c[i]:=c[j];

21 c[j]:=y;

22inc(i);dec(j);

23end;24

until i>j;

25if lthen

26sort(l,j);

27if ithen

28sort(i,r);

29end;30

begin

31readln(n,k);

32for i:=1

to k do

33begin

34read(x);

35for j:=1

to x do

36begin

37inc(s);

38 c[s]:=i;

39read(a[s]);

40end;41

readln;

42end

;43 sort(1

,n);

44 h:=1;t:=1

;45 inc(ss[c[1

]]);

46 num:=1

;47 m:=1

;48 ans:=maxlongint;

49while tdo

50begin

51inc(t);

52inc(ss[c[t]]);

53if (ss[c[t]]=1)and(m<>k) then

inc(m);

54while ss[c[h]]>1

do55

begin

56 inc(h); dec(ss[c[h-1

]]);

57end

;58 num:=a[t]-a[h];

59if (numand(m=k) then

60 ans:=num;

61end;62

writeln(ans);

63end.

1293 SCOI2009 生日禮物

題目鏈結 題目大意 數軸上有若干個彩色的點,求最短區間,使其包含所有顏色的點至少乙個 題解 做法挺多的,例如說堆,二分 我寫的大概是乙個叫尺取法的東西,就是維護兩個指標,表示區間的兩個端點,然後移動 感覺跟莫隊的維護方法差不多 我的收穫 get include include include usi...

1293 SCOI2009 生日禮物

time limit 10 sec memory limit 162 mb submit 3151 solved 1743 submit status discuss 小西有一條很長的彩帶,彩帶上掛著各式各樣的彩珠。已知彩珠有n個,分為k種。簡單的說,可以將彩帶考慮為x軸,每乙個彩珠有乙個對應的座標...

BZOJ1293 SCOI2009 生日禮物

標籤 單調佇列 description 小西有一條很長的彩帶,彩帶上掛著各式各樣的彩珠。已知彩珠有n個,分為k種。簡單的說,可以將彩帶考慮為x軸,每乙個彩珠有乙個對應的座標 即位置 某些座標上可以沒有彩珠,但多個彩珠也可以出現在同乙個位置上。小布生日快到了,於是小西打算剪一段彩帶送給小布。為了讓禮物...