SCOI2009 生日禮物

2021-09-24 19:53:14 字數 1312 閱讀 4722

傳送門

本來想用二分的,

讀完資料之後,又發現不用了。

然而需要開多乙個陣列p

pp記錄顏色最近出現的位置,以便進行玄學操作

當達成目標(now

==en

dnow==end

now==e

nd)時,

if

(now==end)

while

(l.col]

!=a[l]

.p)++l;

因為a[l

].co

la[l].col

a[l].c

ol最近出現的位置不是a[l

].

pa[l].p

a[l].p

,那麼證明在a[l

].

pa[l].p

a[l].p

之後還有a[l

].co

la[l].col

a[l].c

ol出現,不影響now

nowno

w的結果,因此可以刪去。

貌似除了這個沒有什麼奇奇怪怪的東西了。

#include

#include

#include

#include

#include

#define ll long long

#define gc getchar()

using

namespace std;

const

int n=

1e6+10;

inline

voidqr(

int&x)

while

(c>=

'0'&&c<=

'9')

x*=f;

}voidqw(

int x)

ll b[61]

;struct node

a[n]

;int p[61]

;int q[n]

;bool

cmp(node a,node b)

intmain()

sort

(a+1

,a+n+

1,cmp)

;int l=

1;ll ans=

1e10

;for

(int i=

1;i<=n;i++)}

qw(ans)

;puts(""

);return0;

}

SCOI2009 生日禮物 雙指標

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

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軸,每乙個彩珠有乙個對應的座標...