You are on page 1of 3

Mt vi gi cho PTIT round 1.

Bi D: Hnh trnh c bit.


Thut ton: Quy hoch ng. phc tp O(n^2). iu kin ca To a ra, danh sch thm DS c dng = dy nhn gim dn + dy nhn tng dn, giao ca 2 dy l nh nhn 1: SEG1(gim dn) + nh 1 + SEG2(tng dn). Chng minh: Thm nh A bc th i, nu nh A thuc nhm dy 1, cc nh c nhn nh hn A s nm v tr i+1 tr i, tc l cc nh c nhn nh hn A s c thm sau. Nu nh A thuc nhm 2, cc nh c nhn nh hn A s nm v tr thuc on 1-> i-1, c ngha l chng c thm trc. V vy, ly mc l nh 1, push 1 vo DS. nh 2 s c thm trc hoc thm sau nh 1, nn y n vo tri hoc phi ca DS, nh 3 tng t, y vo tri hoc phi ca danh sch. ... Thc hin thao tc trn cho ti nh n. T y xy dng ra cng thc quy hoch ng. Gi F[u][v] l ng i ngn nht vi DS c dng : u-> .. ->1->..->v. (F[u][v] = F[v][u]). FOR( thao tc y nh nhn i vo DS){ Loi 1: y i sang bn tri ca DS, DS mi c dng i, i-1, ..., 1, ... j Loi 2: y i sang bn phi ca DS, DS mi c dng i-1, ..., 1, ..., j, i. }

Bi F: Thu hoch sa.


Thut ton: tm kim nh phn. Low[i] v high[i] l mc nhit lnh v nng m con b th i chu c. Gi S l tp hp tt c cc mc nhit (gm tt c cc low[i] v high[i]). Vi mi phn t t ca S, dng tm kim nh phn tnh s lng cc con b c low[i] < t v high[i] > t, t cp nht kt qu.

Bi G: Con b th K.
Khi to danh sch gm m loi tnh t, mi loi tnh t c d[i] tnh t khc nhau v c sp xp theo th t tng dn. Gi A l tp hp tt c cc con b, B l tp hp cc con b b loi (N con b trong danh sch ca nng dn John), C l tp hp cc con b m nng dn John c.

Xy dng truy vn tm xu th i trong tp A l xu no bng quy hoch ng. Xu th K trong tp C (xu s cn tm), l xu th H trong tp A sao cho: H (s xu trong B <= s) = K.

Bi H: So snh chui con.


Thut ton: Interval tree + Hash + Binary index tree. phc tp: nlogn Cho xu s = s1 s2 s3 ... s_n; xu t = t1 t2 t3 ... t_n. Biu din trong h c s 10, t gi tr ca s = 10^(n-1)*s1 + 10^(n-2)*s2 + ... + s_n = V1; Gi gi tr trn l hash(s) = V1, hash(t) = V2; 2 xu t v xu s s bng nhau khi v ch khi V1 = V2. Tuy nhin, gi tr ca V1 s rt ln, v vy s c ly phn d theo 1 s nguyn t ln no (10^9+7 chng hn). Xu s == t V1 % MOD = V2 = MOD. Cn vi php ton ngc li, V1 % MOD == V2 % MOD, c th coi xu s = t. Xc sut s != t l rt nh, tng chnh xc c th thay base 10 bng mt base l s nguyn t). Trong bi ton ny, dng hash theo chiu ngc s thun tin hn, tc ta s biu din hash(s) = s1 + 10^1*s2 + ... + 10^(n-1)*s_n. Gi P l xu gc ban u, Q l xu thu c sau mi thao tc xa b 1 k t nh trong bi. Vi mi thao tc xa, ta vn s gi nguyn xu P, coi v tr xa ny l mt im m, khng tnh n vo gi tr hash cho xu con nu nh xu con c cha im m. Truy vn kim tra 2 xu con s=[l, r] v t=[L, R] (trn xu Q) c bng nhau hay khng, s c th hin bng php ton ly gi tr hash(s) vi gi tr hash(t). Tuy nhin, nu trong on [1,l] c cha im m, th v tr bt u ca xu con s trn P l newl sao cho: s im thc t newl s im m [1->newl] = l. Vic tm v tr newl c th c thc hin bng php tm kim nh phn, v cy BIT qun l s im m. Tng t cho r, L, v R. i vi thao tc xa i mt k t v tr u trn xu Q, cng cn phi tm v tr mi ca n trn xu P ban u, ri bin n thnh im m . Cy IT qun l node vi 2 thnh phn: gi tr hash v di xu. Node[i] qun l on [l,r] cho bit gi tr hash ca xu con bt u t k t th l v kt thc k t r trn xu P. Thao tc updateIT, node[i] c 2 con l node[i*2] v node[i*2+1]. Hash(Node[i]) = hash(con1)*con1.length + hash(con2).

Bi I: Tour du lch.
Thut ton: Dijkstra + Quy hoch ng trng thi. Tp S = {s_1, s_2, ..., s_k} l tp cc nh cn phi thm. Bc 1: Tm ng i ngn nht gia tt c cc cp nh trong tp S, xy dng nn mt th mi vi tp nh l S v tp cnh l cc khong cch ngn nht va tm c. Bc 2: Cn tm 1 hon v ca dy {s_1, s_2, ... , s_k} sao cho ng i l ngn nht. Vi k nh, c th sinh tt c cc hon v ca tp hp trn ra, vi mi trng hp, ta s tnh ton chi ph ng i v update kt qu. phc tp l k!. Quy hoch ng trng thi: Mng F[i][t] (kch thc bng F[k][2^k]) , t c biu din di dng nh phn l (v d bng) 101.... 01, th hin chi ph ti u khi thm nhm nh c cc nhn bng v tr bit c gi tr 1 trong biu din ca t, v nh i l nh kt thc ca ng i qua nhm nh . Biu din nh phn ca t th hin nhm nh thm, t c gi l trng thi. Vi t = 2^k 1, tt c cc bit u bng 1, y l trng thi kt thc. V d t = 11 = 1011(2), F[2][11] l chi ph ti u khi thm c cc nh 4, 2 v 1, v nh 2 l nh kt thc ca ng i ti u . Vi vic thm nhm nh {4,2,1}, nh 2 l kt thc ca ng i, c 2! = 2 cch l 4, 1, 2 v 1, 4, 2. Vi mi mt trng thi, ta s ti u trng thi mi (t tp nh c, thm thm 1 nh mi). Kt qu thu c vi cc F[i][2^k-1], th hin chi ph ti u sau khi thm tt c k nh, v nh i l nh c thm cui cng. Cc bn c th tham kho thm cc ti liu v quy hoch ng trng thi, thut ton hash, interval tree, binary index tree trn mng. Have fun!

You might also like