G I Ý PTIT Summer Round 3

You might also like

You are on page 1of 4

Mt vi gi PTIT Summer Round 3

Bi A: B kp luyn rng
Tham lam.
Vi ch s chin u s, T s chn nh vi cc con rng m T c kh nng thng tng cng
sc mnh trc. n thi im no vn cn rng m T khng nh bi c th T thua,
ngoi ra T thng.
Bi B: Sn bay
Tham lam.
Vi trng hp ly ln nht, mi ngi khc s chn my bay cn gh trng v s gh l ln
nht. Trng hp min tng t, sau mi lt cp nht li s gh.
C th s dng cu trc d liu nh multiset hay priority queue ca STL d dng trong vic
x l hn.
Bi C: Tng ln nht
Gi F[i][j] l gi tr ln nht ca hm f(X) vi X l cc s khng ln hn s c biu din nh
phn s[0..i]. S X c bit[i] = j.
Xt s[i] =1, nu j = 0 => F[i][j] = a[0] + .. a[i-1],
nu j =1 => F[i][j] = a[i] + max(F[i-1][0], F[i-1][1]);
Xt s[i] =0, nu j =1 => F[i][j] = - v vng,
nu j = 0 th F[i][j] = max(F[i-1][0], F[i-1][1]).
Bi D: Domino
Gi R[i] l v tr cui cng s nu nh ta lm qun domino th i. u tin cn sp xp cc
qun Domino theo th t x tng dn.
Chy ngc t di ln, vi qun domino th i,phm vi nh hng ca n l t vtr i+1 ti
i+h[i]-1. Ta cn tm x sao cho R[x] l gi tr ln nht trong R[i+1] .. R[i+h[i]-1].
C nhiu cch x l, chng hn nh s dng Interval tree, RMQ hay tnh tin khung ca s.
Bi E: Bn tng
Bi ton khng qu kh. bi c cht b nhm ln. Ch nn nhp ht tt c d liu cc lt
bn trc khi x l trnh trng hp game b kt thc qu sm, break khi testcase trong khi
cha nhp ht d liu ca testcase .
Bi F: Vn cy
Bng cch chun b trc, ta c th d dng tnh c tng cc s trong hnh ch nht (i,j) ti
(u,v) vi chi ph O(n^2).
D thy c 2 kiu cp ghp hnh ch nht. Xt trng hp 1 nh hnh v, trng hp cn li
tng t:



Ti v tr (i,j) l giao ca 2 hnh ch nht, nu s dng 4 vng for (ln lt cho cc di cnh
hnh ch nht), cch lm ny s c phc tp O(n^6).
ci thin thut ton, ta s tnh trc cc hnh ch nht loi 1 c im phi di l (i, j). Gi
V[i][j] l tp hp lu li tng ca cc hnh ch nht c kt thc ti (i,j). Nh vy, vi mi hnh
ch nht loi 2 c nh tri trn bng (i+1, j+1) v c tng bng sum2, ta s m xem c bao
nhiu hnh ch nht loi 1 c tng bng sum2 bng cch m s lng gi tr sum2 xut hin
trong tp hp V[i][j].
phc tp thut ton O(n^4 log n). X l tt phn m c th gim xung cn O(n^4).
Bi G: Sa li chnh t
Ch cn tnh ton s sai khc gia cc t gi vi t mu, sau sp xp theo th t tng dn l
xong.
Bi H: ng ua
Tm co hnh bao ngoi li khng phi l vn , v ly tm u cng nh nhau c, cc hnh
bao trong (sau khi c co li) u ging nhau v ch khc nhau v v tr m thi, khng nh
hng g n hnh bao ngoi.

1
2
Gi C l chu vi ca ng ua ban u, r l rng ng ua. Ta c phng trnh:
C.f + di cc cung = C.
T hnh v, ta thy tng di cc cung = r*tng cc gc ngoi ca hnh bao trong. Ta c nh
l tng cc gc ngoi ca mt a gic li bng 360 (bn c t tm hiu thm), nn tng
di cc cc cung trn s bng 2*pi*r, t y d dng tm ra c h s f.
Bi I: Ci ti
Tham lam.
Sp xp cc vin kim cng theo u tin gi tr gim dn, khi lng tng dn. Ln lt ly vin
kim cng c gi tr ln nht v khi lng nh nht b vo chic ti c kch thc nh nht v
c th cha c n.
Cu trc d liu multiset s kh hu ch trong bi ton ny, hoc c th s dng cy BIT.
Bi J: Ni im en trng
Sweepline + cht nh phn + cy nh phn: phc tp O(n log n log n).
Cht nh phn tm v tr first u tin tha mn cc on thng t 1 ti first-1 khng c cp
no giao nhau. S dng cy nh phn lu cc on thng duyt.
Pseudo code hm kim tra check(mid) nh sau:
sweepLineIntersection(Points[0..2n-1]):
1. Sort Points[] from left to right (according to x coordinate)

2. Create an empty Self-Balancing BST T (such as AVL, Red black tree, Splay
tree...)

// Process all 2n points
3. for i = 0 to 2n-1
if(Points[i].lineId <= mid)
// If this point is left end of its line
if (Points[i].isLeft)
T.insert(Points[i].line()) // Insert into the tree
// Check if this points intersects with its predecessor and successor
// pred: the line that go above current line
// succ: the line that go below current line
if ( doIntersect(Points[i].line(), T.pred(Points[i].line()) )
return true
if ( doIntersect(Points[i].line(), T.succ(Points[i].line()) )
return true

else // If it's a right end of its line
// Check if its predecessor and successor intersect with each other
if ( doIntersect(T.pred(Points[i].line(), T.succ(Points[i].line()))
return true
T.delete(Points[i].line()) // Delete from tree
4. return False
Ton t so snh < gia 2 on thng lu trong cy nh phn: on thng a < on thng b (on
thng a nm di on thng b), c tnh bng im bn tri ca on thng a nm bn di
on thng b hay khng? Tuy nhin, php ton < khng ng nht. a < b khng hon ton suy
ra c iu ngc li l b > a. Chng hn trng hp sau:

y ta c a < b v b < a. Nh trong bi ton trn, on thng b c xt sau on thng a, nn
b < a. y s l vn khi chng ta tm on thng nm ngay di v ngay trn on thng ang
xt.
Tham kho thm ti: http://web.engr.illinois.edu/~jeffe/teaching/373/notes/x06-sweepline.pdf

You might also like