You are on page 1of 4

Mt vi gi PTIT Summer Round 1

Problem A: i ng no.
Hm ccw (counter-clockwise) gia 3 im A, B, C. ccw(point A, B, C) cho bit hng quay ca
vector AB ti vector AC.
Hm ccw c tnh bng tch c hng ca vector AB v AC.
Nu ccw = 0, c ngha l 3 im thng hng (gc quay bng 0).
Nu ccw > 0, c ngha l quay sang tri (ngc chiu kim ng h).
Nu ccw < 0 c ngha quay sang phi (theo chiu kim ng h).
Hm ccw l mt trong nhng cng c rt hu hiu trong cc bi ton hnh hc, chng hn nh
bi ton tm bao li ca mt tp hp im cho trc.
Problem B: Hon v.
Cn tm xem nhng s no cha xut hin trong hon v th thay n bng php bin i.
Problem C: Cc triu i.
Gii thut quy hoch ng.
Gi F[i][j] l tn triu i di nht c th bt u bng ch ci i v kt thc bng ch ci j.
Gi y, khi ta c mt ci tn S mi, xt ci tn ny c th ghp vi triu i no m ang c
kt thc trng vi ch ci u ca S. T y ta xy dng c cng thc QH.
Kt qu: max (F[i][i]) vi i l cc ch ci t a ti z.
Problem D: on con c K phn t bng nhau.
Gi s on con ny bt u ti v tr i v j l v tr u tin m dy a[ij] tha mn bi r
rng cc v tr sau j s tha mn.
Xt on con tip theo, l dy t a[i+1] ti a[k] vi k >= j+1 tha mn. K tha kt qu t on
con trc, ta ch cn duyt t v tr j+1 k. T tng bi ton ny l duyt theo khung ca s.
kim tra xem on c K phn t bng nhau khng, ta s m s lng ca mt gi tr trong
on, c th dng map hoc ri rc ha d liu thc hin.
Bi E: in tm .
Ch , hin th k t \ ta phi vit l \\. Hoc c th in ra k t \ da vo m ASCII ca n.
Bi F: Nm .
Bi ton khng kh. Ch cn vit mt hm quy m t cc bc i ca vin t trn xung
di nh m t ca bi.
Bi G: Tr chi vi nhng con s.
Trng hp 1: Nu X >= 10^6, s c ti a B/X (max = 10^5) s l bi ca X. V vy, s dng
mt vng FOR t A ti B tm tt c cc s chia ht cho X, sau kim tra thm iu kin cc
ch s phi tha mn xut hin trong tp hp yu cu.
Trng hp 2: X < 10^6, quy hoch ng c nh.
Gi dp(n, prefix) l s bi ca X nm trong on [A, B] vi tin t l prefix v cn phi thm
vo n ch s. Vi mi cp n, prefix, ta cn xt cc s nm trong on [prefix * 10^n (cn di),
prefix*10^(n+1)-1 (cn trn)].
Cng thc QH:
FOR(i,0,9) if(isNum[i]) dp(n, prefix) += dp(n-1, prefix*10+i).
Trong isNum[i] tr v true nu i l mt trong nhng ch s ca tp hp cho.
Nu A <= cn di v cn trn <= B (on ang xt l on con ca on [A, B]), khi cc gi
tr prefix c phn d ging nhau vi X s c cng s lng bi ca X, nn ta s s dng nh
du phn ny tng tc tnh ton.
Bi H: Hnh ch nht 3D.
Gii hn nh, n <= 1000 nn hon ton c th x l bng 2 vng FOR kim tra tng cp hnh
ch nht c giao nhau hay khng? Trong mt phng 2 chiu, iu kin 2 hnh ch nht c ta
cp nh tri di, phi trn A(xA, yA), B(xB, yB) v C(xC, yC), D(xD, yD) khng giao nhau
l:
min(xA, xB) > max(xC, xD) || max(xA, xB) < min(xC, xD) || min(yA, yB) > max(yC, yD) ||
max(yA, yB) < min (yC, yD).
Vi hnh ch nht trong khng gian 3 chiu, thm iu kin v ta trn trc z tng t nh
trn l .
Vi gii hn ln hn, cn s dng BIT 2D v k thut sweep line . Gi cc hnh ch nht c
chung ta trn trc Ox l nhm X, tng t vi nhm Y, Z. m s lng hnh ch nht giao
nhau trn tng cp X-X, Y-Y, Z-Z (loi 1) v X-Y, Y-Z, Z-X (loi 2).
i vi loi 1, gi s xt cp X-X (mt phng x = x1), ta cn m c bao nhiu cp hnh ch
nht giao nhau trn mt phng x = x1?
Vi loi 2, gi s xt cp X-Y(mt phng x = x1 v y = y1), chiu hcn loi Y ln mt phng x =
x1, s ch cn l mt on thng. Xt tt c cc hnh ch nht nm trn mt phng x = x1, ta cn
tm xem c bao nhiu hcn giao nhau vi on thng kia?
Bi I: m s min.
Hnh hc + th phng.
nh l Euler trong th phng: n-m+r = 2, trong n l s nh, m l s cnh v r l s min
to bi th phng ny.
Vi n hnh ch nht cho, tm tt c cc giao im. Sau dng nn th mi t tt c cc
im c trn mt phng. Duyt DFS tm cc thnh phn lin thng, vi mi thnh phn lin
thng, p dng cng thc Euler tm ra s min.
Bi J: Dy tng di nht.
3 bi ton sau k tha nhau.
Bi ton trn khng gian 1 chiu: Dy con tng di nht (LIS).
Gi dp[i] l di dy con tng di nht kt thc ti phn t a[i].
Gi L[i] l tp hp tt c cc phn t x c dp[x] = i. Thc ra ta ch cn quan tm ti gi tr nh
nht trong tp hp L[i].
Duyt t u ti cui, ti phn t th i, ta cn cht nh phn, tm di leng ln nht sao cho tp
hp L[leng] != rng, sau push a[i] vo tp hp L[leng+1].
di ca dy con tng di nht bng ch s i ln nht sao cho L[i] c t nht 1 phn t.
Khng gian 2 chiu: tm mt tp hp sao cho c th to thnh dy tng di nht:
http://vn.spoj.com/problems/MCONVOI/
u tin cn sort cc im theo th t x tng dn.
Gi dp[i] l di dy tng di nht kt thc ti im a[i], L[i] l tp hp tt c cc im x c
dp[x] = i.
Vi bi ton trong khng gian 1D, coi mi im gm 2 thnh phn, th vi mi honh x ch
c mt tung y duy nht. iu khc bit l trong khng gian 2D, c th c nhiu im c
chung honh x.
Trong tp hp L[i], ta cng ch cn quan tm ti phn t nh nht, v thnh phn x c sp
xp theo th t tng dn nn ch cn quan tm ti im c thnh phn y nh nht trong tp hp
L[i].
Mt trong nhng cch x l kh hiu qu l sort cc im c chung thnh phn x theo th t
gim dn ca thnh phn y. Khi s khng phi x l trng hp trng thnh phn x do thao
tc push a[i] vo tp hp L[leng+1].
Khng gian 3 chiu:
trnh trng hp x l trng, trc ht cng sort cc im theo u tin x tng dn, y gim
dn, z gim dn.
Ti im a[i], cn tm L[leng] vi leng ln nht sao cho L[leng] c mt phn t P no tha
mn P.x < a[i].x && P.y < a[i].y && P.z < a[i].z .
Ch quan tm ti thnh phn y v z, ta s thy L[leng] khng tn ti 2 im P, Q no sao cho P <
Q. (Tht vy, nu tn ti im P v Q theo th t sao cho P.y < Q.y v P.z < Q.z, do P xut hin
trc Q nn P.x < Q.x. Do , im Q s phi nm trong tp hp L[leng+1] ch khng phi tp
hp L[leng]).
gii quyt c bi ton, ta cn tng tc cho thao tc kim tra v push im a[i], nh vy
cn phi duy tr tp hp L[leng] theo th t. V ch cn quan tm ti cc im c thnh phn y, z
nh nht, mi ta y ch lu li mt im duy nht.
Thao tc update khi push im a[i] vo tp hp L[leng]: cn xa b cc im Q >= a[i].

You might also like