You are on page 1of 230

Phan Cng Minh

H S Vit Anh , Ng Vn Hong , Bi Minh Tr , Nguyn Cnh Ton.

Vinh 9-2009

Mt s vn ng ch trong mn tin hc

LI NI U
Vi mong mun tng hp nhng thut ton hay, cc cch gii c o trong qu
trnh hc tp ngn ng lp trnh Pascal. Nhm tc gi
Phan Cng Minh : Hc sinh chuyn Tin A2K35
H S Vit Anh , Ng Vn Hong , Bi Minh Tr v Nguyn Cnh Ton Hc sinh
chuyn Tin kha 36
vit cun ti liu Mt s vn ng ch trong mn tin hc.
Trong phm vi ni dung ca ti liu ny khng cp n cc kin thc, thut ton
c bn m tp trung vo cc k thut, thut ton m rng cng nh cch kp hp, ng
dng chng gii quyt cc bi ton tin, c bit l cc dng bi thng gp trong cc
k thi.
Hi vng cun ti liu ny c th gip ch cho bn c, nht l cc bn hc sinh
trong i tuyn trong vic hc tp , bi dng Tin hc. Rt mong nhn c s ng gp
ca cc bn cun ti liu hon thin hn.
Thay mt nhm tc gi:
Phan Cng Minh
Email: congminh91@yahoo.com

MC LC
Li ni u
Duyt nhnh cn
Duyt u tin
Tm kim chui
X l bit
Quy hoch ng trng thi
Quy hoch ng v tr cu hnh
Quy hoch ng trn cy
Sp xp topo v ng dng
Pht hin chu trnh
Chu trnh Euler
Chu trnh m v ng dng
T mu th
Thut tan Ford Bellman kt hp Queue vng
Thut ton Dijtra vi cc nh o
Mt s ng dng thut ton Dijtra
Lung Mincost
Cc cng thc hnh hc
Mt dng bi Quy hoch ng
Trie Tree v ng dng
Duyt bng cch chia i tp hp
Mt s bi ton v cy khung
Tm kim nh phn v ng dng
Xp lch cng vic
X l s nguyn ln v Hm Mod
Heap v ng dng
Interval Tree
Binary Index Tree
Cc li trong Pascal
Kinh nghim thi c

2
3
8
12
15
21
26
35
44
49
53
56
71
81
84
92
99
104
107
117
123
127
133
137
167
173
181
190

Mt s vn ng ch trong mn tin hc

VN : DUYT NHNH CN.


Duyt nhnh cn l phng php ph bin s dng gii quyt mt s lng ln cc
bi ton tin, c bit l cc bi ton thc t. Cu trc ca chng trnh duyt nhnh cn
c m t s lc nh sau:
Chn mt nghim ca bi ton lm cn (c)
Thc hin bc duyt th i
- Nu i l bc sau bc cui cng th kim tra nghim mi tm c
v cp nht cn (c), ghi nhn mt nghim tt hn ca bi ton.
- Sau bc duyt th i, kim tra nghim s tm c c kh nng tt
hn cn (c) hay khng - gi l iu kin nhnh cn. Nu c gi thc
hin bc th i+1. cn khng th quay li bc i-1.

Hai yu t quan trng ca chng trnh l cn (c) khi to ban u v iu kin


nhnh cn. Vic chn mt cn (c) v iu kin kim tra nhnh cn tt s gip bc duyt
trnh i vo nhng hng m chc chn khng tm ra c kt qu tt hn. iu c nh
nh hng trc tip n hiu qu ca chng trnh.
Di y ta xt mt s cch kim tra nhnh cn hay dng thng qua cc bi ton c th.
Bi ton:
Chu trnh Hamilton nh nht.
Cho th v hng G. Mi cnh c gn mt trng s nht nh (ln hn 0), tm
mt chu trnh i qua tt c cc nh, mi nh mt ln v c tng trng s nh nht.
Gi : Duyt nhnh cn l phng php duy nht gii quyt bi ton nu trn.
Chu trnh i qua N nh s bao gm N cnh. Gi s ti bc th i, i qua k cnh v
cn n-k cnh na cn phi i qua th iu kin i tip bc th i+1 l
s(k) + (n-k)*minc < smin
Trong :
- s(k) l tng chi ph ca k cnh i qua
- minc l trng s ca cnh nh nht trong s cc cnh cn li cha c i qua
ca th.
- smin l tng trng s ca mt chu trnh tm c nhng cha ti u. C th
khi to smin ban u l mt s v cng ln.
Bi ton:
Xp valy.
Mt va ly c th cha ti a W n v trng lng. C N loi vt, s lng mi
loi khng hn ch. Loi vt th i c trng lng Ai v c gi tr Ci. Hi nn chn
nhng loi vt no v s lng bao nhiu xp vo va ly sao cho:
- tng trng lng ca cc vt khng vt qu gii hn W ca valy
- tng gi tr ca cc vt l ln nht
Gi : Vi mi loi vt i, gi Ti l gi tr ring ca n: Ti = Ci / Ai. Sau sp cc loi
vt theo th t gim dn ca Ti.
Phng php duyt nhnh cn ti mi bc duyt loi vt i, ta ly k vt loi
ny, khi iu kin duyt tip loi vt i+1 (iu kin nhnh cn) l:
3

Mt s vn ng ch trong mn tin hc

Trong :
-

k*Ai <= w
s(i) + k*Ci + (w - k*Ai)*Ti+1 > smax
w l trng lng m valy c th cha thm sau bc duyt loi vt i-1
s(i) l tng gi tr hin ang c ca valy sau bc duyt loi vt i-1
smax l tng gi tr valy ca mt cc xp tm c nhng cha ti u. C
th khi to smax ban u bng 0.

Bi ton:
Xu ABC.
Tm mt xu ch gm cc k t A,B,C sao cho
- C di N cho trc (N<=100)
- Hai an con bt k lin nhau u khc nhau (on con l mt dy cc k t
lin tip ca xu).
- C t k t C nht
Gi : Ta c nhn xt trong 4 k t lin tip lun c t nht mt k t C.
Do iu kin nhnh cn ti bc duyt k t i ca xu l
- xu c i k t to c khng c 2 on con lin tip trng nhau.
- s(i) + (n-i) div 4 < smin
Trong
- s(i) l s k t C dng to xu i k t
- smin l s k t C ca mt xu khc tha mn 2 yu cu u ca bi nhng
cha ti u. C th khi to smin ban u l mt s ln.
Luyn tp:
Bi ton:
Tour du lch r nht (TOUR)
Mt khu thng cnh gm n im nh s t 1 ti n (n 100) v m ng i hai
chiu gia cc cp a im , chi ph i trn cc ng i l bit trc ( 10000).
Mt Tour du lch l mt hnh trnh xut pht t mt a im i thm 2 a im khc
v quay tr v im xut pht, ngoi tr a im xut pht, khng a im no b thm
ti hai ln. Chi ph ca mt Tour du lch l tng chi ph cc qung ng i qua.
Yu cu: Hy tm Tour du lch c chi ph r nht.
D liu: TOUR.INP
 Dng 1: Ghi hai s nguyn dng n, m
 m dng tip theo mi dng c dng x y c. Cho bit c ng i trc tip ni a
im x vi a im y v chi ph i qung ng l c.
Kt qu: TOUR.OUT
 Dng 1: Ghi s 1 nu nh tn ti hnh trnh theo yu cu, ghi s 0 nu khng tn
ti hnh trnh.
Nu dng u tin ghi s 1:
 Dng th 2 ghi chi ph ca tour tm c
 Dng th 3 ghi s k l s a im ti thm
4

Mt s vn ng ch trong mn tin hc

 Dng th 4 gm k s, s th i l a im ti thm th i trong tour, quy c a


im thm u tin l a im xut pht, a im thm th k (a im cui
cng) l a im m t quay tr li im xut pht kt thc hnh trnh.
Cc s trn mt dng ca Input/Output File c ghi cch nhau t nht mt du cch.
V d:
TOUR.INP
5 10
132
242
352
412
522
1 2 10
239
3 4 10
458
519

Bi ton:

TOUR.OUT
1
10
5
35241

1
9

10
2

2
2

2
8

10

Robot cu ha - HSG QG 2007 (QBROBOT)

Trn mt mng li giao thng c n nt, cc nt c nh s t 1 n n v gia


hai nt bt k c khng qu mt ng ni trc tip (ng ni trc tip l mt ng
hai chiu). Ta gi ng i t nt s n nt t l mt dy cc nt v cc ng ni trc
tip c dng:
s = u1, e1, u2,..., ui, ei, ui+1, ..., uk-1, ek-1, uk = t,
trong u1, u2, , uk l cc nt trong mng li giao thng, ei l ng ni trc tip
gia nt ui v ui+1 (khng c nt uj no xut hin nhiu hn mt ln trong dy trn, j = 1,
2, , k).
Bit rng mng li giao thng c xt lun c t nht mt ng i t nt 1 n
nt n.
Mt robot cha y bnh vi w n v nng lng, cn i t trm cu ho t ti
nt 1 n ni xy ra ho hon nt n, trong thi gian t nht c th. Thi gian v chi ph
nng lng robot i trn ng ni trc tip t nt i n nt j tng ng l tij v cij (1
i, j n). Robot ch c th i c trn ng ni trc tip t nt i n nt j nu nng
lng cn li trong bnh cha khng t hn cij (1 i, j n). Nu robot i n mt nt c
trm tip nng lng (mt nt c th c hoc khng c trm tip nng lng) th n t
ng c np y nng lng vo bnh cha vi thi gian np coi nh khng ng k.
Yu cu: Hy xc nh gi tr w nh nht robot i c trn mt ng i t nt 1
n nt n trong thi gian t nht.
D liu: QBROBOT.INP
 Dng u tin cha mt s nguyn dng n (2 n 500)
 Dng th hai cha n s, trong s th j bng 1 hoc 0 tng ng nt j c hoc
khng c trm tip nng lng (j = 1, 2, , n)
5

Mt s vn ng ch trong mn tin hc

 Dng th ba cha s nguyn dng m (m 30000) l s ng ni trc tip c


trong mng li giao thng
 Dng th k trong s m dng tip theo cha 4 s nguyn dng i, j, tij, cij (tij, cij
10000) m t ng ni trc tip t nt i n nt j, thi gian v chi ph nng
lng tng ng.
Hai s lin tip trn mt dng trong file d liu cch nhau t nht mt du cch.
Kt qu: QBROBOT.OUT
 Ghi ra s nguyn dng w tm c.
V d:
QBROBOT.INP
4
0110
5
1 2 5 4
1 3 4 3
1 4 9 4
2 4 4 1
3452

QBROBOT.OUT
3

Gi : iu kin u tin l ng i c thi gian t nht, do , cho w c gi tr l mt s v


cng ln, sau DIJTRA tm ng i ngn nht (c thi gian t nht). Gi D[i] l di
ng i ngn nht t i n n.
Cht nh phn gi tr w, vi mi w, tm ng i n n m bo robot lun c nng
lng trn ng i. ng thi ng i phi l ngn nht.
Gi s ang nh u, nng lng ang cn l w, thc hin bc duyt th i qua
nh v nu
- (u,v) l mt cnh
- Hoc u l trm tip nng lng, hoc nng lng w >= cu,v
- s(u) + tu,v + d[v] = d[1] trong s(u) l tng thi gian i t 1 n u
Bi ton:
Tm ng i (ROADS)
C N thnh ph 1..N ni bi cc con ng mt chiu. Mi con ng c hai gi tr:
di v chi ph phi tr i qua. Bob thnh ph 1. Bn hy gip Bob tm ng i
ngn nht n thnh ph N, bit rng Bob ch c s tin c hn l K m thi.
D liu: ROADS.INP
 Dng u tin ghi t l s test.
Vi mi test:
 dng u ghi K (0 K 10000).
 Dng 2 ghi N, 2 N 100.
 Dng 3 ghi R, 1 R 10000 l s ng ni.
6

Mt s vn ng ch trong mn tin hc

 Mi dng trong N dng sau ghi 4 s nguyn S, D, L, T m t mt con ng ni


gia S v D vi di L ( 1 L 100) v chi ph T (0 T 100). Lu c th
c nhiu con ng ni gia hai thnh ph.
Kt qu: ROADS.OUT
 Vi mi test, in ra di ng i ngn nht t 1 n N m tng chi ph khng
qu K. Nu khng tn ti, in ra -1.
V d:
ROADS.INP
2
5
6
7
1 2 2 3
2 4 3 3
3 4 2 4
1 3 4 1
4 6 2 1
3 5 2 0
5 4 3 2
0
4
4
1452
1210
2311
3410

ROADS.OUT
11
-1

Bi ton:
Romeo and Juliet
Romeo v Juliet b giam trong mt m cung hnh ch nht kch thc MxN
vung. M cung c hai loi : t do v cm. Trong qu trnh i trong m cung, ti mi
bc ta ch c th di chuyn n t do k cnh theo mt trong bn hng: ng (E), Ty
(W), Nam (S), Bc (N).
Ban u, Romeo ti [1,1] v Juliet ti [M,N]. thot khi m cung,
Romeo cn di chuyn n [X,Y] v Juliet cn di chuyn ti [Z,T].
cu cp tnh nhn, Shakepeare a cho bn mt cm mang l xu D ch gm
cc k t E, W, N, S th hin mt lot cc bc di chuyn v cho bit c th chn cho mi
ngi mt s bc di chuyn theo th t cho trong dy, mi bc di chuyn ch c
mt ngi chn v mi bc di chuyn trong dy u phi c chn th mi ngi mi c
th i n ch ca mnh. Yu cu bn hy chn cho mi ngi dy bc di chuyn
thch hp. Nu c nhiu li gii ch cn a ra mt li gii.

Mt s vn ng ch trong mn tin hc

0 0 1 0 0
0 0 0 1 1
0 0 0 0 0
1 0 0 0 0
0 1 0 0 0
V d vi m cung nh bng bn k hiu 1 l cm, 0 l t do, Romeo cn n
[2,2], Juliet cn n [2,2], Juliet cn n [4,4] v xu D l SNEEWW th vic chn
cc bc di chuyn ca hai ngi c th vit di dng cc xu ch gm 2 k t R v J:
RJRRJR; c ngha l Romeo thc hin 4 bc di chuyn Nam (S), ng (E), ng (E),
Ty (W), cn Juliet thc hin 2 bc di chuyn Bc (N), Ty (W). Mt li gii khc cho
bi xu RJRRRJ.
D liu: ROJU.INP
 Dng th nht ghi hai s M, N (3<=M<=20, 3<=N<=60).
 Tip theo l M dng, dng th i trong M dng ny ghi N s 0 hoc s 1 th hin
tnh trng ca cc dng th I.
 Tip theo l mt dng ghi 4 s X, Y, Z, T
 Dng tip theo ghi s nguyn dng K (3<=K<=200) l di xu D. 
Dng cui cng ghi t u dng xu D.
Kt qu: ROJU.OUT
 Ghi ra t u dng mt xu C di K ch gm cc k t R v J th hin s la
chn cc bc di chuyn ca hai ngi. Ni r hn, nu k t th U ca xu C l
R/J c ngha l Romeo/Juliet chn bc di chuyn th U trong xu D.

Mt s vn ng ch trong mn tin hc

VN : DUT U TIN
Duyt l mt phng php kh mnh gii quyt phn ln cc bi tan tin hc.
Mt s bi c kch thc d liu ln i hi phi c th t u tin cc php duyt
nhanh chng tm ra kt qu. Di y ta xt mt s bi tan in hnh nh vy.
Bi ton:
M i tun
Cho bn c tng qut nxn v mt qun m (n 100). Hy ch ra mt hnh trnh ca
M xut pht t (x,y), i qua tt c cc cn li ca bn c, mi ng mt ln (lut i
ca m nh lut c vua).
Gi : Nu xem mi ca bn c l mt nh ca th th bi ton ny tng ng vi bi
ton tm ng i Haminton (ng i qua tt c cc nh v qua mi nh ng mt ln).
Thut ton duy nht cho bi ton ny l duyt quy quay lui.
Ti mi bc duyt,Gi s ta ang nh u, t nh u ta u tin i sang nh v c
cnh ni vi u m bc ca v l nh nht (nh ngha bc ca mt nh v l s nh ni vi
nh v m cha c thm).
A B C

D E F G H

1
2
3
4
5
6

7
8
Xt v d trn hnh, con m ang i c 4 bc v ang (7,G). T ny
con m c th nhy n 1 trong 3 tip theo l (6,E) - c bc l 6; (5,F) - c bc l 7;
hoc (5,H) - c bc l 3. Con m s u tin nhy c bc nh hn trc - l (5,H).
S u tin trong phng php duyt trn gip chng trnh chy nhanh hn rt
nhiu so vi khi duyt n thun. Tuy nhin vi trng hp bi ton v nghim (khng
c ng i Haminton) th chng trnh cng chy rt lu v phi duyt qua ht ton b
khng gian d liu. Do cn dng thm bin chn thi gian x l trng hp ny.
Bi ton:
Cp im gn nht
Trn mp phng to cho N im phn bit (N20000). Tm 2 im m khong
cch gia chng l ngn nht.
Gi : Nu duyt thng thng, thut ton mt O(N2) v chy rt lu vi N ln. S u tin
trong php duyt sau y gip thut ton chy trong thi gian cho php v cho kt qu
chnh xc vi phn ln cc test.
9

Mt s vn ng ch trong mn tin hc

Ta sp xp li cc im theo mt tiu ch no c lin quan n khang cch.


Chng hn ly thm mt im bt k nm ngoi tp im v sp li N im cho theo
th t tng (gim) dn khong cch n im ny. Hay sp tng (gim) N im theo
honh x. Hay sp tng (gim) N im theo tung y
Sau khi sp xp nh vy, vi mi im i, ta u tin xt cc im j trong khng gian
ln cn vi n trc - tc l nhng im gn im i trong danh sch sp xp. rng
ca khng gian ln cn (c th gi l khng gian tm kim) do ta t quy nh, khng gian
xt cng rng th chnh xc ca chng trnh cng cao nhng thi gian chy cng lu.
V d vi N=20000. sau khi sp xp li ta c dy cc im i1, i2, , i20000. vi
mi im ik, nu ta quy nh khng gian tm kim l 100 th ta ch xt khong cch ca ik vi
cc im ik+1, ik+2, , ik+100.
Vic sp xp cc im v chn khng gian tm kim hp l s gip chng trnh c
tin cy cao v chy trong thi gian cho php.
Ch : Bi ton trn cn c thut gii phc tp NlogN tuy nhin kh phc tp v
khng c ni y.
Bi ton:
Tng vect
Vect v cc php ton vi vect c s dng gii quyt nhiu bi ton trong
hnh hc, vt l, Ta c th biu din vect trong mt phng bi cp hai s ( x, y). Cc s x,
y c gi l cc to ca vect (xem hnh v minh ho).

Tng ca hai (hay nhiu hn hai) vect l vect m cc to ca n l tng ca


cc to tng ng ca tt c cc vect trong tng, ngha l tng ca n (n 2) vect
(x1, y1), (x2, y2), , (xn, yn) l vect (x, y) vi

i= 1

i= 1

x = xi , y = yi

Ta gi trng lng ca vect (x, y) l s w(x, y) = x2 + y2.


V d: Cho 3 vect (1, 3), (2, 5) v (4, 2), khi ta c tng ca chng l vect (1,
3) + (2,-5) + (4, -2) = (-1+2+4, 3-5-2) = (5, -4) c trng lng l 41.
Yu cu: Cho n vect trong mt phng: (x1, y1), ( x2, y2), , (xn, yn). Cn tm tp con (gm
t ra l hai phn t) ca tp cc vect cho vi trng lng ca tng ca tt c cc vect
trong n l ln nht.

10

Mt s vn ng ch trong mn tin hc

D liu: SUMVEC.INP
 Dng u tin cha s nguyn n ( 2 n 15000)
 n dng tip theo m t n vect cho: mi dng cha mt cp to ca mt
vect. Gi thit rng: Cc to l cc s nguyn c tr tuyt i khng qu
30000. Trong s cc vect cho khng c vect no l (0, 0). Cc s trn cng
dng c ghi cch nhau bi du cch.
Kt qu: SUMVEC.OUT
 Trng lng ca vect tng ca cc vect trong tp con tm c.
V d:

Gi : Nu duyt t hp cc vect thng thng th s c phc tp l O(2n) - khng


th chy vi n ln. Thut ton duyt u tin sau y ch mt O(n2) bng cch sp xp cc
vect theo gc hp vi tia Ox (ch gc hp ny c gi tr trong na khong [0;360) ).

Trong dy cc vect sp xp, ta u tin xt tng cc vect lin tip nhau.Do ch


cn duyt 2 bin chy i v j; sau kim tra tng cc vect an t vect i n vect j trong
dy sp xp.
y

11

Mt s vn ng ch trong mn tin hc

Luyn tp:
Bi ton:
Phng chy (FIRE)
i ph vi tnh hnh bin ng ca gi xng du, nc X quyt nh xy dng
mt kho d tr du vi quy m cc ln. Kho cha du s bao gm N b cha du hnh
tr trn m ta s biu din trn bn bng N hnh trn, hnh trn th i c ta l (Xi,
Yi) v bn knh Ri, cc hnh trn khng c im chung trong vi nhau (nhng c th tip
xc).
m bo an ton phng chy cha chy, ngi ta cn xc nh 2 b cha du gn
nhau nht tng cng cch ly khi xy ra ha hon.
Bit rng khong cch gia 2 b cha du th i v th j chnh bng khong cch gia
2 ng trn tng ng v bng Dij - Ri - Rj, trong Dij l khong cch Euclide gia 2
im (Xi, Yi) v (Xj, Yj).
Bn hy gip nhng ngi qun l tm ra 2 b cha du ny.
D liu: FIRE.INP
 Dng th nht ghi s nguyn dng N l s b cha du.
 Dng th i trong N dng tip theo ghi 3 s nguyn Xi, Yi, Ri l ta v bn knh
b cha du th i.
Kt qu: FIRE.OUT
 Gm 1 dng duy nht l khong cch ca 2 b cha du b nht tm c.
Gii hn:
 2 N 10000.
 |Xi|, |Yi| 106.
 0 < Ri 106.
 Kt qu ghi chnh xc n 4 ch s sau du phy.
V d:
FIRE.INP
3
001
402
553

FIRE.OUT
0.0990

12

Mt s vn ng ch trong mn tin hc

VN : TM KIM CHUI.
Bi ton: Cho chui A c di m, mt chui X c di n. Kim tra xem chui X xut
hin trong chui A ti cc v tr no.
Hng gii quyt:
Cch th nht: Duyt mi v tr i ca chui A, vi mi v tr kim tra chui X c xut hin
v tr ny hay khng. Thut gii c phc tp O(m*n). Mt thut gii tt hn ch mt
O(m+n):
Cch th hai: Thut ton Knuth-Morris-Pratt (KMP).

A
1

i+j-1

v c

Thut ton da vo mt cch kim tra kh trc quan nh sau: Ta c nh chui A v


di chuyn chui X trt theo chui A. Gi s chui X ang v tr i so vi chui A. xt
ln lt cc k t X1,X2Xn vi cc k t tng ng ca chui A: Ai,Ai+1Ai+n-1. Gi s
s khc nhau u tin xut hin v tr Xj <>Ai+j-1. Gi X1j-1 = u = Aii+j-2 Lc ny ta s
dch chuyn chui X mt an ngn nht tha mn:
- Phn u ca chui X trng vi phn cui ca Aii+j-2. Sau khi dch chuyn ,
v tr so snh tng ng vi Ai+j-1 l Xj. Ta c X1..j-1 trng vi phn cui ca
Aii+j-2 m Aii+j-2 = X1j-1 cho nn X1..j-1 trng vi phn cui ca X1j-1.
- Xj<>Xj
Do nu xt n v tr j m Xj <>Ai+j-1th ta cn quan tm n v tr j tha mn X1..j-1
di nht trng vi phn cui ca X1j-1 v Xj<>Xj.
S dng Next[j] c ngha Next[j] = j nu:
- X1..j-1 di nht trng vi phn cui ca X1j-1
- Xj<>Xj
Mng Next[j] c th khi to bng Quy hoch ng.
M t thut ton:

13

Mt s vn ng ch trong mn tin hc

procedure Init;
var
j, jj: integer;
begin
j := 1;
jj := 0;
Next[1] := 0;
while (j <= n) do
begin
while (jj > 0)and(X[j] <> X[jj]) do jj := Next[jj];
Inc(j);
Inc(jj);
if X[j] = X[jj] then Next[j] := Next[jj] else Next[j] := jj;
end;
end;
procedure Process;
var
i, j: integer;
Begin
Init
i := 1;
j := 1;
repeat
while (j > 0)and(X[j] <> A[i]) do j := Next[j];
Inc(i);
Inc(j);
if j > n then
begin
Writeln( xuat hien tai ,i - j + 1);
j := Next[j];
end;
until i>m;
End;

Luyn tp:
Bi ton:
Xu con (SUBSTR)
Cho xu A v xu B ch gm cc ch ci thng. Xu B c gi l xut hin ti v tr i
ca xu A nu: A[i] = B[1], A[i+1] = B[2], ..., A[i+length(B)-1] = B[length(B)].
Yu cu: Hy tm tt c cc v tr m B xut hin trong A.
D liu: SUBSTR.INP
 Dng 1: xu A
 Dng 2: xu B
 di A, B khng qu 1000000.
Kt qu: SUBSTR.OUT
 Ghi ra cc v tr tm c trn 1 dng (th t tng dn). Nu B khng xut hin
trong A th b trng.

14

Mt s vn ng ch trong mn tin hc

V d:
SUBSTR.INP
aaaaa
aa

SUBSTR.OUT
1234

15

Mt s vn ng ch trong mn tin hc

VN : X L BIT
Nh ta bit, mi s t nhin u c th biu din c di dng nh phn. V
d 13 : 1101
42: 101010
i vi my tnh, cc gi tr s c lu bi cc bin di dng chui nh phn c di
tng ng vi kiu bin .
Trong Pascal, mt s kiu bin ph bin nh :
o Byte: c di 8 bit.
o Integer, Word: c di 2*8 = 16 bit
o Longint: c di 4*8 = 32 bit
Do nu bin x c kiu byte v lu gi tr 13 th dy bit ca bin x l : 00001101
Cc bit ca bin c nh s t phi sang tri bt u t 1. v d trn bit th nht ca x l
1 v bit th 2 ca x l 0
Cc php ton x l bit i vi 2 dy bit x1,x2 s x l ln lt bit th nht ca x1 vi bt
th nht ca x2, bit th 2 ca x1 vi bit th 2 ca x2,, bit th k ca x1 vi bit th k ca x2,
c nh vy cho n ht.
C 4 php x l bit c bn sau y:

Php cng bit (OR)

Php o bit (NOT)

Php nhn bit (AND)

Php loi tr bit (XOR)

Kt qu bng tng gi tr 2 bit tr trng hp c 2 bit u c gi


tr l 1 th kt qu php OR l 1.
Vd:
x1 = 13 (00001101)
x2 = 42 (00101010)
x1 OR x2 = 47 (00101111)
o gi tr bit 0 thnh 1 v 1 thnh 0
Vd:
x = 13 (00001101)
NOT(x) = 242 (11110010)
Kt qu bng tch ca 2 gi tr bit
Vd:
x1 = 13 (00001101)
x2 = 42 (00101010)
x1 AND x2 = 8 (00001000)
Kt qu l 0 nu 2 bit c XOR c gi tr ging nhau
Kt qu l 1 nu 2 bit c XOR c gi tr khc nhau
Vd:
x1 = 13 (00001101)
x2 = 42 (00101010)
x1 XOR x2 = 39 (00100111)

i vi dy bit cn c 2 php dch chuyn c bn sau:


Php dch phi (Shr k)

Dch chuyn dy sang phi k bt


Vd:
x = 13 (00001101)
x Shr 2 = 3 (00000011)

16

Mt s vn ng ch trong mn tin hc

Php dch tri (Shl k)

Dch chuyn dy sang tri k bt


Vd:
x = 13 (00001101)
x Shl 2 = 3 (00110100)

By gi, ta xt cc thao tc x l bt da trn cc php ton c bn trn.


1/Ly gi tr bit : Cho bit bit th k ca bin x nhn gi tr 0 hay 1.
Function GetBit(k,x:Word):Byte;
Begin
GetBit := (x Shr (k-1)) and 1;
End;

2/Gn gi tr bit : gn gi tr c cho bit th k ca bin x.


Procedure SetBit(c:byte; k:Word; var x: Word);
Begin
If c = 1 then x := x or (1 shl(k-1))
Else x := x and (not (1 shl (k-1)));
End;

u im ca x l bit:
V b nh: i vi ngn ng lp trnh c b nh hn ch nh Turbo Pascal, x l bit c th
c s dng to mng nh du. Vd 1 bin boolean ch nh du c 1 phn t c gi
tr True hay False trong khi nu x l bt th 1 bin boolean tng ng vi 8 bit gi tr 0,1 do
c th nh du cho 8 phn t.
V tc : Cc php x l trn bit c tc nhanh hn nhiu ln so vi cc php x l
khc.
V d:
- Hai php (x div 2) v (x shr 1( l tng ng nhau nhng php (x shr 1) c
tc nhanh hn nhiu ln.
- Dng dy bit nh du True - False c tc x l nhanh hn nhiu so vi
dng mng nh du. Do trong cc bi ton i hi vic thay i trng
thi nh du nhiu ln th ngi ta vn hay dng x l bit ci thin tc
chng trnh.
ng dng ca x l bt qua cc bi ton c th sau:
Bi ton:
Lit k tp hp con
Cho tp hp con N phn t khc nhau, lit k tt c cc tp hp con ca tp N phn t cho
(k c tp rng).
Gi : Xt dy gm N bit. Mi tp con ca tp N phn t u c th biu din bng dy N
bit ny v ngc li mi dy bit c di N u biu din 1 tp con ca tp N phn t. Do
ta c th duyt tt c cc dy bit di N xut ra tp con tng ng.
Mt khc ta c nhn xt tt c cc dy bit di N tng ng vi gi tr 0 cho n
n
2 -1

17

Mt s vn ng ch trong mn tin hc

00000 = 0
00001 = 1
00010 = 2

11110 = 2^n - 2
11111 = 2^n - 1
Cho nn ta c mt thut ton c th sau: Duyt bin x chy t 0 n 2n - 1. Vi mi gi tr x,
xut ra tp con da vo dy bit ca n.
Bi ton:
S c bit(SNUM)
Cho dy N s t nhin c gi tr trong on [0,65535] (N<=1000000). Trong ch c
mt s xut hin 1 ln - gi l s c bit, cc s cn li c s ln xut hin l mt s chn.
Yu cu tm ra s c bit ny.
D liu: SNUM.INP
 Dng u tin ghi gi tr N
 N dng tip theo, mi dng ghi mt s trong dy N s
Kt qu: SNUM.OUT
 S c bit tm c
V d:
SNUM.INP
5
12345
9876
12345
145
9876

SNUM.OUT
145

Gi :
Cch th nht: Xp N s t nhin ny ln N v dn cc s ny v pha bn phi, theo vd trn
ta c bng s:
1 2 3 4 5
9 8 7 6
1 2 3 4 5
1 4 5
9 8 7 6
By gi ta xt theo tng ct ca bng s v b i nhng ch s c s ln xut hin
l mt s chn: Ct 1 b ch s 1, Ct 2 b ch s 2 v 9, Sau khi b, cc ct cn li
ch s c s ln xut hin l mt s l.
1 2 3 4 5
9 8 7 6
1 2 3 4 5
1 4 5
9 8 7 6

18

Mt s vn ng ch trong mn tin hc

Ghp cc ch s ny li ta c s c bit : 145. (cc bn t chng minh tnh


ng n ca cch lm).
Ta c mt thut ton c th nh sau: Dng mng 6x10 phn t lu thng tin
xut hin ca cc ch s t 0 n 9 cc ct t 1 n 6 (do cc s c gi tr trong on
[0,65535] nn c nhiu nht 6 ct). Phn t (k,x) lu s ln xut hin ca ch s x ti ct
th k.
Dc t file INP ln lt N s, vi mi s, tng s ln xut hin cc ch s ct
tng ng bng cch thay i mng 6x10. Sau da vo mng lu s ln xut hin ny
tm ra s c bit.
Cch lm trn kh hay nhng vi d liu ln th chng trnh chy rt lu. Vic kt hp
x l bt vo thut ton gip chng trnh chy nhanh hn nhiu.
Cch th hai: Da vo t tng ca cch lm trn, ta c th chuyn mi s v dng nh
phn v cng sp vo bng nh trn, Thc hin php XOR ca s th 1 vi s th 2, ri ly
kt qu thc hin tip vi s th 3 c lm nh vy cho n khi thc hin ht php XOR
vi s th N. V php XOR tng ng vi vic loi tr 2 bit ging nhau nn sau khi thc
hin xong, kt qu cho ta nhng bit c s ln xut hin l s l v cng l dy bit ca s
c bit cn tm.
X:=0;
For i:=1 to N do
Begin
Readln(fi,y);
x := x xor y;
End;
Writeln(x);

Bi ton:
Bn c th (CHESSCBG)
Mt bn c th l mt bng gm 4 dng, 4 ct. Mi th c l mt cch sp xp 8
qun c, hai qun khc nhau hai khc nhau. Bi ton t ra l cho hai th c 1 v 2,
hy tm mt s t nht bc di chuyn qun chuyn t th 1 sang th 2; mt bc di
chuyn qun l mt ln chuyn qun c sang trng k cnh vi qun c ang ng.
D liu: CHESSCBG.INP
 Gm 8 dng, mi dng l mt xu nh phn di 4 m s 1/0 tng ng vi v
tr c hoc khng c qun c.
 Bn dng u l th c 1
 Bn dng sau l th c 2.
Kt qu: CHESSCBG.OUT
 Gm 1 dng duy nht l s bc chuyn qun t nht

19

Mt s vn ng ch trong mn tin hc

V d:
CHESSCBG.INP
1111
0000
1110
0010
1010
0101
1010
0101

CHESSCBG.OUT
4

Gi : M ha mi trng thi bn c bng 1 dy nh phn 16 bit tng ng. S dng


phng php loang tm ng i ngn nht t trng thi u v trng thi cui.

Luyn tp:
Bi ton:
Tm dng c bit(SLINE)
Cho mt tp vn bn c n dng (n<=100000) mi dng c di khng qu 255 k t.
Trong c mt dng ch xut hin mt ln duy nht, cn cc dng cn li c s ln xut
hin l mt s chn.
Yu cu: hy vit chng trnh tm dng c bit .
D liu: SLINE.INP
 Ghi cc dng thng tin v kt thc tp bi dng gm 3 k t ###
Kt qu: SLINE.OUT
 Ghi ra dng c bit tm c.
V d:
SLINE.INP
-How are you?
-Im fine
-How are you?
-My name is PCM
-Im fine
###

SLINE.OUT
-My name is PCM

Bi ton:
M cung (MECUNG)
Mt m cung hnh ch nht gm M dng v N ct vung, M,N <= 100. Cc dng
(ct) nh s t 1 n M ( t 1 n N) t trn xung (t tri qua phi). Mt robot ng
(X,Y). T mt bt k, robot c th di chuyn n 1 trong 4 k cnh. Mi ca m
cung ng vi 1 s trong phm vi 0..15 vi ngha quy nh nhng hng robot c th di
chuyn n. Mi hng c quy nh bi 1 s hiu: Trn: 1; Di: 2; Phi: 4; Tri: 8.
Gi tr ca bng tng cc s hiu cc hng m robot c th di chuyn n. VD (2,3)

20

Mt s vn ng ch trong mn tin hc

c gi tr 13 = 1 + 4 + 8 c ngha l t (2,3) c th di chuyn theo hng trn, phi hay tri


sang k cnh tip theo.
Cho thng tin v m cung MxN, v tr xut pht (X,Y).
Yu cu: Tm ng i ngn nht robot c th thot ra c m cung.
D liu: MECUNG.INP
 Dng u tin ghi 4 s M,N,X,Y
 Tip theo ma trn s M dng, mi dng N ct biu din thng tin v m cung.
Kt qu: MECUNG.OUT
 S bc di chuyn t nht robot thot ra khi m cung.
Bi ton:
Chuyn du lch (TRIP)
Trong k ngh h nm nay sherry c b thng cho 1 tour du lch quanh N t
nc ti p vi nhiu thng cnh ni ting ( v sherry rt ngoan ). Tt nhin sherry s i
bng my bay.
Gi v my bay t t nc i n t nc j l Cij ( d nhin Cij c th khc Cji ).
Tuy c b thng cho nhiu tin i du lch nhng sherry cng mun tm cho mnh 1
hnh trnh vi chi ph r nht c th dnh tin mua qu v tng mi ngi ( Cc
chuyn bay ca sherry u c m bo an ton tuyt i ).
Bn hy gip sherry tm 1 hnh trnh i qua tt c cc nc, mi nc ng 1 ln
sao cho chi ph l b nht nh.
D liu: TRIP.INP
 Dng 1: N (5 < N < 16)
 Dng th i trong N dng tip theo: Gm N s nguyn, s th j l Cij (0 < Cij <
10001)
Kt qu: TRIP.OUT
 Gm 1 dng duy nht ghi chi ph b nht tm c
V d:
TRIP.INP
TRIP.OUT
6
8
0 1 2 1 3 4
5 0 3 2 3 4
4 1 0 2 1 2
4 2 5 0 4 3
2 5 3 5 0 2
543310
Gi : Gi F[i,x] l chi ph ngn nht khi ang t nc i v cc t nc i qua
c nh du bng dy bit ca bin x. S dng t tng Quy hoch ng gii quyt.

21

Mt s vn ng ch trong mn tin hc

VN : QUY HOCH NG TRNG THI


Vi mt bi ton c th, tm ra c li gii cn i t bc 1 n bc th k.
Trong ti bc th i ny sinh nhiu trng thi hng i khc nhau, tm ra hng i
ng cho bc th i li da vo trng thi ca bc i th i-1 v c th xc nh bng mt
cng thc c th nu tp cc trng thi l hu hn.
Bi ton:
Chn - HSG QG 2006 (SELECT)
Cho mt bng hnh ch nht kch thc 4n vung. Cc dng c nh s t 1
n 4, t trn xung di, cc ct c nh s t 1 n n t tri qua phi.
nm trn giao ca dng i v ct j c gi l (i,j). Trn mi (i,j) c ghi mt
s nguyn aij , i =1, 2, 3, 4; j =1, 2, ..., n. Mt cch chn l vic xc nh mt tp con
khc rng S ca tp tt c cc ca bng sao cho khng c hai no trong S c chung
cnh. Cc trong tp S c gi l c chn, tng cc s trong cc c chn c
gi l trng lng ca cch chn. Tm cch chn sao cho trng lng l ln nht.
V d: Xt bng vi n=3 trong hnh v di y:

Cch chn cn tm l tp cc S = {(3,1), (1,2), (4,2), (3,3)} vi trng lng 32. D


liu: SELECT.INP
 Dng u tin cha s nguyn dng n l s ct ca bng.
 Ct th i trong s 4 dng tip theo cha n s nguyn l n s trn hng i ca bng.
Kt qu: SELECT.OUT
 Gm 1 dng duy nht l trng lng ca cch chn tm c.
Hn ch:
 Trong tt c cc test: n 10000.
 |aij| 30000.
V d:
SELECT.INP
3
-1 9 3
-4 5 -6
7 89
9 72

SELECT.OUT
32

22

Mt s vn ng ch trong mn tin hc

Gi : Mi ct c 4 dng nn c th dng bin x c 4 bit nh phn m t trng thi


chn ca ct i: bit th k bng 1 (0) tng ng vi dng th k ca ct c (khng
c) chn.
Gi F[i,x] l trng lng ln nht nu xt t ct 1 n ct i v trng thi chn ca ct
i c biu din bng bin x. Cng thc Quy hoach ng l:
F[i,x] = max ( F[i-1,x] + sum(i,x) )
Trong
x v x l hai trng thi chn ca 2 ct lin tip nhau (i v i-1) o 2 trng
thi phi tha mn iu kin khng c 2 no c chn k nhau.
sum(i,x) l trng lng ng vi trng thi chn x ca ct i.
Bi ton:
Cm gia cm (H5NX)
i dch cm gia cm H5Nx tn cng t nc Peace. Cc c quan y t
nhanh chng cch ly cc gia cm bnh. Theo cc nghin cu khoa hc cho thy nu con
vt no c cha on m gen HNH hoc HHH s c nguy c nhim bnh rt cao cn phi
cch ly theo di. Cc chng gia cm trong nc u c cu to t 2 loi gen H v N, v
vy b y t cn bit s lng gia cm khe mnh (khng c gen bnh) tim phng
bnh.
Tt c cc gia cm u c di gen bng nhau l M, hy vit chng trnh gip b
y t tnh ra s lng gia cm khe mnh.
D liu: H5NX.INP
 Gm khng qu 1000 dng, mi dng l mt s nguyn M.
Kt qu: H5NX.OUT
 Vi mi gi tr M xut ra mt s duy nht Q l kt qu m bn tm c. V kt
qu c th rt ln nn ch cn xut Q mod 2005.
Gii hn:
 1 M 1.000.000
 Thi gian: 0.5 s/test
V d:
H5NX.INP
3

H5NX.OUT
6

Gi : Gi F[i,x] l s lng cc an gen :


c di i.
2 gen cui cng c trng thi bit l x. Hay x gm 2 bit nh phn th hin
2 gen cui cng (bit 1 tng ng vi gen H v bit 0 tng ng vi gen
N).
Khng cha cc an HNH, HHH.

23

Mt s vn ng ch trong mn tin hc

Bi ton:
Chuyn du lch (TRIP)
Trong k ngh h nm nay sherry c b thng cho 1 tour du lch quanh N t
nc ti p vi nhiu thng cnh ni ting ( v sherry rt ngoan ). Tt nhin sherry s i
bng my bay.
Gi v my bay t t nc i n t nc j l Cij ( d nhin Cij c th khc Cji ).
Tuy c b thng cho nhiu tin i du lch nhng sherry cng mun tm cho mnh 1
hnh trnh vi chi ph r nht c th dnh tin mua qu v tng mi ngi ( Cc
chuyn bay ca sherry u c m bo an ton tuyt i ).
Bn hy gip sherry tm 1 hnh trnh i qua tt c cc nc, mi nc ng 1 ln
sao cho chi ph l b nht nh.
D liu: TRIP.INP
 Dng 1: N (5 < N < 16)
 Dng th i trong N dng tip theo: Gm N s nguyn, s th j l Cij (0 < Cij <
10001)
Kt qu: TRIP.OUT
 Gm 1 dng duy nht ghi chi ph b nht tm c
V d:
TRIP.INP
TRIP.OUT
6
8
0 1 2 1 3 4
5 0 3 2 3 4
4 1 0 2 1 2
4 2 5 0 4 3
2 5 3 5 0 2
543310
Gi : Gi F[i,x] l tng chi ph nu sherry ang t nc i v trng thi cc t nc
i qua c lu vo bin x : gm N bit nh phn 0,1 (bit th k c gi tr bng 1/0 c ngha
i qua t k hay cha). Cng thc Quy hoch ng:
F[i,x] = min( F[i,x] + C[i,i] )
Trong
- i l t nc c nh du i qua trong x.
- x l trng thi ging nh trng thi x nhng t nc i cha c nh du.

Luyn tp:
Bi ton:

n b hn lon(MIXUP)

Mi trong N c b (4 <= N <= 16) ca bc John c mt s seri phn bit S_i (1 <= S_i
<= 25,000). Cc c b t ho n ni mi c u eo mt chic vng vng c khc s seri
ca mnh trn c theo kiu cc bng ng giang h.
Cc c b giang h ny thch ni lon nn ng xp hng ch vt sa theo mt th t
gi c gi l 'hn lon'.
24

Mt s vn ng ch trong mn tin hc

Mt th t b l 'hn lon' nu trong dy s seri to bi hng b, hai s lin tip


khc bit nhau nhiu hn K (1 <= K <= 3400). V d, nu N = 6 v K = 1 th 1, 3, 5, 2, 6,
4 l mt th t 'hn lon' nhng 1, 3, 6, 5, 2, 4 th khng (v hai s lin tip 5 v 6 ch
chnh lch 1).
Yu cu: Cho bit c bao nhiu cch khc nhau N c b sp thnh th t 'hn lon'? D
liu: MIXUP.INP
 Dng 1: Hai s N v K cch nhau bi khong trng
 Dng 2..N+1: Dng i+1 cha mt s nguyn duy nht l s seri ca c b th i:
S_i
Kt qu: MIXUP.OUT
 Dng 1: Mt s nguyn duy nht l s cch N c b sp thnh th t 'hn
lon'. Kt qu m bo nm trong phm vi kiu s nguyn 64-bit.
V d:
MIXUP.INP
MIXUP.OUT
41
2
3
4
2
1
Gi : Gi F[i,x] l s cch sp cc c b c nh du trong bin x (l bin gm N bit nh
phn) m c b th i c xp sau cng.
Bi ton: C gi chn b (COWGIRL)
Trn mt tho nguyn nh b c 1 gia nh gm 3 anh em: 2 ngi anh trai l
Nvutri v Andorea cn ngi em gi l Lola. Cuc sng gia nh kh gi nhng gia nh c
truyn thng chn nui v mun cc con t lp nn cha m 3 ngi quyt nh cc
con hng ngy s i chn 1 s b no (ty 3 ngi con).
Tho nguyn l 1 cnh ng chia lm M*N vung, mi con b ch ng trong 1 v
mi ch cha 1 con b.Ch c 1 quy tc duy nht l khng bao gi c 4 con b to
thnh 1 hnh vung 2*2 hoc trng 1 khu t 2*2.
Hai ngi anh mi chi nn hi l kem Lola chn b 1 mnh. Lola mun bit tt
c c bao nhiu cch xp b tha mn quy tc trn phng mi trng hp. V con s
ny rt ln nn hy gip Lola tnh ton con s ny.
D liu: COWGIRL.INP
 Dng u gm 1 s T duy nht l s test (T 111)
 T dng tip theo gm 2 s M, N cho bit kch thc ca tho nguyn (M*N 30)
Kt qu: COWGIRL.OUT
 Gm T dng, mi dng ng vi 1 test l s cch xp b ca test .

25

Mt s vn ng ch trong mn tin hc

V d:
COWGIRL.INP
1
11

COWGIRL.OUT
2

Gi : cho M*N<=30 nn tn ti mt s M hay N khng ln hn 5. gi s l M l s


dng khng qu 5. Ta c th s dng s c khng qu 5 bit nh phn m t trng thi
chn mi ct.

26

Mt s vn ng ch trong mn tin hc

VN : QUY HOCH NG V TR CU HNH


Cho mt dy cc cu hnh tha mn iu kin no c sp theo th t t in
(D). Bi ton thng c 2 yu cu:
- Cho cu hnh (c), hi (c ) nm v tr no trong t in.
- Cho v tr k, yu cu tm cu hnh (c) ng vi v tr k trong t in.
T tng chnh gii quyt yu cu 1 l tm s lng cu hnh c v tr nm trc
(c) trong t in. T suy ra v tr ca (c).
T tng chnh gii quyt yu cu 2 l thu hp dn phm vi t in (ln lt b i
nhng cu hnh (c) c v tr b hn k, to thnh mt t in mi ng thi gim ch s k cho
tng ng vi t in mi).
Bi ton:
Dy nh phn (1).
Cho t in bao gm tt c cc dy N bit nh phn. VD vi N=3 ta c t in dy
bit nh phn l: 000,001,010,011,100,101,110,111.
- Cho mt dy (c) gm N bit nh phn, hi (c) nm v tr no trong t in.
- Cho mt s k, hi dy bit nh phn no v tr k trong t in.
Gi : Thc ra v tr ca (c) trong t in cng chnh l dng thp phn ca (c) cng thm
1. Nhng lm quen vi t tng Quy hoch ng v tr cu hnh, ta tm thi qun i
cch gii n gin ny v s dng mt t tng khc nh sau:
Gi F[i] l s lng cc dy i bit nh phn.
D thy F[i] = 2*F[i-1] (hay F[i] = 2i). F[0] = 1 Gi
s (c): a1a2an
Ta ch quan tm n cc bit 1 ca (c), gi s bit 1 xut hin nhng v tr t
(c): a1a2...ak-11ak+1an
Khi (c) s c v tr ln hn v tr ca nhng cu hnh dng x1x2xt-10at+1an
(trong xi nhn gi tr 0 hoc 1). Hay ni cch khc s c F[t-1] cu hnh dng x1x2xt10at+1an c v tr b hn t.
Gi s l s lng cc cu hnh c v tr b hn t
st

s = i= 1 F[ ti 1 ] , trong ki l cc v tr xut hin bit 1 trong (c).


Suy ra v tr ca (c) trong t in l s+1.
S:=0;
For t:=1 to n do
If c[t]=1 then s:=s + F[t-1]
Writeln(vi tri ,s+1);

tm cu hnh (c) v tr k , ta duyt ln lt cc bt ca (c) t bit th 1 n N. Nu


bt th t nhn gi tr 1 hay (c): a1a2at-11th r rng (c) c v tr ln hn v tr ca cc cu
hnh dng a1a2at-10xt+1xn (trong xi nhn gi tr 0 hoc 1). Hay ni cch khc k s ln
hn F[n-t]. Vy
- nu k F[n-t] th bt th t ca (c) nhn gi tr 0
- nu k > F[n-t] th bt th t ca (c) nhn gi tr 0, ng thi gn li
k = k - F[n-t]
27

Mt s vn ng ch trong mn tin hc

for

t:=1 to n do
if k<=f[n-t] then c[t]:=0
else
begin
c[t]:=1;
k:=k - F[n-t];
end;
For i:=1 to n do write(c[i])

Bi ton:
Dy nh phn (NP2)
Mt tp hp S gm cc dy N bit 0, 1 trong khng c hai bit 1 no k nhau. V d
vi N = 5 th S gm cc dy 00000, 00001, 000101,... Tp S c sp xp theo chiu tng
dn ca s nguyn tng ng m dy bit biu din. Cho s N v mt s nguyn M hy cho
bit dy bit th M trong S.
D liu: NP2.INP
 Dng duy nht ghi hai gi tr N, M (N 40, M m bo c nghim)
Kt qu: NP2.OUT
 Dy N s 0, 1 ghi lin nhau m t dy nh phn tm c.
V d:
NP2.INP
53

NP2.OUT
000101

Gi :
Gi F[i] l s phn t ca tp S ng vi N = i.
- F[i] = F[i-1] + F[i-2]
- F[0] = F[1] = 1
Cch xy dng dy bit th M tng t nh bi trn.
Bi ton:
S hiu hon v (SHHV)
Xt tt c cc hon v ca dy s t nhin (1, 2,..., n) (1 <= n <= 12) Gi
s rng cc hon v c sp xp theo th t t in.
Yu cu:
 Cho trc 1 hon v. Tm s hiu ca hon v trong dy sp xp
 Cho trc s hiu ca 1 hon v trong dy hon v sp xp. Tm hon v
D liu: SHHV.INP
 Dng 1: Cha n s a1, a2, , an ( dy hon v n phn t )
 Dng 2: Cha s p ( s hiu ca hon v trong dy hon v n phn t )
Kt qu: SHHV.OUT
 Dng 1: Ghi s q ( s hiu ca dy hon v ai )
 Dng 2: Ghi n s b1, b2, , bn ( dy hon v c s hiu p )
28

Mt s vn ng ch trong mn tin hc

V d:
SHHV.INP
213
4

SHHV.OUT
3
231

Gi : Gi F[i] l s lng cc hon v c i ch s


- F[i] = F[i-1]*i (hay F[i] = i!).
- F[1] = 1
Fin(i) l hm cho bit s lng cc s trong on ai+1an v c gi tr b hn a[i] Yu
cu 1:
S:=0;
For i:=1 to n do
s:= s + fin(i)*f[n-1]
writeln(s+1)

Yu cu 2:
fillchar(fr,sizeof(fr),true);
for i:=1 to n do
begin
for j:=1 to n do
if fr[j] then
if (k>f[n-i]) then dec(k,f[n-i]) else break;
a[i]:=j; fr[j]:=false;
end;
for i:=1 to n do write(fo,a[i],' ');

Luyn tp:
Bi ton:

Lin lc v tr (IMPULSE)

lin lc vi tu thm d t ng ngi ta chun b danh sch cc thng bo , nh


s t 1 tr i v ci vo trong b nh ca my tnh trn trm thm d . S lng thng
bo l 1000000. Trm iu khin mt t hoc tu thm d ch cn pht i s t t thay v
cho chuyn bng h thng pht xung Laser nh hng . Nhng vic pht xung ( tc l
cc tn hiu 1 ) . V vy cc nh khoa hc quyt nh pht mi s ng vi mt dy bit c
khng qu 3 s 1 . Cc dy bit c cng di l 200 , c sp xp li theo th t tng
dn ca gi tr nh phn tng ng . S th t ca dy bit trong danh sch s chnh l s
nguyn cn gi .
Yu cu: Hy lp trnh ci vo my pht chuyn i t gi tr s sang xu bit cn pht . D
liu: IMPULSE.INP
 Dng u tin l s lng thng bo cn pht R ( R10000).
 Cc dng sau cha cc s nguyn dng ( s th t thng bo ) , cc s nu trn
1 dng - cch nhau t nht 1 du cch .

29

Mt s vn ng ch trong mn tin hc

Kt qu: IMPULSE.OUT
 Xu bit ng vi s cn pht . B qua cc s 0 trc 1 u tin trong xu ,
tr trng hp s cn pht l 1 th kt qu ra c ghi l 0.
V d:
IMPULSE.INP
IMPULSE.OUT
6
0
1 2 3 4 5 100
1
10
11
100
100000110
Bi ton:
nh s cc tp con (SUBSET)
Gi s A l tp N s nguyn dng u tin, N30. Vi mi tp con B ca A, ta
lun vit cc phn t ca B theo gi tr tng dn: B = {b1, b2, . . ., bK} vi b1< b2< . . .< bK
Ta xp th t cc tp con ca A theo nguyn tc sau: gi s B v C l hai tp con
ca A: B = {b1, b2, . . ., bK}, C = {c1, c2, . . ., cM}, B<C nu c imin(K,M) sao cho
b1=c1, . . .,bi-1=ci-1, v bi<ci hoc bi=ci v K=min(K,M). Trn c s xp th t cc tp con, ta
nh s cc tp con ca A t 1 n 2N, tp rng c nh s 1.
V d vi n = 3, th t cc tp hp l:
1:
2: 1
3: 1 2
4: 1 2 3
5: 1 3
6: 2
7: 2 3
8: 3
Yu cu:
 Cho s N v mt s hiu S > 1, tm tp B c s hiu S.
 Cho s N v tp C khng trng, tm s hiu ca C.
D liu: SUBSET.INP
 Dng u tin ghi 2 s nguyn dng N, S
 Dng tip theo ghi N, tip theo l dy K s c1, c2,. . ., cK
Kt qu: SUBSET.OUT
 Dng u l ch s cc phn t trong tp B ng vi s hiu S. 
Dng th hai ghi s hiu ng vi tp C.
V d:
SUBSET.INP
SUBSET.OUT
38
3
323
7

30

Mt s vn ng ch trong mn tin hc

Bi ton:
Chui ht (NLACE)
Khi tin hnh khai qut kho c mt vng quc xa xa n, cc nh khoa hc khai
qut c rt nhiu chui ht l. Sau khi quan st, cc nh khoa hc thy rng cc chui ht
c mt s c im chung.
Mi chui ht l mt si dy c nh cc ht ngc lm bng mt cht liu c
xa. Cc chui ht u c s lng ht ngc bng nhau. Hn na, mi ht ngc l mt
hnh cu c ng knh l mt s nguyn dng, v nu ln t tri sang phi trn chui
ht, ngi ta thy cc ht ngc c ng knh tng dn. Nu nh s v tr cc ht ngc
bt u t 1, theo th t t tri sang phi, ngi ta nhn thy rng ht ngc th i c
ng knh khng vt qa 2i. Cc nh khoa hc cho rng, dn tc c xa ny hn
lm ra tt c cc chui ht c cng nhng c im ny, d chng hin cn ang ri rc
u trn tri t.
Sau khng lu, cc nh khoa hc tm ra mt mnh da, trn c ghi mt con s
theo loi ch s c xa. H cho rng mnh da ny c lin quan n cc chui ht k l n.
Sau nhiu c gng, cc nh khoa hc a c con s trn mnh da v h ch s thp
phn, v k hiu l X.
Manh mi n y th dng li, v cc nh khoa hc khng tm thy c vt tch
no khc na, v cng khng tm ra c mi quan h gia X v cc chui ht.
n y, mt nh khoa hc ngi Vit ngh, hy th xc nh chui ht c th t t
in l X, bit u y s l manh mi?
Yu cu: Bn hy vit chng trnh gip nh khoa hc xc nh chui ht c th t t
in l X.
D liu: NLACE.INP
 Dng 1: cha s nguyn dng N, l s ht ngc trong mi chui ht. 
Dng 2: cha s nguyn dng X.
Kt qu: NLACE.OUT
 Gm 1 dng duy nht, cha N s nguyn, cch nhau mt khong trng, xc nh
chui ht c th t t in l X ( biu din mt chui ht, cn in ra N s nguyn
tng ng l ng knh ca cc ht ngc trong chui ht, theo th t t tri sang
phi).
Gii hn:
 N l s nguyn dng trong phm vi [1, 250].
 X l s nguyn dng trong phm vi t 1 n s lng ti a cc chui ht.
V d:
NLACE.INP
NLACE.OUT
2
23
4
Gii thch: cc chui ht sp theo th t t in ln lt l 1 2, 1 3, 1 4, 2 3, 2 4. Chui ht
th 4 l 2 3.

31

Mt s vn ng ch trong mn tin hc

Bi ton:
Th t xu (STRING)
Cc ch ci trong b ch ci ting Anh a..z c nh s t 1 n 26.
Mt xu W= c1 ci-1ci ch gm cc ch ci thng ting Anh khc nhau c gi
l mt t ng nu trong xu , k t cK ng sau k t cK-1 trong b ch ci vi mi
1<Ki.
Vi th t ny ta c th nh s cc t theo nguyn tc sau:
- Xem mi ch ci l mt t di 1 vi s hiu nh trn
- Chia mi t thnh cc nhm W(1), W(2), , W(K) trong W(i) l nhm
gm mi t c di i
- Trong mi nhm, ta xp cc t theo th t t in
- Ln lt nh s lin tip t 1, nhm c di b nh s trc, trong mi
nhm, th t nh s l th t t in
V d v s hiu mt s t: ac - 28; bc - 52; vwxyz - 83681
Cho mt xu S ch gm cc ch ci ting Anh thng. Ni chung S khng l t
nhng ta c th ct S mt cch duy nht thnh mt dy t sao cho khng th ghp hai t k
nhau thnh mt t. Khi ta c th m ha S thnh mt dy s nguyn dng C(S) m cc
s hng ca dy ny tng ng l cc s hiu ca cc t ca dy t nhn c. V d: nu S =
abazvwxyz th C(S) = 27 51 83681
Yu cu:
 Cho mt xu S di khng qu 1000, tm dy C(S).
 Cho mt dy C(S) l m ha ca mt xu S tha mn iu kin nh yu cu 1,
hy khi phc li t S.
D liu: STRING.INP
 Dng th nht ghi t u dng xu S.
 Dng th hai ghi dy C(S), hai s lin tip cch nhau t nht mt du trng.
Kt qu: STRING.OUT
 Dng th nht ghi dy C(S).
 Dng th hai ghi xu S.
V d:
STRING.INP
abazvwxyz
27 51 83681

STRING.OUT
27 51 83681
abazvwxyz

Bi ton:
M vch (BARCODE)
Mt m vch (thng dng ghi gi tr hng ho ) l mt dy cc vch en trng
xen k nhau bt u bng vch en bn tri , mi vch c mt rng tnh bng s
nguyn dng . Hnh sau cho v d v mt m 4 vch tri trn 1+2+3+1 = 7 n v rng:

32

Mt s vn ng ch trong mn tin hc

Tng qut , mt tp m vch Mv(n,k,m) l tp mi m vch gm k vch tri trn


ng n n v rng v mi vch khng rng qu m n v .
M vch trong v d trn thuc tp Mv(7,4,3) nhng khng thuc tp Mv(7,5,2) . ta c
th biu din mi m vch bi mt dy nh phn bng cch dng s 1 biu th mt n v rng
mu en v s 0 biu th mt n v rng mu trng . V d m vch trong hnh trn s c
biu th bi dy 1001110
Vi biu din nh phn nh vy mi tp Mv(n,k,m) vi cc gi tr c th ca m , k , n l
mt tp cc xu di n ch gm cc k t 0 hay 1 . Ta c th lit k tp theo
th t t in vi quy c k t 0 trc k t 1 v theo th t lit k ta cho mi m
vch mt s hiu .
V d tp Mv(7,4,3) gm 16 m vch s c biu din bi 16 xu nh phn di 7
v theo cch sp xp t in ca cc biu din nh phn ta c cc m vch vi cc s hiu t 1
n 16 l :
01: 1000100
02: 1000110
03: 1001000
04: 1001100
05: 1001110
06: 1011000
07: 1011100
08: 1100010

09: 1100100
10: 1100110
11: 1101000
12: 1101100
13: 1101110
14: 1110010
15: 1110100
16: 1110110

D liu: BARCODE.INP
 Dng th nht ghi 3 s n , k , m ( 1n,k,m33) l ba tham s
ca tp m vch
 Dng th hai ghi s s (s50)
 Trong s dng tip theo ghi mi dng mt xu gm n k t 0 hay 1 l biu nh
phn ca mt m vch thuc tp Mv(n,k,m) .
Kt qu: BARCODE.OUT
 S dng , mi dng ghi s hiu ca m vch cho
V d :
BARCODE.INP
7 4 3 16
55
1001110
1110110
1001100
1001110
1000100

BARCODE.OUT
5
16
4
5
1

33

Mt s vn ng ch trong mn tin hc

Gi : Xem mi vch nh mt s nguyn dng c gi tr bng rng ca vch . Gi


F[n,k,m] l s dy m:.
- Mi dy c k s
- Tng cc s trong mi dy l n
- Mi s trong dy c gi tr khng ln hn m
Chuyn mt m vch nh phn sang dy s tng ng. Khi s v tr l tng ng
vi vch 1 v s v tr chn tng ng vi vch 0. Da vo dy s v mng F
xut ra s hiu ca m vch.
Bi ton:
Dy s Catalan (CATALAN)
Cho s nguyn dng N, dy Catalan cp n l dy C(1), C(2) C(2n+1) gm cc s
nguyn khng m tho mn : C(1) = C(2n+1) = 0 vi i bt k 1 i 2n th C(i), C(i+1) hn
km nhau 1 n v.
Vi mi n ta sp xp cc dy Catalan theo th t t in, nh s t 1 tr i .
Yu cu :
 Cho mt dy Catalan, hy tm th t ca dy.
 Cho s nguyn dng k hy tm dy c th t k.
D liu: CATALAN.INP
 Dng u ghi n. (n 15)
 Dng hai ghi mt dy Catalan cp n
 Dng ba ghi mt s nguyn dng k (k c th rt ln nhng m bo lun c
nghim)
Kt qu: CATALAN.OUT
 Dng 1 ghi s th t dy dng hai ca file d liu 
Dng 2 ghi dy ng vi s th t k
V d:
CATALAN.INP
4
012321210
12

CATALAN.OUT
12
012321210

Gi : Xt li vung (n+1)x(n+1). Mt quy tc i tha mn:


- xut pht t (1,1) n (n+1,n+1)
- Mi bc i ch c di chuyn n k cnh bn phi hoc bn di.
- Khng c di chuyn qua ranh gii l ng cho ni nh tri trn v phi
di ca li.
Nu quy nh (1,1) tng ng vi s 0 v
- mi bc di chuyn sang phi, ta to s mi bng s lin trc tr i 1.
- mi bc di chuyn xung di, ta to s mi bng s lin trc cng thm 1.
D thy mi cch i t (1,1) n (n+1,n+1) tng ng vi mt dy catalan tng ng.

34

Mt s vn ng ch trong mn tin hc

0
1
2
3

1
2

Cch i tng ng vi dy 0 1 2 3 2 1 2 1 0 (n = 4)

Gi F[i,j] l s ng i t (i,j) n (n+1,n+1) - F[i,j] c tnh bng cng thc


Quy hoch ng.
Gi s ti (u,v) ta di chuyn xung pha di th cch i ny s c s th t ln hn
cch i t (u,v) di chuyn sang bn phi (vi u > v). Do ta ch quan tm n nhng
(u,v) m ti thc hin di chuyn xung pha di, ta cng vo s thm F[u,v+1].
Kt qu s th t ca dy catalan tng ng vi cch i l s+1.

35

Mt s vn ng ch trong mn tin hc

VN : QUY HOCH NG TRN CY


Cy l th v hng c bit c nhng tnh cht sau y:
- Lin thng v khng c chu trnh.
- Gia 2 nh bt k c duy nht mt ng i n.
- Nu b i 1 cnh bt k th cy phn thnh 2 cy con.
Thut ton quy hoch ng trn cy ch yu da vo cc tnh cht c bit trn
ca cy. Thng thng vi th cy, ngi ta cn xc nh mt cy quan h cha - con
thc hin cng vic quy hoch ng. Vic xc nh ny c th s dng php duyt
DFS, khi nhng nh v c thm tip theo trong qu trnh duyt nh u s nhn nh
u lm cha.
T tng Quy hoach ng l tm thng tin ca nt cha da vo thng tin ca
nhng nt con tm c trc . Cc bn s hiu thm qua cc bi ton c th sau
y:
Bi ton: Cho 1 cy , hy tm ng i di nht trong cy .
<problem PT07Z( spoj.pl/problems/PT07Z)>
Input :
Dng u tin l n , s nt ca cy ( n<=100000)
n-1 dng sau , mi dng l 2 s u,v m t 1 cnh ca cy.
Output
di ng i di nht trong cy .

Input
4
12
23
34
Output
3

Thut Ton : u tin , coi nt 1 l nt gc chng hn ,Thc hin duyt t l v gc ,gi f[i,1] l
di ng i di nht m tp nh ca n l cc nt con ca I ( khng cha nh I ), f[I,2] l di
ng i di nht m trong tp nh ny cha im i.

Cng thc Qhd:


F[I,1]=max(f[i1,1] , f[i1,2] , f[i2,1] , f[i2,2] ,.,f[ik,1] , f[ik,2])
F[I,2]=max(f[iu,2] + f[iv,2])
Trong :+ i1,i2,..ik l cc nt con k vi nt i
+ Iu,iv l 2 trong s cc nt con k vi nt I (iu <> iv)
Kt qu l max(f[1,1] , f[1,2]);
Trong chng trnh mu sau s trnh by 1 thut gii khc, l
+u tin thc hin DFS t mt nh bt k no <nh 1 chng hn> gi s nh c khong cch
ln nht n nh 1 l nh k.Thc hin DFS ln th 2 t nh k, th kt qu l khong cch t nh
c khong cch xa k nht n k.
Bi ton : Cho 1 cy c trng s , hy tm ng i di nht trong cy
Input :
Dng u tin l n , s nt ca cy ( n<=100000)
n-1 dng sau , mi dng l 2 s u,v,c m t 1 cnh ca cy.(c<=10000)
Output
di ng i di nht trong cy .

Input
4
121
231
341
Output
3
Thut ton tng t nh bi trn , ch cn khai bo kt qu kiu int64 .

Bi 5 Nhn ca cy <vn.spoj.pl/problems/ITREE>
Cho th cy c trng s gm N nh , cc nh c nh s t 1 -> N . Gc ca cy l nh 1 .
Cha ca nh u l 1 nh c s hiu nh hn u . Mi nh c mt nhn l 1 s thc A[i] . Trong
nhn ca nh 1 bng 1 v nhn ca nh l bng 0 . Bit rng A[v] A[u] nu v l con ca u .Gi
tr ca 1 cy = Tng ( ( A[u] A[v] ) * Trng s cnh (u,v) , vi u l cha ca v )By gi ngi ta
cho bit cc cnh ca th v trng s ca cc cnh ny nhng khng cho bit cc A[i].Hy tnh
xem gi tr ca cy thp nht l bao nhiu.

Input
Dng 1 l s nguyn T l s b test . ( 1 T 50 ) . T nhm dng tip theo m t tng b test .
Mi b Test s c cu trc nh sau :
Dng 1 : s nguyn dng N ( 1 N 1000 ) .
T dng 2 -> dng N : dng th i gm 2 s nguyn dng u v c ( 1 u < i , 0 c 1000 ) cho
bit cha ca nt i l nt u v cnh ni (u,i) c trng s l c .
Output
Vi mi test ghi ra gi tr thp nht c th t c ca cy trn 1 dng vi chnh xc l 2 ch
s sau du chm.
Example
Input:
1
4
11
12
21
Output:
3.00

Thut ton : tn ti 1 cch gn nhn trn cy tha mn iu kin bi ton v nhn cc nh l 0 v 1


T suy ra cng thc qhd sau
+ gi f[I,0] v f[I,1] l gi tr nh nht ca cy gc I , nu tt c cc nt con ca I c gn
nhn ht v gi tr gn cho nt I tng ng l 0,1
+cng thc QHd
F[I,0] =tng gi tr cc nt con ca I v chng u c gn nhn l 0(do gi tr nt con phi b
hn gi tr nt cha)
F[I,1]=max(f[i1,0] , f[i1,1]) + + Max(f[ik,0], f[ik,1]);
Trong i1,ik l cc nt con k vi nt i

Bi ton:
Ba tip vui v (GUEST)
Cng ty trch nghim hu hn Vui v c n cn b nh s t 1 n N. Cn b i c
nh gi vui tnh l Hi ( i = 1 , 2 ..N ) . Ngoi tr gim gim c cng ty , mi cn b c
1 th trng trc tip ca mnh .
Bn cn gip cng ty mi mt nhm cn b n d d tic Vui v sao cho trong s
nhng ngi c mi khng ng thi c mt nhn vin v th trng trc tip v
ng thi tng nh gi vui tnh ca nhng ngi d tic l ln nht .

Gi thit rng mi mt th trng khng c qu 20 cn b trc tip di quyn.


D liu: GUEST.INP
 Dng u tin ghi s cn b ca cng ty ( 1<n<1001)
 Dng th i trong s N ng tip theo ghi hai s nguyn dng Ti , Vi trong Ti
l s hiu ca th trng trc tip v Vi l vui tnh ca cn b i . Quy c Ti=0
nu nh s hiu ca gim c cng ti
Kt qu: GUEST.OUT
 Dng u tin ghi hai s M v V . Trong M l tng s cn b c mi cn V
l tng vui v ca cc cn b c mi
Dng th K trong s M dng tip theo , mi dng ghi s hiu cc cn b c mi
V d :
GUEST.INP

GUEST.OUT

3
03
16
24

27
1
3

36

Mt s vn ng ch trong mn tin hc

Gi : C th thy s quan h trong cng ty c dng cy cha-con.


1
2
3

Gi F1[i] l tng vui tnh ca cch chn nu xt trong nhng ngi di quyn
qun l ca i v i l ngi c chn.
Gi F0[i] l tng vui tnh ca cch chn nu xt trong nhng ngi di quyn
qun l ca i v i l ngi khng c chn.
Cng thc Quy hoch ng:
- F1[i] = Vi nu i khng l xp ca ai
- F0[i] = 0 nu i khng l xp ca ai
Trng hp cn li
- F1[i] = F 0[ i'] + Vi
- F0[i] = max(F 0[i'], F1[i'])
Trong i l nhng nt nhn i lm cha trc tip.
Kt qu tng vui v ln nht l max (F1[j],F0[j]) trong j l s hiu gim c ca
cng ty. a nhng ngi c chn da vo mng F1 v F0.

Bi ton: T mu nh nht (CTREE)


Cho mt cy gm N nt, hy tm cch gn mi nh mt nhn nguyn dng sao
cho:
+ Hai nt c cnh ni c gn bi hai nhn khc nhau. +
Tng gi tr cc nhn l nh nht.
D liu:
 Dng u tin ghi N ( 1 N 10000).
 N-1 dng tip theo, mi dng ghi hai nt l hai u mt ca mt cnh thuc cy.
Kt qu:
 Dng u tin ghi S l tng gi tr nhn tm c.
 N dng tip theo, dng th i ghi nhn gn cho nh i trong php gn ti u tm
c.

37

Mt s vn ng ch trong mn tin hc

V d:
CTREE.INP
8
12
13
14
15
56
57
58

CTREE.OUT
11
3
1
1
1
2
1
1
1

Gi : Cy c cho di dng danh sch cnh, cha c mt xc nh cha-con c th, do c


th duyt th bng DFS to mt th t cha-con bt k cho cy.
1

Cy con gc 5

Mt th t cha-con ca cy vi 1 l gc

D dng chng minh c c th dng khng qu 3 mu t mu cy. nh s


3 mu l 1,2,3. Gi F[i,x] l tng gi tr khi t cy con gc i trong nt i c t
mu x (1 x 3 ).
Cng thc Quy hoch ng:
- F[i,x] = x nu i l nt l (khng c nt con no).
k

- F[i,x] = i ' = max (F[C[i],x]) nu i khng phi l nt l.


1
Trong
- nt i c k nt con trc tip C[1],C[2]C[k]
- max (F[C[i],x]) l gi tr ln nht trong cc F[C[i],x] vi

1 x' 3 v x ' x

T tng c tin hnh bng k thut xc nh cy quan h cha con kt hp vi Quy hoch
ng trong php duyt DFS th:
Php duyt DFS nh i
nh du thm nh i
Nu i khng ni vi nh no cha thm th F[i,x] = x vi x:13
Ngc li nu ii l nh ni vi i v cha c thm
Gi php duyt nh ii - ii nh du l con ca i
Tnh F[i,x] da vo cc F[ii,x]

38

Mt s vn ng ch trong mn tin hc

Luyn tp:
Cy P nh (PTREE)
Bi ton:
Cho mt cy gm N nh , mi nh c 1 nhn C[i] gi l trng s ca nh i . Hy
tm 1 cy con gm P nh sao cho tng trng s ca cy con ny l ln nht . Hiu 1 cch
n gin l tm P nh sao cho P nh ny lin thng v tng trng s l ln nht .
D liu: PTREE.INP
 Dng 1 : 2 s nguyn dng N v P . ( 1 P N 200 ) .
 Dng 2 : N s nguyn dng C[1] , C[N] . ( -1000 C[i] 1000 ) .
 N - 1 dng tip theo , mi dng gm 2 s nguyn dng u , v m t 1 cnh ca
th .
Kt qu: PTREE.OUT
 Gm 1 dng ghi ra P s nguyn l ch s ca P nh c chn .
V d:
PTREE.INP
32
123
12
23

PTREE.OUT
23

Gi : Quy hoch ng trn cy 2 ln lng nhau:


Gi F[i,p] l tng trng s ln nht nu xt trong cy con gc i chn p nh lin
thng v i cng l nh c chn. D thy cn chn p nh m nh i c chn nn
cn chn thm p-1 nh na cc nhnh con ca gc i. Gi s i c k nt con trc tip
C1,C2Ck. Bi ton tnh F[i,p] li c chuyn thnh bi ton tnh tng gi tr ln nht
khi chn p-1 nh k nhnh con. Gi FF[ii,pp] l tng trng s ln nht khi chn pp nh
ii nhnh C1,C2Cii (1 ii k, 1 pp p 1 ). Quy hoch ng tnh FF[ii,pp]. V
F[i,p] = C[i] + FF[k,p-1].
Bi ton:
Xy cu (BRIDGES)
t nc Delta l quc o ln trn th gii. t nc gm N o nh c nh
s t 1 n N. Vic i li gia cc o l rt kh khn. V kinh t cn rt km pht trin,
nh nc phi kh khn lm mi m c N - 1 tuyn ph bin ngi dn ngi dn
c th i li c gia hai o bt k. Cch y khng lu, t nc mi nhn c s
u t ln ca cc nc t bn. Nh vua quyt nh xy mi K cy cu thay cho K
tuyn ph. Cc cy cu mi c xy dng s ni lin hai o m trc y c tuyn ph
ni trc tip. Nh vua mun tnh ton chn K tuyn ph no xy thnh cu sau cho
N 1
N

tng thi gian i li gia mi cp nh l nh nht. Tc l: A, B t gi tr


A=

1
T
B =A +
1

nh nht. Trong o TA,B l thi gian i t o A n o B. Bn hy gip nh Vua tnh


ton chn ra K trong s N - 1 tuyn ph thay th bng cu.

39

Mt s vn ng ch trong mn tin hc

D liu: BRIDGES.INP
 Dng th nht ghi 4 s nguyn N, K, VP, VC trong VP l vn tc nu i bng
ph v VC l vn tc nu i bng cu. VP v VC c n v l m/s
 N - 1 dng tip theo, mi dng ghi 3 s U V L th hin gia o U v o V
c mt tuyn ph, v khong cch gia U v V l L mt.
Kt qu: BRIDGES.OUT
 In ra K s l s hiu ca tuyn ph cn c thay th bng cu.
Gii hn:
 1 K < N 10 000
 1 VP, VC 100 000
 1 LU,V 106
V d:
BRIDGES.INP BRIDGES.OUT
6212
13
1 2 5
3 2 6
1 4 4
4 6 4
455

Gi : Mng li cc tuyn ph c dng mt th cy.


1 v

2
3

F[4] = 3
T(3,1) = 3*(6-3) = 9

4 u
5

Vi mi tuyn ph hay cnh (u,v) trn cy, nh ngha T(u,v) = s ng i gia 2


nh A v B c i qua cnh (u,v). Nu b cnh (u,v) th cy s phn thnh 2 cy con, mt
cy cha u c Fu nh v cy cn li cha (N - Fu) nh. Do T(u,v) = Fu*(N-Fu).
C th tnh F[u] l s nt con ca cy gc u (cc nt con ca u bao gm cc u l con ca
u v u l con ca u ) bng phng php Quy hoch ng trn cy. Sau tnh c
T(u,v) vi (u,v) l mt cnh ca cy ng thi v l cha trc tip ca u.
Cn tm ra K cnh (u,v) c T(u,v) ln nht chnh l cc tuyn ph cn c thay th.

40

Mt s vn ng ch trong mn tin hc

Bi ton:
Cy cn bng (BALANCE)
Cho mt cy T vi N nt (1N20000) c nh s t 1 n N. Hai nt hoc l
ni vi nhau bi mt cnh duy nht hoc khng ni vi nhau. Xa bt k nt no trong
cy s sinh ra mt rng: rng l tp hp mt hoc nhiu cy. nh ngha cy cn bng
ca mt nt l kch c ca cy ln nht trong rng T c to bi bng cch xa nt T.
VD cho mt cy
1
2

4
5

Xa nt 4 to ra hai cy vi cc nt ca chng l {5} v {1,2,3,6,7}. Cy ln hn


trong hai cy c nm nt, do cy cn bng ca nt 4 l nm
D liu: BALANCE.INP
 Dng u tin ghi s nguyn dng N.
 Mi dng trong N dng tip theo ghi hai s tng ng vi mt cnh trn cy.
Kt qu: BALANCE.OUT
 Dng u l s th t nt c cn bng nh nht.
 Dng tip theo l cn bng ca nt .
Bi ton:
Ri si (STONE)
Xt tr chi ri si vi mt ngi chi nh sau: Cho cy T v mt ng si gm K
vin. mi bc ngi ta ly 1 vin si t ng si v t vo mt nt l tu chn. Nu
nt p c r nt l v tt c v tt c cc nt l u c si th ngi ta gom tt c cc vin
si l li, t 1 vin nt p, xo cc nt l ca n v hon tr r - 1 vin si cn li vo
ng si.
Tr chi kt thc khi t c 1 vin si vo nt gc
Nhim v t ra l theo cu trc ca cy T, xc nh s vin si ti thiu ban u
tr chi c th kt thc bnh thng. Cy c n nt ( N 400), nt gc c nh s l 1.
D liu: STONE.INP
 Dng u: s n
 Dng th i trong s n dng tip theo c dng: i m i1 i2 ... im. Trong m l s nt
con ca nt i; i1, i2, ..., im: Cc nt con ca nt i.
Kt qu: STONE.OUT
 S lng vin si ti thiu cn thit

41

Mt s vn ng ch trong mn tin hc

V d:
STONE.INP
7
1223
2254
3267

STONE.OUT
3

Bi ton: on ng cc tr (LUBENICA)
Mng li giao thng 1 nc bao gm N thnh ph (nh s t 1 n N) v N-1
ng ni cc thnh ph vi nhau. C mt ng i duy nht gia mi cp thnh ph.
Mi con ng c mt di xc nh.
Vit chng trnh, vi mi K cp thnh ph cho trc, tm di ca con ng
ngn nht v di nht trn ng i gia 2 thnh ph ny.
D liu: LUBENICA.INP
 Dng u tin cha s nguyn N, 2 N 100 000.
 Mi dng trong s N-1 dng tip theo cha 3 s nguyn A, B, C cho bit c mt
con ng di C gia thnh ph A v thnh ph B. di ca mi con ng
l s nguyn dng khng vt qu 1000000.
 Dng tip theo cha s nguyn K, 1 K 100 000.
 Mi dng trong s K dng tip theo cha 2 s nguyn D v E - ch s ca 2 thnh
ph cn truy vn.
Kt qu: LUBENICA.OUT
 Mi dng trong s K dng cha 2 s nguyn - di ca con ng ngn nht v
di nht trn ng ni gia 2 thnh ph tng ng.

42

Mt s vn ng ch trong mn tin hc

V d:
LUBENICA.INP
5
2 3 100
4 3 200
1 5 150
1 3 50
3
24
35
12

LUBENICA.INP
7
364
171
132
126
254
244
5
64
76
12
13
35

LUBENICA.OUT
100 200
50 150
50 100

LUBENICA.OUT
26
14
66
22
26

LUBENICA.INP
9
122
231
345
274
153
561
592
183
5
69
78
94
12
73
LUBENICA.OUT
12
24
15
22
14

Gi : Chn mt nt u lm gc v DFS thit lp quan h cha-con trn cy.


u
v

Gi F[i] l di cnh ngn nht trn ng i t i v gc u


Gi SF[i] l tng s cnh c di bng F[i] trn ng i t i gc u
Vi 2 nh s,t tm v l nh chung gn nht trn ng i t s v u v ng i t
t v u.
C th tnh c di an ngn nht c1 trn ng i t s v v da vo F[s],
FS[s] v F[v], FS[v].
Tng t tnh c c2 l an ngn nht trn ng i t t v s
Kt qu an ngn nht trn ng i t s n t l min(c1,c2)
Thut ton tng t cho yu cu tm an ng di nht.
43

Mt s vn ng ch trong mn tin hc

Cy nh phn (BTR)

Bi ton:

Xt cy nh phn, mi nt ca cy c 2 nt con: nt tri v nt phi. Mi nt c mt


gi tr nguyn. Nu nt cha c gi tr x, th nt con tri c gi tr 2x v nt con phi c gi tr
2x+1. Nt gc ca cy c gi tr 1.
Xut pht t nt, gc ng duyt cy i thm mt nt no c th m t bng
xu cha cc k t t tp {L,R,P}. K t L ni ln rng t nt hin ti ta s i sang nt tri
ca n trn ng thm, cn k t R - xc nh vic i sang nt phi. K t P xc nh
vic tm dng, ti bc ny khng chn nhnh i tip. cui cng i dn ti l c
thm. Gi tr ny c gi l gi tr thm ca ng. V d ng duyt LR c gi tr
thm l 5, cn ng RPP c gi tr thm l 3.
Trong nhiu trng hp, ngi ta phi duyt cy v thm mt s nt. biu din
tp cc ng duyt cy ngi ta s dng k t * i din cho k t bt k trong tp
{L, R, P}. V d tp ng duyt L*R s xc nh 3 ng duyt: LLR, LRR v LPR vi
cc gi tr thm tng ng l 9, 11 v 5. Nh vy tng gi tr thm ca tp ng ny l 9
+ 11 + 5 = 25.
Yu cu: Cho xu S di khng qu 104 k t xc nh mt ng duyt hoc tp
ng duyt. Hy xc nh tng gi tr thm xc nh bi s.
D liu: BTR.INP
 Gm mt dng cha xu s
Kt qu: BTR.OUT
 Mt s nguyn l tng gi tr thm
V d:
BTR.INP
L*R

BTR.OUT
25

Gi :
F[0]:=1;
cc:=1;
for i:=1 to length(s) do
begin
if s[i]='L' then F[i]:=F[i-1]*2
else if s[i]='R' then F[i]:=F[i-1]*2 + cc
else if s[i]='P' then begin end
else
begin
F[i]:=F[i-1]*5 + cc;
cc:=cc*3;
end;
writeln(F[i])

44

Mt s vn ng ch trong mn tin hc

VN : SP XP TOPO V NG DNG
Bi ton:
Sp xp Topo
Cho th c hng khng chu trnh. Tm cch sp xp th t cc nh sao cho
mi cung (u,v) ca th th nh u nm trc nh v trong dy sp xp. Hay ni cch
khc l tm cch nh s cch nh ca th (cc nh khc nhau c s khc nhau) sao
cho mi cung (u,v) u ni nh c ch s b hn n nh c ch s ln hn.
Hng gii quyt:
Cch lm th nht: trong th c hng khng chu trnh th lun tn ti t nht
mt nh c bc vo bng 0 ( c th chng minh bng phn chng). Ln lt ly cc nh bc
vo bng 0 ra khi th, cho xp v tr u tin, b cc cung ra t nhng nh bc 0 ny
th th s xut hin nhng nh bc 0 mi. li ly nhng nh bc 0 ny xp vo v tr tip
theo. C lm nh vy cho n khi b ht cc nh ca th.
Cch lm th hai (n gin v d ci t hn): Thc hin qu trnh duyt DFS
th, nh no c duyt xong sm hn s nm v tr cui hn hay c ch s ln hn. M t
cch lm ny nh sau:
Procedure DFS(u:integer);
Begin
visited[u]:=true; {nh du nh u thm}
for v:=1 to n do
If a[u,v] and (not visited[v]) then {c cung (u,v) v nh v
cha thm}
DFS(v);
num[u]:=id; {gn ch s cho nh u l id}
q[id]:=u; {mng th t cc nh}
dec(id);
End;
Procedure Process;
Begin
fillchar(visited,sizeof(visited),false);
id:=n;
for u:=1 to n do
If not visited[u] then DFS(u);
End;

Thut ton sp xp topo c nhiu ng dng quan trng s c xt sau y.


Bi ton:
ng i di nht.
Cho th c hng khng chu trnh, tm ng i di nht xut pht t mt nh
v kt thc ti mt nh ( di ng i c nh ngha l s cung trn ng i).
Hng gii quyt: do th c hng khng chu trnh nn c th dng thut ton sp xp
topo nh s th (dng cc s t 1 n n nh s).
Goi F[i] l di ng i di nht nu bt u t nh c ch s i.

45

Mt s vn ng ch trong mn tin hc

F [n ] = 0
p dng Quy hoch ng:
F[ i] = max(F[ j] +1 )\ i : n 1 1 ; j :i +1 n ; ( i, j)lcung
Kt qu di ng i di nht l max(F[i]). Dng thm mng truy vt trong phn
QHD nu mun xut ra ng i di nht.
Topo; {thut ton sx topo dng mng q lu th t nh sp xp}
{q[i]=u ngha l nh u v tr i hay c nhn l i}
F[n]:=0;
For i:=n-1 downto 1 do
Begin
k:=0;
for j:=i+1 to n do
if a[q[i],q[j]] then
{nu c cung ni nh c nhn i vi nh c nhn j}
if f[j]+1 > k then
begin
k:=f[j]+1;
trace[i]:=j;
end;
F[i]:=k;
End;
K:=0;
For i:=1 to n do k:=max(k,F[i]);
Writeln(k); { di ng i di nht}

Ch : c th tm di ng i di nht bng cch khc l :


Lt 1: b i cc nh c bc vo bng 0 trong th. B i cc cung ra t n.
Sau khi b, th xut hin nhng nh c bc vo bng 0 mi. Tip tc thc hin lt b
th 2 tng t lt 1. C thc hin nh th cho n khi no b ht cc nh ca th th s
lt b c thc hin chnh l di ng i di nht.
Bi ton:
Tng s ng i
Cho th c hng khng chu trnh v 2 nh s,t. Cho bit c bao nhiu ng i t
s n t. (2 ng i khc nhau nu th t cc nh trn chng khc nhau)
Hng gii quyt: u tin s dng thut ton topo nh s th. Mng num[u] cho
bit ch s ca nh u v mng q[i] cho bit nh c ch s i. (num[u]=i  q[i]=u)
p dng t tng Quy hoch ng gi F[i] l s con ng xut pht nh c ch s i v
kt thc nh t.
F [ q [ t ]] =1
Khi to
F [ i ] 0( i q [ t ])
=
F [ i ] = F [ j ] \ j : i + 1 n ; ( i, j) lcung

Cng thc QHD:


i: q[t] 1 q[s]
Kt qu ca bi ton l F[q[s]].

46

Mt s vn ng ch trong mn tin hc

Topo;
Fillchar(F,sizeof(F),0);
F[q[t]]:=0;
For i:=q[t]-1 downto q[s] do
Begin
k:=0;
for j:=i+1 to n do
if a[q[i],q[j]] then
{nu c cung ni nh c nhn i vi nh c nhn j}
k:=k + F[j];
F[i]:=k;
End;
Writeln(F[q[s]]);

Luyn tp:
Bi ton:
Thc hin d n
C mt d n c chia thnh nhiu cng vic nh hn. Mi cng vic cn mt
khong thi gian no hon thnh. ng thi mt s cng vic rng buc nhau v
ch c bt u thc hin khi hon thnh xong mt s cng vic no .Tm thi gian t
nht hon thnh d n (cho bit c th thc hin nhiu cng vic mt lc nu cc cng
vic ny khng rng buc nhau).
D liu:
 Dng u tin ghi n l s cng vic ca d n n100
 Dng tip theo ghi n s , s th i l thi gian Ti thc hin cng vic i.
(Ti 100.000)
 N dng tip theo, dng th i lit k ch s cc cng vic j m cng vic j phi
c hon thnh trc khi thc hin cng vic i. Quy c dng th i ghi s 0 nu
cng vic i khng b rng buc bi cng vic no (c th thc hin bt c thi
im no).
Kt qu:
 Dng u ghi YES hay NO tng ng vi vic c th hon thnh d n hay
khng.
 Nu dng u l YES th dng sau l thi gian t nht hon thnh d n.
Gi : Xt th c n nh i din cho n cng vic.Xy dng cung (u,v) nu cng vic v ch
c thc hin sau khi hon thnh cng vic u v trng s cung ny bng thi gian thc
hin cng vic v. Xy dng thm nh n+1 c cung ni vi tt c cc nh cn li v trng s
bng thi gian thc hin cng vic .
Nu th xy dng c chu trnh th d n s khng th hon thnh. Ngc li
thi gian t nht hon thnh d n l trng s ng i c trng s ln nht trn th.
Bi ny s dng thut ton ging bi ng i di nht trn ch c iu bi
trn cc cung c trng s l 1 cn y cc cung c trng s l thi gian thc hin
cng vic tng ng.
Ch : Thut ton Topo c th s dng kim tra xem th c chu trnh hay khng ?.
Bi ton: Vng ua xe p (BIC)
47

Mt s vn ng ch trong mn tin hc

Mt vng ua xe p c t chc trn N thnh ph, nh s t 1 n N. C M


ng ni (mt chiu) gia cc thnh ph. Vng ua bt u t thnh ph 1 v kt thc ti
thnh ph 2.
Yu cu: Hi c bao nhiu cch t chc cc vng ua? (Bit hai vng ua l khc nhau
nu chng khng s dng cc tuyn ng nh nhau)
D liu: BIC.INP
 Dng 1: N, M
 M dng tip theo: mi dng cha hai s nguyn A, B, cho bit c mt ng ni
gia thnh ph A v thnh ph B
Cc thnh ph c th ni vi nhau bi nhiu hn mt con ng
Kt qu: BIC.OUT
 Gm 1 dng duy nht: s cch t chc cc vng ua.
 Nu kt qa c nhiu hn 9 ch s, ch cn in ra 9 ch s cui cng. 
Nu c v s cch t chc cc ng ua, in ra inf.
Gii hn:
 1 N 104
 1 M 105
V d:
BIC.INP
8 14
67
68
7 5
5 2
5 3
4 8
1 6
5 2
7 5
6 4
1 4
5 2
7 4
83

BIC.OUT
6

BIC.INP
22
12
21

BIC.OUT
inf

Bit ton: L c - HSG QG 2008 (JUMP)


Nhy l c l tr chi dn gian ca Vit Nam. Ngi trn hnh tinh X cng rt
thch tr chi ny v h ci bin tr chi ny nh sau: Trn mt phng v n vng trn
c nh s t 1 n n. Ti vng trn i ngi ta in s nguyn dng ai. Hai s trn
hai vng trn ty khng nht thit phi khc nhau. Tip n ngi ta v cc mi tn,
mi mi tn hng t mt vng trn n mt vng trn khc. Quy tc v mi tn l: Nu
c ba s ai, aj, ak tha mn ak = ai + aj th v mi tn hng t vng trn i n vng trn k
48

Mt s vn ng ch trong mn tin hc

v mi tn hng t vng trn j n vng trn k. Ngi chi ch c di chuyn t mt


vng trn n mt vng trn khc nu c mi tn xut pht t mt trong s cc vng
trn, di chyn theo cch mi tn v i n cc vng trn khc. Ngi thng cuc s l
ngi tm c cch di chuyn qua nhiu vng trn nht.
V d: Vi 5 vng trn v cc s trong vng trn l 1, 2, 8, 3, 5, tr chi c trnh by
trong hnh di y:

Khi c th di chuyn c nhiu nht qua 4 vng trn (tng ng vi ng di


chuyn c t m trn hnh v).
Yu cu: Hy xc nh xem trong tr chi m t trn, nhiu nht c th di chuyn c qua
bao nhiu vng trn.
D liu: JUMP.INP
 Dng u cha s nguyn n (3 n 1000);
 Dng th hai cha dy s nguyn dng a1, a2, ..., an (ai 109, i=1, 2,..., n). 
Hai s lin tip trn mt dng c ghi cch nhau bi du cch.
Kt qu: JUMP.OUT
 Ghi ra s lng vng trn trn ng di chuyn tm c.
V d:
JUMP.INP
5
12835

JUMP.OUT
4

49

Mt s vn ng ch trong mn tin hc

VN : PHT HIN CHU TRNH


Bi ton:
Chu trnh trong th c hng
Cho th c hng G, kim tra xem th c chu trnh khng v xut ra chu trnh
.
Hng gii quyt:
Cch th nht: Vi mi cung (u,v) ca th G, th b cung (u,v) v kim tra
xem c ng i t v n u khng. Nu c th ng i ny kt hp vi cung (u,v) to
thnh mt chu trnh.
Cch th hai: Vi mi nh u ca th, nu nh ny cha c duyt th thc
hin qu trnh DFS t nh , trong qu trnh DFS, nu gp nh v m nh v li ang
nm trong qu trnh duyt DFS th c chu trnh xut pht t nh . Ch : nh du
nhng nh duyt trong qu trnh DFS hn ch nhng nh u.
u
v

Procedure DFS(u:integer);
var v:integer;
begin
inDFS[u]:=true; {danh dau dinh u dang
visited[u]:=true; {danh dau dinh u da
for v:=1 to n do
if a[u,v] then
if not visited[v] then
begin
DFS(v);
Trace[v]:=u; {mang de truy vet
end
else if inDFS[v] then
begin
{xuat chu trinh xuat phat tai v

trong qua trinh DFS}


duoc tham}

duong di}

va ket thuc tai u dua vao


mang Trace}

end;
inDFS[u]:=false; {ket thuc qua trinh DFS tu dinh u}
end;
Procedure Process;
Var i:integer;
Begin
Fillchar(inDFS,sizeof(inDFS),false);
Fillchar(visited,sizeof(visited),false);
For i:=1 to n do
If not visited[i] then DFS(i);
End;

50

Mt s vn ng ch trong mn tin hc

M rng vn : Nu th v hng G l dng c bit: mi nh c ng 1 cung ra th


vic pht hin chu trnh c thc hin mt cch d dng hn: t mt nh c th ln
theo cc cung ni tip nhau xc nh xem c chu trnh xut pht t nh khng.

Ngoi ra, v mi nh c ng 1 cung ra nn mi nh hoc khng thuc chu trnh


no hoc thuc duy nht 1 chu trnh. Do ta c th lit k tt c cc chu trnh ca th
bng cch tm mt chu trnh, b chu trnh khi th v thc hin tm kim chu trnh tip
theo cho n khi no th ht chu trnh.
ng dng chu trnh trong dng th c bit ny gii 2 bi ton sau:
Bi ton:
Tp cc l bi cc i (CARD)
Cho n l bi ( n 20000) c nh s hiu t 1 n N. Trn mi l bi ghi mt s
nguyn F[i], (1 F[i] n, i = 1..n), c th c nhiu l bi cng ghi mt s. Hy chn ra trong n
l bi trn mt tp nhiu nht cc l bi sao cho tp hp cc s hiu ca cc l bi c chn
ging ht vi tp hp ca cc s ghi trn cc l bi.
D liu: CARD.INP
 Dng u ghi s n.
 Dng tip theo gm n s, s th i l s ghi trn l bi th i.
Kt qu: CARD.OUT
 Dng u ghi s k, l s ln nht cc l bi c chn.
 Dng tip theo ghi k s l s hiu ca cc l bi c chn theo th t tng dn.
V d:

Gi : Xt th n nh, mi nh i din cho mt l bi. L bi i c ghi s nguyn F[i]


th c cung ni nh i vi nh F[i] trn th. D thy y l th c bit nh ni
trn.

51

Mt s vn ng ch trong mn tin hc

2
5

12

13

14
10
1

11

Tm tt c cc chu trnh trn th, cc nh nm trong cc chu trnh s i din


cho cc l bi trong tp c chn. (cc bn t chng minh tnh ng n ca thut ton).
Bi ton:

H thng d liu ca Ngn Hng (HTDL)

Mt ngn hng c N chi nhnh c tn t 1 n N, mi chi nhnh c mt h thng d


liu (HTDL), hai chi nhnh khc nhau c HTDL khc nhau. Trong mt ln thay i my
tnh ca ton b N chi nhnh, do s xut, ngi ta ci t khng ng v tr ca cc
HTDL, chng hn HTDL ti A l ca chi nhnh B, ti B l ca chi nhnh C, (c th c
chi nhnh gi ng HTDL ca n), mc d hai chi nhnh khc nhau vn gi hai
HTDL khc nhau.
Cn phi tin hnh tro i cc HTDL gia cc chi nhnh sao cho mi chi nhnh c
c HTDL ca n. Gia hai chi nhnh c th tin hnh trao i trong mt ngy, hai cp my
khc nhau c th lm n thi cng vic ny trong cng mt ngy. Hy tnh xem cn t nht
bao nhiu ngy hon tt cng vic ny.
D liu: HTDL.INP
 Dng u ghi s N <= 10000.
 Dng th hai ghi N s, s th i l HTDL ca chi nhnh m chi nhnh i ang gi
hin thi.
Kt qu: HTDL.OUT
 Dng u ghi s M l s ngy t nht cn cho vic tro i.

M dng tip theo, mi dng gm n s, s th i trong n s l s hiu chi nhnh
tin hnh tro i vi chi nhnh th i trong ngy .
V d :
HTDL.INP
7
4312675

HTDL.OUT
2
3412765
1243576

Gi : Xem N chi nhnh ngn hng l N nh ca th, chi nhnh i ang gi HTDL ca chi
nhnh j th c cung (i,j) trn th. D thy th xy dng l th c bit nh ni
trn.

52

Mt s vn ng ch trong mn tin hc

2
5

Khng nhng th th ny cn c bit hn ch khng nhng mi nh c duy


nht mt cung ra m mi nh cn c duy nht mt cung vo. Do c th chng minh
c rng mi nh ca th thuc duy nht mt chu trnh hay ni cch khc c th
phn th thnh cc chu trnh c lp (khng c nh chung).
Chng minh: t nh u bt k, i ln theo cung ra, do s nh c hn nn n mt
lc no , ta gp phi mt nh v m nh v c cung ra duy nht n nh t i qua. Ta
s chng minh nh t l nh u. Tht vy, gi s t khc u th nh t s c 2 cung vo:
(v,t) v mt cung khc trn ng i t u n t => v l.Vy xut pht t mt nh u bt
k, ta tm c mt chu trnh cng kt thc u. Mt khc mi nh ch c mt cung ra v
mt cung vo nn khng c nh no thuc 2 chu trnh. Hay cc chu trnh l c lp vi
nhau.
u
t
v
Tr li bi ton, sau khi xy dng xong th, ta cn a th v dng m mi
nh c cung ni vi chnh n. Xt ln lt cc chu trnh:
Vi mi chu trnh x1,x2xn,x1. Trong ngy 1 ta tin hnh hon i HTDL ca chi
nhnh x1 vi chi nhnh xn, chi nhnh x2 vi chi nhnh xn-1 chi nhnh xn div 2 vi chi
nhnh xn - (n div 2)+1.
v d trn ta c chu trnh 1,4,2,3,1 - trong ngy 1 tin hnh hon i cung ra ca
nh 1 vi nh 3, ca nh 4 vi nh 2. v vi chu trnh 5,6,7,5 - ta hon i cung ra ca
nh 5 vi nh 7.
4

2
5

6
7

Sau khi hon i hoc th c a v trng mong mun, hoc th c


c phn thnh cc chu trnh m mi chu trnh ch c 1 nh hoc 2 nh (Vi trng
hp chu trnh c 2 nh, ta cn thm mt ngy na hon i HTDL ca 2 chi nhnh
ny cho nhau)

53

Mt s vn ng ch trong mn tin hc

2
5

6
7

Do bi ton cn ti a 2 ngy hon tt cng vic


Luyn tp:
Bi ton:

Knh xung yu - HSG QG 06 (CIRARC)

Mt h thng n my tnh (cc my tnh c nh s t 1 n n) c ni li thnh


mt mng bi m knh ni, mi knh ni hai my no v cho php truyn tin mt chiu t
my ny n my kia. Ta gi mt mch vng ca mng cho l mt dy cc my tnh v
cc knh ni chng c dng:
u1, e1, u2, ...,ui, ei, ui+1, ..., uk-1, ek-1, uk, ek, u1
trong u1, u2, ..., uk l cc my tnh khc nhau trong mng, ei - knh truyn tin t my ui n
my ui+1 (i = 1, 2, ..., k-1), ek l knh truyn tin t my uk n my u1. Mt knh truyn
tin trong mng c gi l knh xung yu nu nh bt c mch vng no ca mng cng
u cha n.
Yu cu: Hy xc nh tt c cc knh xung yu ca mng cho. D
liu: CIRARC.INP
 Dng u tin cha 2 s nguyn dng n v m.
 Dng th i trong s m dng tip theo m t knh ni th i bao gm hai s nguyn
dng ui, vi cho bit knh ni th i cho php truyn tin t my ui n my vi.
Cc s trn cng mt dng c ghi cch nhau bi du cch.
Kt qu: CIRARC.OUT
 Dng u tin ghi s nguyn k l s lng knh xung yu trong mng cho. Ghi
k = -1 nu mng khng cha knh xung yu.
 Nu k>0 th mi dng trong s k dng tip theo ghi thng tin v mt knh xung
yu tm c theo qui cch m t ging nh trong file d liu vo.
Hn ch: Trong tt c cc test: n 1000, m 20000
V d:
CIRARC.INP
22
12
21

CIRARC.OUT
2
12
21

CIRARC.INP
33
12
23
13

CIRARC.OUT
-1

54

Mt s vn ng ch trong mn tin hc

Gi : Xt th c hng biu din h thng n my tnh. Tm mt chu trnh bt k (c


di cng nh cng tt). Vi mi cung trong chu trnh ny, th b cung ny i v kim
tra xem th cn chu trnh trnh khng. Nu khng th cung va b i ng vi 1 knh
xung yu.
Bi ton:
H thng thng bo hon thin (TBHT)
Mt trng c N hc sinh vi tn 1..N, N<=10000. Mt h thng thng bo trong
trng c t chc v hot ng nh sau. Mi hoc sinh chn mt hc sinh duy nht
khc (c gi l ngi k tip) truyn trc tip thng bo. Mi hc sinh khi nhn
c thngbo phi truyn cho ngi k tip mnh.
H thng thng bo c gi l hon thin nu khi mt hc sinh bt k pht i mt
thng bo no ti ngi k tip, ngi li truyn cho ngi k tip, c tip tc nh
vy, thng bo s c truyn n mi ngi trong trng k c ngi ban u pht
i thng bo.
D liu: TBHT.INP
 Dng th nht ghi s nguyn dng N.
 Trong N dng tip theo, dng th i ghi tn ngi k tip ca ngi i.
Cn xt xem h thng thng bo cho c hon thin khng. Nu khng hy thay i
ngi k tip ca mt s t nht ngi nhn c mt h thng thng bo hon thin.
Kt qu: TBHT.OUT
 Dng th nht ghi s T l s ngi cn thay i ngi k tip (T=0 c ngha l h
thng l hon thin).
 Nu T>0, trong T dng tip theo mi dng ghi hai s U, V c ngha l V l ngi
k tip mi ca U.
V d:
TBHT.INP TBHT.OUT
4
1
2
41
3
4
2
Gi : Chuyn v bi ton th c bit, cn thay i cung ra ca t nht cc nh sao
cho th l mt chu trnh duy nht. Cch gii quyt n gin l:
Xut pht t nh u c bc vo bng 0, i ln theo cc cung cho n khi no gp
nh v m nh v c cung ra ni n mt nh i qua (nh ny khc u) th tin hnh
thay i cung ra ca nh v ni n u. Lp li bc trn cho n khi khng cn nh u
no c bc vo bng 0.
Khi hoc th l 1 chu trnh (dng hon thin) hoc th gm nhiu chu
trnh ring bit - trong trng hp ny cn thc hin thm bc ghp ni cc chu trnh vi
nhau c mt chu trnh duy nht

55

Mt s vn ng ch trong mn tin hc

Bi ton:
Chu trnh c bn (CIRCUIT)
Mt khu du lch c n a im nh s 1, 2, ..., n v mt s ng i hai chiu ni
nhng cp a im . Gia hai a im bt k c nhiu nht l mt ng i ni
chng.
Mt khch du lch xut pht t a im S mun i thm mt s a im khc ri
sau quay tr v S. trnh s nhm chn, ng ta mun tm mt hnh trnh khng qua
mt con ng hay mt a im no qu mt ln (Tt nhin, ngoi tr a im S phi
c mt trong hnh trnh hai ln bi l ni bt u cng nh kt thc hnh trnh).
Yu cu: Hy ch ng cho du khch .
D liu: CIRCUIT.INP
 Dng 1: Cha hai s n, S (3 n 200).
 Cc dng tip theo, mi dng cha hai s nguyn dng u, v cho ta thng tin:
gia hai a im u v v c mt ng i hai chiu ni chng.
Kt qu: CIRCUIT.OUT
 Dng 1: Ghi t YES hay NO tu theo c tn ti hnh trnh tho mn yu cu ca
du khch hay khng
 Nu dng 1 ghi t YES, dng 2 ghi hnh trnh tm c: Bt u l a im S,
tip theo l danh sch cc a im s i qua theo ng th t trong hnh trnh,
cui cng li l a im S.
V d:
CIRCUIT.INP
71
12
15
17
23
24
34
56
67

CIRCUIT.OUT
YES
17651

1
2

6
4
7

56

Mt s vn ng ch trong mn tin hc

VN : CHU TRNH EULER


Bi ton:
Chu trnh Euler trong th v hng.
Cho th v hng G lin thng, tm chu trnh xut pht t mt nh, i qua tt c
cc cnh, mi cnh mt ln v kt thc ti nh xut pht. Chu trnh nh vy gi l chu
trnh Euler.
Hng gii quyt:
Trc ht ta chng minh nh l quan trng sau y: Mt th v hng lin
thng c chu trnh Euler khi v ch khi mi nh ca n u c bc chn.
Chng minh chiu thun: Gi u l nh xut pht, chu trnh Euler u,u1,u2,,um,u. Nu
xem chu trnh Euler u,u1,u2,,um,u l mt ng i (d) xut pht t u v kt thc ti u.
Vi nh v bt k, ta nh ngha s ln i qua nh v trong ng i (d) l s ln i t nh
v n v ri t v n v. Suy ra nt ln i qua nh v tng ng vi i qua 2 cnh ni
vi nh v. Mt khc chu trnh Euler i qua tt c cc cnh mt ln nn c th da vo s ln
i qua nh v xc nh bc ca nh v. C th nh sau:
Nu v khc u, gi s ln i qua nh v l k th s cnh ni vi nh v l 2k hay nh v
c bc chn.
Nu v trng vi u, gi s ln i qua nh v l k th s cnh ni vi v l 2k cng
thm cnh (u,u1) v cng thm cnh (um,u) tc l 2k+2, suy ra bc ca nh u cng l mt
s chn.
Vy vi th v hng G lin thng c chu trnh Euler th mi nh ca G u c
bc chn.
Chng minh chiu nghch: Gi G l th v hng lin thng m mi nh u c bc
chn. Ta s chng minh G c chu trnh Euler.
Tht vy, nu xut pht t nh u bt k trong th, i theo mt ng i (d) bt k
qua cc cnh (mi cnh ch qua nhiu nht 1 ln) v ng i ch dng li ti nh v nu t
v khng th i tip c na (do cc cnh ni vi v u c i qua). Ta s chng
minh nh v trng vi nh u.
Ta c (d): u,u1,u2,,um,v. Gi s v khng trng vi u, gi k l s ln i qua nh v th
s cnh ni vi v l 2k cng thm cnh (um,v) hay bc ca nh v l 2k+1 (l mt s l) - V
l. Vy v trng vi u.
Nh vy my ng i (d) bt k khi kt thc th cho ta mt chu trnh, gi l C1, b
chu trnh ny ra khi th v tip tc mt ng i khc, ta li c chu trnh C2, c
lm nh vy cho n khi mi cnh ca th u c i qua, ta c tp cc chu
trnh C1,C2Ct. Do th lin thng nn tp cc chu trnh ny c giao nhau ti cc nh.
Do c th mc ni cc chu trnh ny to thnh mt chu trnh duy nht. Chu trnh
chnh l chu trnh Euler
nh l trn gip kim tra th c chu trnh Euler hay khng, nu c, s dng
thut ton sau u tm ra chu trnh.

57

Mt s vn ng ch trong mn tin hc

M t thut ton:
Cho nh u bt k vo Stack
Lp
Ly t Stack ra nh u.
Nu tn ti nh v m (u,v) ang l cnh th b cnh (u,v) v
thm nh v vo Stack
Ngc li in ra nh u l nh trn ng i Euler.
Cho n khi Stack rng.
Procedure process;
Begin
Top:=1;
Q[1]:=1;
Repeat
u:=Q[top];
For v:=1 to n do
If a[u,v] > 0 then
Begin
dec(a[u,v]); dec(a[v,u]);
Inc(top);
Q[top]:=v;
Break;
End;
If u = Q[top] then
begin
writeln(u, -> );
dec(top);
end;
until top = 0;
End;

Bi ton:
ng i Euler trong th v hng
Cho th v hng G lin thng, tm ng i xut pht t 1 nh qua tt c cc
cnh, mi cnh ng mt ln v kt thc ti mt nh khc. ng i nh vy gi l
ng i Euler.
Hng gii quyt: iu kin cn v th G gm n nh c ng i Euler l n-2
nh ca G u c bc chn v 2 nh cn li c bc l.
Thut ton tm ng i Euler bng cch thm vo 1 cnh o ni 2 nh c bc l, sau
tm chu trnh Euler ri b cnh o trn chu trnh va tm c.
Bi ton:
Chu trnh Euler trong th c hng.
Cho th c hng G lin thng yu (nu xem cch cung l cch cnh th G tr thnh
th v hng lin thng), tm chu trnh xut pht t mt nh, i qua tt c cc cung,
mi cnh mt ln v kt thc ti nh xut pht. Chu trnh nh vy gi l chu trnh Euler.
Hng gii quyt: Cng chng minh tng t nh i vi th v hng: G lin thng yu
c chu trnh Euler khi v ch khi mi nh ca G u c bn bc vo bng bn bc ra (s
cung vo bng s cung ra).

58

Mt s vn ng ch trong mn tin hc

Vi nh l trn, ta cng c mt cch tm chu trnh Euler (nu c) tng t:


Cho nh u bt k vo Stack
Lp
Ly t Stack ra nh u.
Nu tn ti nh v m (u,v) ang l cung th b cung (u,v) v
thm nh v vo Stack
Ngc li in ra nh u l nh trn ng i Euler.
{ch ng i in ra s b ngc chiu vi cc cung}
Cho n khi Stack rng.
Procedure process;
Begin
Top:=1;
Q[1]:=1;
Repeat
u:=Q[top];
For v:=1 to n do
If a[u,v] > 0 then
Begin
dec(a[u,v]);
Inc(top);
Q[top]:=v;
Break;
End;
If u = Q[top] then
begin
writeln(u, <- );
dec(top);
end;
until top = 0;
End;

Bi ton:
ng i Euler trong th c hng
Cho th c hng G lin thng yu, tm ng i xut pht t 1 nh qua tt c cc
cung, mi cung ng mt ln v kt thc ti mt nh khc. ng i nh vy gi l
ng i Euler.
Hng gii quyt: iu kin cn v th G gm n nh c ng i Euler l n-2
nh ca G u c bn bc vo bng bn bc ra, v 2 nh cn li, 1 nh c bn bc vo
hn bn bc ra l 1 (nh u), 1 nh c bn bc ra hn bn bc vo l 1 (nh v).
Thut ton tm ng i Euler bng cch thm vo 1 cung o (u,v) ni 2 nh c
chnhh lch bn bc vo - bn bc ra l 1, sau tm chu trnh Euler trn th c hng ri
b cung o trn chu trnh va tm c.
Mt s bi ton p dng chu trnh Euler.
Bi ton:
Ni t (SECRET)
m c cnh ca b mt mt lu i c, cc nh kho c hc phi gii quyt
vn sau: C mt lng ln cc mnh nam chm trc cnh ca, trn mi mnh ghi
mt t. Cc mnh cn c sp xp thnh mt dy sao cho k t u tin ca t trn mi
mnh (t mnh th 2 tr i) phi ging k t cui cng ca t trn mnh trc. V d
mnh c t acm c th xp sau mnh c t motorola.
59

Mt s vn ng ch trong mn tin hc

Cho bit cc t trn N mnh nam chm, hy gip cc nh kho c hc kim tra xem c
th ghp cc mnh thnh mt dy hay khng m c cnh ca b mt.
D liu: SECRET.INP
 Dng u l s mnh nam chm (N30000)
 N dng tip theo, mi dng mt xu k t m t mt t c vit trn mt mnh
nam chm (cc t gm cc k t t a n z, cc t khc rng v c di
khng qu 9).
Kt qu: SECRET.OUT
 Ghi trn dng u tin, nu c th xp c th ghi possible, nu khng th ghi
impossible
Gi : Xt th G gm cch nh i din cho cc k t t a n z.Vi mi t trn
mnh nam chm, ta thm mt cung ni k t u ca t n k t cui ca t trn G. Bi
ton tr thnh kim tra th c hng G c ng i Euler hay khng. (ch kim tra
tnh lin thng yu ca G).
Bi ton:
V th (GRAPH)
Cho n th v hng G c N nh v M cnh. Xt bi ton v th nh sau:
Mi ln v ta t bt ti mt nh, di chuyn bt qua cc nh, mi ln i t nh ny n
mt nh khc, ta li v thm mt cnh. Ta khng c php v mt cnh qu mt ln
(tnh c hai chiu). Vi yu cu nh th, c th vi mt ln t bt ta khng th v c ht
cc cnh m phi dng nhiu ln nhc.
Yu cu: Hy tm cch v th cho trc sao cho s ln nhc bt l nh nht. D
liu: GRAPH.INP
 Dng u ghi hai s nguyn dng N, M (N100, M1000)
 M dng tip theo, mi dng ghi hai s u,v m t mt cnh ca th.
Kt qu: GRAPH.OUT
 Dng u ghi K l s ln nhc bt cn dng.
 K dng tip theo, mi dng m t mt ln v, trong s u tin l s cnh c
v, tip theo l cc nh xut hin trn ng v tng ng.
V d:
GRAPH.INP
55
12
23
34
24
25

GRAPH.OUT
1
5123425

60

Mt s vn ng ch trong mn tin hc

Gi : Xt tng thnh phn lin thng G ca th G.


- Nu G khng c cnh th khng cn dng nt v no.
- Nu G khng c nh bc l th cn dng 1 nt v : theo chu trnh Euler
- Nu G c k nh bc l (k lun l s chn) th cn dng k/2 nt v : bng cch
thm vo G k/2 cnh o ni cc nh bc l; sau khi thm, cc nh ca G u c
bc chn. Tm chu trnh Euler trn G ri b i k/2 cnh o, ta c k/2 ln nhc
bt tng ng.
(cc bn t chng minh tnh ng n ca cch lm)

Luyn tp:
Bi ton: Ct cy s (MSTONE)
Mt mng li giao thng gm n thnh ph v m tuyn ng xa l hai chiu.
Gia hai thnh ph bt k c nhiu nht l mt xa l ni trc tip t thnh ph ny ti
thnh ph kia. Trn mi xa l, ngi ta dng sn cc ct cy s ch ng cho hnh
khch.
in s km trn cc ct cy s, ngi ta s dng mt r-bt. Mun in cc
ct cy s trn mt tuyn ng (u, v) th r bt phi thc hin mt chuyn i t u ti v
v mt chuyn i t v v u, c sau mi km th dng li v ghi vo mt mt ca mt ct
cy s.
V d: in cc ct cy s trn tuyn ng H Ni - Hi Phng. u tin r
bt xut pht t H Ni, c i mi km th dng li v in vo ct cy s dng "H Ni
... km", tt nhin ch c th in vo mt quay v hng Hi Phng bi R bt khng bit
c t n Hi Phng cn bao xa. Mun in dng ch "Hi Phng ... km" ln mt
cn li ca cc ct cy s th r bt phi thc hin hnh trnh t Hi Phng tr v H Ni
Yu cu: Gi thit rng h thng giao thng m bo s i li gia hai thnh ph bt k.
Hy tm mt hnh trnh ca R bt xut pht t thnh ph 1, i vit y ln cc ct
cy s ri quay tr v thnh ph 1, sao cho mi mt ca ct cy s bt k no cng ch b
vit mt ln.
D liu: MSTONE.INP
 Dng 1: Cha hai s n, m cch nhau mt du cch (2 n 200)
 m dng tip theo, mi dng ghi hai s u, v cch nhau mt du cch: cho bit gia
hai thnh ph u v v c mt tuyn xa l ni chng
Kt qu: MSTONE.OUT
 Ghi cc hnh trnh r bt phi i: Bt u t thnh ph 1, tip theo l cc thnh
ph i qua theo ng th t trong hnh trnh, kt thc l thnh ph 1. Cc s hiu
thnh ph phi ghi cch nhau t nht mt du cch hoc du xung dng.

61

Mt s vn ng ch trong mn tin hc

V d:
MSTONE.INP
78
12
23
34
42
25
56
67
62

MSTONE.OUT
12676
525624323421

4
1

2
6
5

Bi ton:
Ngi a th (POS)
Mt bu t vng qu cn chuyn th cho ngi dn cc ngi lng cng nh
trn cc con ng ni gia cc ngi lng. Bn cn gip bu t tm hnh trnh i qua mi
ngi lng v mi con ng t nht mt ln (d liu vo m bo mt hnh trnh nh vy
tn ti). Tuy nhin, mi hnh trnh cn c gn vi mt chi ph. Ngi dn cc ngi
lng u mun bu t n lng mnh cng sm cng tt. V vy mi ngi lng tha
thun vi bu in, nu lng i l lng th k phn bit c thm trn hnh trnh v k wi,
lng i s tr wi - k euros cho bu in. Nu k > wi , bu in ng tr k - wi euros cho
ngi lng. Ngoi ra, bu in cn tr bu t mt euro khi i qua mi con ng trn hnh
trnh.
C n ngi lng, c nh s t 1 n n. Bu in c t ngi lng s mt, do
hnh trnh cn bt u v kt thc ti ngi lng ny. Mi ngi lng c t giao
im ca hai, bn, hoc tm con ng. C th c nhiu ng ni gia hai ngi lng.
Con ng c th l mt vng ni mt ngi lng vi chnh n.
Yu cu: Vit chng trnh xc nh mt hnh trnh i qua mi ngi lng v mi con
ng t nht mt ln, sao cho tng li nhun ca bu in l ln nht (hay tng thit hi
l b nht).
D liu: POS.INP
 Dng u tin cha 2 s nguyn n, m, cch nhau bi khong trng; n (1 n
200), l s ngi lng v m l s con ng.
 Mi dng trong s n dng sau cha mt s nguyn dng. Dng th i+1 cha s
wi, 0 wi 1000, xc nh chi ph c tr bi lng i.
 Mi dng trong s m dng sau cha hai s nguyn dng cch nhau bi khong
trng, m t mt con ng ni hai ngi lng.
Kt qu: POS.OUT
 Dng u tin cha s nguyn dng k, di ca hnh trnh.
 Dng th hai theo cha k+1 s cho bit cc ngi lng c thm theo th t trn
hnh trnh, cch nhau bi khong trng, trong v1=vk+1=1.

62

Mt s vn ng ch trong mn tin hc

V d:
POS.INP
67
1
7
4
10
20
5
2 4
1 5
2 1
4 5
3 6
1 6
13

POS.OUT
7
15421631

Gi : Xt mi ng i Euler (d) (hoc chu trnh Euler (c)) ca th. D dng chng
minh c th n thm ca cc ngi lng khng quan trng hay ni cch khc mi
ng i (d) (hoc chu trnh (c)) u c cng mt tng li nhun thu c. Do ch cn
chi ra mt ng i Euler (d) (hoc chu trnh Euler (c)) bt k.
Bi ton:
Thm him m cung (PCYCLE)
Mt m cung gm c N phng v M hnh lang ni cc phng, gia hai phng bt k
c khng qu mt hnh lang ni chng.
Mt ngi mun khm ph m cung, anh ta s xut pht t mt phng v i dc
theo tt c cc hnh lang sao cho mi hnh lang c i qua ng mt ln, ri li tr v
v tr xut pht. Mi hnh lang c mt gi tr c cho bit khi i qua n th nng lng nh
thm him s cng thm vi c (c c th m hay dng). Nh thm him bt u xut pht
vi nng lng bng 0, anh ta s cht nu sau khi i ht mt hnh lang no m mc
nng lng nh hn 0.
Yu cu: Hy gip nh thm him tm ra mt hnh trnh an ton tha mn cc yu cu
a ra.
D liu: PCYCLE.INP
 Dng 1 l 2 s nguyn N, M. ( 1 N 200 )
 M dng tip theo, dng th i gm 3 s nguyn u, v, c cho bit c 1 hnh lang ni
phng u vi phng v v gi tr nng lng l c. ( |c| 10000 ) .
Kt qu: PCYCLE.OUT
 Nu c khng c hnh trnh no an ton th ghi ra -1. Ngc li ghi ra M+1 s
nguyn l ch s phng trn ng i. T phng xut pht, qua cc phng, hnh
lang ri quay tr v phng xut pht.

63

Mt s vn ng ch trong mn tin hc

V d:
PCYCLE.INP
33
122
1 3 -1
2 3 -1

PCYCLE.OUT
2132

Gi : Tm mt chu trnh Euler bt k (E): u1,u2um,u1


i

Gi F[ i] = c[ uk 1,uk ] (F[1] = 0)
k=2

Tm nh s c F[s] nh nht.
- Nu F[s] < 0 th khng tn ti hnh trnh an ton
- Nu F[s] 0 th ly s l nh xut pht, i theo chu trnh (E) l mt hnh trnh an
ton.
(bn c t chng minh tnh ng n ca thut ton)

64

Mt s vn ng ch trong mn tin hc

VN : CHU TRNH M V NG DNG


Bi ton:
Pht hin chu trnh m
Cho th v hng G, cc cung c trng s (c th m hoc dng). Kim tra xem
th c tn ti chu trnh m (tng trng s cc cung trong chu trnh b hn 0) hay
khng?
Hng gii quyt: S dng thut ton FORD BELLMAN.
Vi 2 nh khng c cung ni trc tip, gi s cho n mt cung o ni 2 nh vi
trng s l mt s rt ln ( bng maxlongint chng hn).
Xut pht t 1 nh s bt k, dng thut ton FORD BELLMAN tm ng i
ngn nht t s n cc nh cn li.
Nhc li v thut ton FORD BELLMAN c cu trc nh sau:
for v:=1 to n do d[v] := + ; {d[v] l nhn trng s ng i ngn nht
t s ti v}
d[s] := 0;
repeat
stop:=true;
for u:=1 to n do
for v:=1 to n do
if a[u,v] then {nu c cung (u,v)}
if d[v] > d[u] + c[u,v] then {iu kin ti u nhn}
begin
d[v]:=d[u] + c[u,v];
stop:=false;
end;
until stop;

Ch rng thut ton FORD BELLMAN ch cn ti a n-1 (n l s nh ca th)


ln lp cho ng i ngn nht t nh s n nh t bt k trong trng hp th
khng c chu trnh m (v mi ng i ngn nht u c s cnh ti a l n-1). Hay ni
cch khc vng lp repeat -until thc hin ti a n ln.
Nhng vi trng hp th c chu trnh m th thut ton FORD BELLMAN trn
s b lp v hn. V ta c th s dng iu ny kim tra xem th c chu trnh m hay
khng nu vng lp thc hin ln th n + 1.
Cng c th nhn ra chu trnh m nu ti mt bc ti u nhn d[v] no , ta c
d[v] b hn tng trng s cc cung m trong th.

65

Mt s vn ng ch trong mn tin hc

for v:=1 to n do d[v] := maxlongint;


d[s] := 0;
count:=0;
repeat
stop:=true;
inc(count); {tng s ln lp}
if count = n + 1 then
begin
{thng bo c chu trnh m}
Break;
end;
for u:=1 to n do
for v:=1 to n do
if a[u,v] then
if d[v] > d[u] + c[u,v] then
begin
d[v]:=d[u] + c[u,v];
if d[v] < sum then {sum l gi tr tng trng s cc cung m}
begin
{thng bo c chu trnh m}
Break;
end;
stop:=false;
end;
until stop;

Tuy nhin cch ny kh mt thi gian, mt cch khc hiu qu hn v c th xut ra


c chu trnh m nu c.
Cng da trn thut ton FORD BELLMAN, ti mi bc s dng nh u ti u
nhn nh v (d[v] := d[u] + c[u,v]) ta th truy vt ngc ng ngn nht hin ti t u v s
xem c i qua nh v hay khng .Nu c th tn ti chu trnh m xut pht v.
s
v
u

66

Mt s vn ng ch trong mn tin hc

Thut ton FORD BELLMAN c vit li nh sau:


Procedure check(u,v:integer):boolean;
{ct kim tra ng i ngn nht hin ti t u v s c i qua v hay k}
begin
While (u<>v) and (u<>s) do
U:=trace[u];
If u=v then check:=true else check:=false;
End;
Procedure Print(u,v:integer);
{xut chu trnh m xut pht v v kt thc u}
Begin
Write(v, <- ,u);
While u<>v do
Begin
Write( <- ,trace[u]);
u:=trace[u];
End;
End;
Procedure FordBellman;
V u,v:integer
begin
for v:=1 to n do d[v] := maxlongint;
d[s] := 0;
repeat
stop:=true;
for u:=1 to n do
for v:=1 to n do
if a[u,v] then
if d[v] > d[u] + c[u,v] then
begin
d[v]:=d[u] + c[u,v];
if check(u,v) then
begin
Print;
Break;
end;
trace[v]:=u; {mng dng truy vt ng i ngn nht}
stop:=false;
end;
until stop;
end;

Chu trnh m c ng dng gii quyt cc bi ton thc t sau:


Bi ton:
Bun tin (MONEY)
Mt ngi lm vic mt ngn hng ngoi t theo di t gi hi oi pht hin ra
l: Nu khn kho, th t mt lng ngoi t ban u, nh chuyn i sang cc loi ngoi
t khc, anh ta c th thu c li nhun ng k.

67

Mt s vn ng ch trong mn tin hc

V d: Nu anh ta c 1 USD v t gi hi oi gia cc ngoi t nh sau:


1 USD
=
0.7 bng Anh
1 bng Anh
=
9.5 Franc Php
1 Franc Php
=
0.16 USD
Khi vi 1 USD anh ta c th mua c 0.7 * 9.5 * 0.16 = 1.064 USD nh vic
chuyn i tin qua bng Anh, ri t bng Anh sang Franc Php, v cui cng li quay v
USD. Nh mi USD em li cho anh ta li nhun l 0.064USD.
Gi s trong nh bng qun l n loi ngoi t nh s 1, 2, ..., n. Bit bng t gi hi
oi R[i, j] (1 i, j n). (Tc l 1 n v ngoi hi i mua c R[i, j] n v ngoi hi j).
Cn xc nh xem c cch i tin em li li nhun hay khng ?
D liu: MONEY.INP
 Dng u tin cha s n (n 100
 Dng th i trong s n dng tip theo cha n s thc dng R[i, 1], R[i, 2], ..., R[i,
n].
Kt qu: MONEY.OUT
 Dng u tin ghi YES hoc NO tng ng vi vic c hoc khng c cch i
tin sinh li nhun
 Nu dng u tin l YES th dng th hai ghi hai s u v s. Trong u l loi
tin xut pht, cn s l li nhun thu c nh cch i 1 n v tin u. Dng th
ba ghi trnh t cn tin hnh i tin thu li c li nhun bt u t loi tin
xut pht
Cc s trn mt dng ca Input/Output File c ghi cch nhau t nht mt du cch Li
nhun (nu c) trong Output File c th ch cn lm trn gi li 6 ch s sau du chm
thp phn.
V d:
MONEY.INP
5
1.00 1.10 0.83
0.83 1.00 0.86
0.89 0.84 1.00
0.84 0.83 1.01
1.09 0.84 0.87

0.81
1.09
0.83
1.00
0.90

0.85
0.81
1.02
0.84
1.00

MONEY.OUT
YES
1 0.007160
124

Gi : Xt th c hng n nh, mi nh i din cho 1 loi tin t v cc cung ni


gia cc nh vi trng s l t gi gia 2 loi tin t ny. Cn tm mt chu trnh c tch
trng s trn cc cung ln hn 1.
Gn li trng s cc cung c[i,j] := - ln (c[i,j])
Tm chu trnh m trn th vi trng s mi. Nu c chu trnh m th chu trnh ny i
din cho cch i tin mang li li nhun.
Tht vy, gi s chu trnh qua cc cung trng s e1, e2, , em.

68

Mt s vn ng ch trong mn tin hc

Ta c e1 + e2 + + em < 0
 -ln(c1) - ln(c2) - - ln(cm) < 0
 ln(c1) + ln(c2) + + ln(cm) > 0
 ln(c1.c2..cm) > 0
 c1.c2..cm > e0
 c1.c2..cm > 1
Hay cc cung c1,c2,,cm to thnh mt chu trnh tng ng vi cch i tin mang li
li nhun.
Bi ton:
Vn chuyn hng (TRANS)
Cng ty MCA l mt cng ty vn ti ni ting ti t nc Peace, vi mng li
hot ng trong khp c nc. Sp n k nim 30 nm thnh lp, gim c cng ty
quyt nh m mt t khuyn mi ln cho tt c cc khch hng. C th l cng ty s m
mt s tuyn ng vn chuyn min ph cho khch hng.
Mi tuyn ng nh vy s xut pht t mt thnh ph, qua mt s thnh ph
(khng i qua thnh ph no 2 ln) ri quay v ni xut pht. Nu tnh chi ph vn
chuyn trung bnh trn tng tuyn ng th chi ph chi ra cho t khuyn mi ny s
khng nh nn gim c cng mun cc tuyn ng ny tha iu kin tng di
ng i chia cho tng s con ng trong tuyn ng (gi l chi ph ca tuyt
ng) l nh nht.
Cho mt mng li vn chuyn hng ca cng ty MCA hy tm ra tuyn ng
thch hp nht (tha c 2 iu kin trn) cho t khuyn mi. Xut ra chi ph ca tuyn
ng tm c.
D liu: TRANS.INP
 Dng u tin ghi hai s nguyn N v M l s thnh ph v s con ng trong
mng li.
 M dng tip theo, mi dng ghi ba s nguyn a b c vi ngha c ng i mt
chiu t a n b vi di l c.
D liu: TRANS.OUT
 Dng th nht ghi mt s thp phn vi t nht 2 ch s sau du phy l chi ph
nh nht. Nu khng tn ti tuyn ng no tha mn ghi ra -1.
 Dng th hai ghi s P l s lng thnh ph trn tuyn ng c chn.
 Dng th ba ghi P + 1 s ln lt l cc thnh ph trn tuyn ng c chn.
Gii hn:
 1 N 100
 1 M 9000
 1 c 223
V d:
TRANS.INP
33
121
231
311

TRANS.OUT
1.00
3
1231

69

Mt s vn ng ch trong mn tin hc

Gi : Xt th c hng G vi N nh v M cung ni. Gi r l chi ph nh nht ca


tuyn ng cn tm. Xt th G(r) c trng s cc cung c xy dng c := d - r (d l
di cc tuyn ng ban u). Gi s c chu trnh m trn th G(r) - gi s chu trnh
m gm cc cung c1, c2, , cm th
c1 + c2 + + cm < 0
 d1 + d2 + +dm - m.r <0
 r > (d1 + d2 + + dm)/m = r0
Suy ra r cha phi l chi ph nh nht cn tm v c tuyn ng qua cc cung
d1,d2, ,dm c chi ph ro nh hn.
Vy nu r l chi ph nh nht th th G(r) khng c chu trnh m, Hay ni cch khc nu
th G(r) c chu trnh m th chu trnh m cho ta mt chi ph tng ng r0 nh hn r.
T c th suy ra nu r l chi ph nh nht th:
+ vi mi r > r th G(r) c chu trnh m
+ vi mi r < r th G(r) khng c chu trnh m
T nhn xt trn c th tm ra c chi ph nh nht bng cch cht nh phn gi tr r, sau
kim tra th G(r) c chu trnh m hay khng.
x := 0;
y := + ;
while y - x > 0.01 do { chnh xc ti 2 ch s phn thp phn}
begin
r:=(x + y)/2;
if check(r) then {Nu th G(r) c chu trnh m}
begin
{lu chu trnh m xut tuyn ng ti u hn}
y:=r;
end
else x:=r;
end;
writeln(r) {ch ph nh nht}

Luyn tp:
Bi ton:
Li nhun ti a (PROFIT)
Thuyn trng Sinbad c d nh a on tu cng thy th on i trao i hng
ho vng quanh cc hn o.Sinbad quyt nh s xut pht ti mt hn o bt k,sau
i qua mt s hn o v quay tr v hn a xut pht (mt hn o c th c
thm nhiu ln).L mt thuyn trng ti ba v y kinh nghim,Sinbad mun chn mt l
trnh sao cho li nhun thu c l ti a.Li nhun thu c i vi mt hnh trnh
c tnh da trn thng s gia tng lng hng ho bn c dc theo hnh trnh v
tng di hnh trnh.Cho bit bn ca vng bin gm N hn o c nh s t 1
n N v M tuyn hi trnh gia chng cng lng hng ho d kin s bn c C[I,J]
nu i t o I n o J (C[I,J]=C[J,I]) (Cc tuyn hi trnh xem nh hai chiu ).Bn hy
gip Sinbad lp l trnh ti u cho thu th on.

70

Mt s vn ng ch trong mn tin hc

D liu: PROFIT.INP
 Dng u tin gm 2 s N,M (1<=N<=100) ln lt l s o v s hi trnh gia
chng.
 M dng tip theo,mi dng gm
4 s nguyn A,B,C,D (1<=A,B<=N ;
1<=C,D<=255) cho bit tn ti hi trnh gia hai hn o A,B trong C l s
hng ho d kin s bn c v D l di ca hi trnh.
Kt qu: PROFIT.OUT
 Gm mt s thc P duy nht l li nhun ti a ng vi phng n ti u m bn
tm c.(Yu cu ly chnh xc 3 ch s sau du phy).
V d:
PROFIT.INP PROFIT.OUT
56
2.520
1 4 172 100
4 5 184 100
5 1 252 100
1 2 12 100
2 3 10 100
3 1 6 100

71

Mt s vn ng ch trong mn tin hc

VN : T MU TH
Bi ton:
T mu cc nh.
Cho th v hng G. Tm cch t mu cc nh ca th (mi nh mt mu)
sao cho tha mn 2 iu kin sau:
- Hai nh c cnh ni trc tip c t bi 2 mu khc nhau.
- S mu cn dng l t nht.
(S mu cn dng t nht c gi l sc s ca th.)

2
5

3
7
8
th ban u

4
1

3
th c t bi 3 mu

Hng gii quyt:


Vi d liu bi ton nh, duyt nhnh cn l phng php cho kt qu ti u. Tuy
nhin cch trn s khng chy c vi d liu ln. Chng ta c mt cch lm khc kh
hiu qu, cho kt qu ti u vi phn ln cc test - S dng phng php tham nh sau:
Trc ht nh ngha bc ca mt nh l s nh k vi n v cha c t mu.
Khi to gn s mu cn dng bng 0.
Mi nh u cha c t.
Lp
Tng s mu ln 1 color := color + 1
B1: Tm nh u c bc ln nht.
B2: T mu cho nh u ny mu color.
B3:
Lp
Tm nh v c bc ln nht c th t mu color.
T mu cho nh v mu color.
Cho n khi khng cn nh v no c th t mu color.
Cho n khi t mu ht.

72

Mt s vn ng ch trong mn tin hc

M t thut ton:
Function deg(u:integer):integer;
{Bc ca nh u}
Begin
D:=0;
For v:=1 to n do
If a[u,v] and C[v]=0
then inc(d);
deg:=d;
End;
Function canput(u,k:integer):boolean;
{c th t nh u bng mu k hay khng}
Begin
canput:=false;
For v:=1 to n do
If a[u,v] and c[v]=k then exit;
canput:=true;
End;
Procedure put(u,k:integer);
{T nh u bng mu k}
Begin
C[u]:=k;
End;
Procedure process;
Begin
color:=0;
Fillchar(c,sizeof(c),0);
Repeat
U:=0; maxdeg:=-1;
For v:=1 to n do
If C[v]=0 and deg(v)>maxdeg then
Begin u:=v; maxdeg:=deg(v); end;
If u<>0 then
begin
Inc(color);
Put(u,color);
Repeat
V:=0; maxdeg:=-1;
For t:=1 to n do
If (c[t]=0) and canput(t,color) and (deg(t)>maxdeg) then
Begin v:=t; maxdef:=deg(t); end;
If v <> 0 then put(v,color);
Until v = 0;
End;
Until u = 0;
Writeln(color); {s mu ti thiu cn dng}
For i:=1 to n do writeln(I, : ,c[i])
End;

Trn y chng ta xt phng php t mu vi th v hng tng qut.


Ngoi ra cn mt s dng th c bit m khi t mu chng ta pht hin ra c nhng
tnh cht kh th v:

73

Mt s vn ng ch trong mn tin hc

th y n nh (l th m gia 2 nh bt
k lun c cnh ni) c sc s bng n.

2
1

th vng vi s nh chn c sc s l 2.

th vng vi s nh l c sc s l 3.

1
3

B
C

th phng : l th c th biu th cc nh v
cc cnh trn mt mt phng sao cho cc cnh v
cc nh khng c im giao nhau no khc ngoi
cc u mt. Loi th ny c sc s khng ln
hn 4. Do c th dng khng qu 4 mu t
mu mt bn bt k sao cho 2 vng t khc
nhau c mu khc nhau.

th 2 pha bt k c sc s l 2. C th nhn ra
cch t mu n gin nht l t tp nh bn X bng
mu 1 v t tp nh bn Y bng mu 2. Ngoi ra
nu mt th v hng bt k c sc s l 2 th
th ny c th phn thnh th 2 pha.

A
E
4

4
3

2
3

Bi ton:
T mu cc cnh.
Cho th v hng G. T mu cc cnh ca th bi 2 mu sao cho:
- i vi mi nh, nu xt cc cnh c ni vi nh th chnh lch gia s
cnh c t mu ny v s cnh c mu kia khng qu 1.
- i vi ton b th, nu xt tt c cc cnh th chnh lch gia s cnh
c t mu ny vi s cnh c t mu kia khng qu 1.
Tm cch t mu tt c cc cnh tha mn 2 iu kin trn.

74

Mt s vn ng ch trong mn tin hc

Hng gii quyt:


Gi deg(u) l bc ca nh u : bng s cnh ni vi nh u v cha c t mu.
Gi s bng tng bc ca tt c cc nh, d thy s l mt s chn. Do s nh bc l
(nu c) trong th lun l mt s chn.
Gi start(u) l mt ng i xut pht t nh u, ln lt qua cc cnh cha c t
mu (mi cnh ch qua 1 ln) v kt thc ti nh v nu t v khng th i c tip (tc l cc
cnh ni vi v hoc i qua hoc c t mu).
Gi color1(u) l mt php t mu theo nguyn tc: nh u l nh c bc l, da
vo ng i start(u) tm c, ln lt t mu cc cnh trn ng i bng 2 mu xen
k nhau.
Gi color2(u) l mt php t mu theo nguyn tc: nh u l nh c bc chn, da
vo ng i start(u) tm c, ln lt t mu cc cnh trn ng i bng 2 mu xen
k nhau.
2

7
1

(Mt php t mu color1(6) ng vi ng i 651852874)

Ta chng minh mt s nhn xt quan trng sau y.


1/ Nu nh u c bc l th start(u) kt thc ti mt nh v c bc l khc.
Gi s k l s ln i qua nh v trn ng i start(u). nh ngha mt ln i qua
nh v c ngha l t mt nh v i n nh v ri t nh v i n nh v. V v l nh
kt thc nn deg(v) bng s cnh c ni vi nh v trn ng i start(u).
- gi s u trng vi v th s cnh c ni vi nh v l 2k cng thm mt cnh
xut pht t u v mt cnh kt thc ti v. Suy ra deg(v) = 2k+2 l mt s chn
hay deg(u) l mt s chn - v l. Vy u khc vi v.
- v u khc v nn s cnh c ni vi nh v l 2k cng thm mt cnh kt thc
ti v. Suy ra deg(v) = 2k+1 l mt s l. Vy nh kt thc v l mt nh bc
l khc u.
2/ Nu mi nh ca th c bc chn th xut pht t mt nh u bt k, start(u)
kt thc ti chnh nh u.
Cng chng minh tng t nh trn, gi s v l nh kt thc khc u.
Gi k l s ln i qua nh v th deg(v) = 2k + 1 l mt s l, hay v l mt nh bc l - v l
(v mi nh ca th u c bc chn).
Da vo 2 nhn xt trn ta c thut ton t mu nh sau:
B1/Lp
Tm nh u c bc l trn th.
Thc hin php color1(u).
B cc cnh c t ra khi th
Cho n khi no t ht tt c cc cnh.

75

Mt s vn ng ch trong mn tin hc

B2/Lp
Tm nh u c bc chn (khc 0) trn th.
Thc hin php color2(u).
B cc cnh c t ra khi th
Cho n khi no t ht tt c cc cnh.

Tnh ng n ca thut ton:


Ta thy php t color2(u) vi u l nh bc chn khng lm thay i chnh lch 2
mu ti mi nh c cnh c t.
Cn i vi php t color1(u) c u l nh bc l, ta nhn thy nu v l nh kt
thc th php t lm cho chnh lch gia 2 mu ti 2 nh u v v tng ln 1. Tuy nhin sau
khi b cc cnh t, u v v tr thnh 2 nh bc chn. Cho nn mi nh u ch gi bi
php t color1(u) khng qu 1 ln v mi nh v cng ch l nh kt thc trong cc php
color1(u) khng qu 1 ln. Do chnh lch gia 2 mu ti mi nh khng qu 1 iu kin 1 ca bi ton c tha mn
Mt khc khi t mu cc cnh ta lun dng 2 mu xen k nhau nn sau khi t
xong iu kin 2 ca bi ton c tha mn.
Bi ton:
T mu cc cnh trn th hai pha
Cho th 2 pha G, tm cch t mi cnh mt mu sao cho:
- Cc cnh chung u mt c t bi cc mu khc nhau.
- S mu cn s dng l t nht.
Hng gii quyt: Gi maxDeg l gi tr bc ln nht trong cc nh. D thy s mu cn
dng khng nh hn maxDeg. Ta s ch ra mt cch t dng maxDeg mu, v y chnh l
cch t c s mu t nht:
Thc hin maxDeg lt t, lt th i dng mu i t. Do th cho l th 2
pha cho nn lun tm c mt b ghp m cc nh c bc bng ln nht u c
ghp. T cc cnh thuc b ghp ny bng mu i. Sau b cc cnh ny ra khi th, bc
ca cc nh c ghp thay i. Thc hin maxDeg lt nh vy ta t mu c th
tha mn yu cu bi ton.

Luyn tp:
Bi ton:
Xp lch thi (LICHTHI)
Mt s trng i hc t chc hc theo tn ch. Nu sinh vin tch ly s chng
ch cho mt s mn quy nh ca mt ngnh l c quyn nhn bng tt nghip ca ngnh
. i vi cc i hc nh th, vic hc v thi khng t cha theo lp m theo cc mn
hc. Hng nm nh trng thng bo cc mn s hc sinh vin t ng k hc cc
mn hc theo ngnh mnh chn. Cui nm nh trng t chc thi cho cc mn ging
trong nm. Mi mn thi trong mt ngy nhng trong mt ngy c th t chc thi nhiu
mn. Do mt sinh vin c th ng k thi nhiu mn nn lch thi cn phi b tr nu c
mt sinh vin ng k thi hai mn no th cc mn khng c thi cng ngy.
Yu cu: Hy xp lch thi sao cho tng s ngy thi cng t cng tt.

76

Mt s vn ng ch trong mn tin hc

D liu: LICHTHI.INP
 M , N : ln lt l s th sinh v s mn hc ( M 1000, N 100);
 M dng tip theo ghi thng tin v ng k thi ca mi sinh vin, mi dng gm N
s 0 hoc s 1 cch nhau mt du cch, s th j trong dng th i l 1 nu sinh
vin th i ng k hc v thi mn th j v bng 0 nu sinh vin th i khng ng
k thi mn th j.
Kt qu: LICHTHI.OUT
 Gm N dng mi dng c mt s t nhin. S dng th i l ngy thi tng ng
i vi mn th i.
V d:

Gi : Xy dng th N nh i din cho N mn hc, 2 nh c cnh ni vi nhau nu


tn ti mt hc sinh ng k thi c 2 mn hc tng ng vi 2 nh . T mu cho
th ta c phng n xp lch thi.
Bi ton:
Tp n nh trong cc i.
Cho th v hng G. nh ngha mt tp n nh trong l tp cc nh tha mn:
- Gia 2 nh bt k khng c cnh ni trc tip.
- Nu thm vo tp mt nh khc th tnh cht trn khng cn ng.
Yu cu tm tp n nh trong cc i - tp n nh trong c nhiu nhiu nh
nht.
D liu:
 Dng u ghi gi tr n,m l s nh v s cnh ca th.
 m dng tip theo mi dng ghi 2 s u, v cho bit c cnh ni trc tip gia 2 nh
u v v.
77

Mt s vn ng ch trong mn tin hc

Kt qu:
 Dng u ghi s nh trong tp n nh trong cc i.
 Dng tip theo ghi ch s cc nh trong tp.
Gi : Duyt nhnh cn l cch n gin gii quyt tuy nhin vi d liu ln th bi
ton nu trn cha c li gii ti u. Ta ch c th tm mt thut ton tham cho kt qu tt
nht c th.
Nu ta t mu cc nh ca th th cc nh c t cng mt mu s cho mt
tp n nh trong. Da vo iu ny ta tm tp nh cng mu c nhiu nh nht. Tuy
nhin, trong mt s trng hp, tp cc nh ny cha hn l tp n nh trong cc i
ca th. Nhng t nht n cho ta mt cn tt trc khi s dng phng php duyt.
Bi ton:
Trng cy(GTREE)
Mt khu vn hnh ch nht c chia thnh MxN t (M hng v N ct). Ngi ta
mun trng 2 loi cy cam v chanh ti mt s trong khu vn. Tm cch trng loi cy
no vo mi c trng sao cho m bo iu kin thm m: chnh lch gia s cy
cam v s cy chanh khng qu 1 khi:
- Khi nhn theo bt c hng no.
- Khi nhn theo bt c ct no.
- Khi nhn ton b khu vn.
D liu: GTREE.INP
 Dng u 2 gi tr M,N cch nhau mt du cch.
 Tip theo l ma trn 0,1 c kch thc MxN biu th cc v tr cn trng cy
(nhng v tr ny nhn gi tr 1) v nhng v tr khng c trng cy (nhn gi tr
0).
Kt qu: GTREE.OUT
 Mt cch trng cy tha mn biu th qua Ma trn 0,1,2 c kch thc MxN trong
gi tr 0 biu th v tr khng c trng cy, gi tr 1 biu th v tr trng cy
cam, gi tr 2 biu th v tr trng cy chanh.
V d:
GTREE.INP
5 11
01010010001
10100001000
01010100001
00000001010
00001000000

GTREE.OUT
01020010002
10200001000
02010200001
00000002010
20000100000

Gi : Xt th 2 pha (X,Y), bn X c M nh i din cho M hng, bn Y c N nh


i din cho N ct. (x,y) c trng cy th c cnh ni (x,y) trn th 2 pha. Thc
hin t mu cc cnh bng 2 mu ta c mt phng n trng cy tha mn.

78

Mt s vn ng ch trong mn tin hc

Bi ton: Trang tr dn n (DEC)


Nhn dp Ging sinh v nm mi, mt ca hng lp t mt dn n c dng bng
hnh ch nht m x n. Trn dn n c mt s v tr cn lp t bng n. Ca hng mun
trang tr dn n bng cc bng n mu. tht p mt, ca hng mun cc bng n
nm trn cng hng hoc cng ct u khc mu nhau! Nhng m bo s hi ha,
dn n khng nn c qu nhiu mu.
Bn hy gip ca hng trang tr dn n, sao cho s loi bng n mu cn s dng l
t nht!
D liu: DEC.INP
 Dng u tin cha 2 s nguyn m, n (1 m, n 100)
 m dng tip theo, mi dng cha n k t '0' hoc '1' th hin dn n, k t '1' cho
bit v tr cn lp t bng n.
Kt qu: DEC.OUT
 Dng u tin: cha s nguyn p l s loi bng n mu t nht cn s dng.
 Dng th i trong s m dng tip theo cha n s nguyn, s th j l ch s mu ca
bng n v tr tng ng, hoc l 0 nu v tr tng ng khng cn lp t
bng n. Cc mu c nh s t 1 n p.
V d:
DEC.INP
5 10
1100111010
0011000101
0001011000
0110001010
1111010100

DEC.OUT
6
3200456010
0023000401
0002031000
0310004020
2435060100

Bi ton:
Sn ca (RPAINT)
Ph ng va mi xy dng xong to bit th ca mnh. Vic trc tin ph ng
mun lm l i sn cc cnh ca trong ngi nh ca mnh. To bit th c m t l
mt kiu kin trc k qui khng tun theo bt k quy lut t nhin no. N bao gm N
phng v 1 h thng hnh lang ni cc phng vi nhau. Mi mt cn phng thay v ch c
1 ca th li c ti Ai cnh ca. Mi cnh ca dn ra mt hnh lang ni ti mt phng
khc. Hin thi th trng ang khuyn loi sn mua 1 tng 1. C th l nu bn mua 1
hp sn mu trng bn s c tng 1 hp sn mu en v ngc li nu bn mua 1 hp
sn mu en, bn s c tng 1 hp sn mu trng. Ph ng va xy xong bit th nn
cng kh l tng tin. M c bn tnh kh cng kh l keo kit, ng ta quyt nh sn cc
cnh ca theo cch sau y:
Nu cnh ca X ca phng Y dn ra hnh lang thng vi cnh ca U ca phng V th 2
cnh ca ny phi sn 2 mu khc nhau.
Ngoi ra bn cnh l yu cu v thm m, trong mi phng th s lng cnh ca
sn mu trng v s lng cnh ca sn mu en khng c chnh lch qu 1.

79

Mt s vn ng ch trong mn tin hc

Bn cnh ng ta mun tng chnh lch gia s lng cnh ca sn mu trng v s


lng cnh ca sn mu en l nh nht c th c v nh vy tn tin mua sn. Bn hy
gip ph ng gii quyt bi ton kinh t ny .
D liu: RPAINT.INP
 Dng th nht ghi s N l s phng trong ta bit th.
 Dng th i trong N dng tip theo ghi thng tin v cc cnh ca ca phng th i.
u tin l s ca Ai. Tip theo l Ai s nguyn cho bit phng i c cc cnh ca
dn n phng no.
Kt qu: RPAINT.OUT
 Dng th nht, nu c phng n tha mn ghi ra YES, nu khng c ghi ra
NO SOLUTION.
 Nu dng th nht ghi YES th tip theo l N dng. Dng i m t v cch sn
ca ca phng th i gm Ai k t W / B tng ng vi vic cnh ca c sn
trng hoc en. Th t ghi trong output tng ng vi th t ghi trong input. Mi
k t W / B trong output c ghi cch nhau ng mt du cch.
Gii hn:
 1 N 10000
 Tng s hnh lang 100000
V d:
RPAINT.INP
RPAINT.OUT
5
YES
3234
BWB
3135
WBW
41245
BWWB
3135
WBB
3234
BWW
(Vi cch sn nh th ny th chnh lch gia 2 mu bng 0)
Bi ton:
Th trng (MAYORS)
Mt t nc c N thnh ph, v tr ca mi thnh ph c th hin bi mt im
trn mt phng ta . Tng thng va c c mun b nhim mi thnh ph mt th
trng. Tng thng mun b nhim c cc th trng nam v n. Vi mi ng thng
ngang hoc dc (song song vi trc ta ), gi bnh ng gii l tr tuyt i ca hiu
gia s th trng nam v th trng n ca cc thnh ph nm trn ng thng .
chng t tinh thn bnh ng gii ca t nc, tng thng mun b nhim cc
th trng sao cho tng bnh ng gii i vi cc ng thng ngang v dc l nh
nht.
Bn hy vit chng trnh gip tng thng thc hin nhim v ny.

80

Mt s vn ng ch trong mn tin hc

D liu: MAYORS.INP
 Dng u tin cha N (1 N 20000), s thnh ph ca t nc.
 Dng th i trong s N dng tip theo cha hai s nguyn xi, yi l ta ca thnh
ph th i (xi, yi thuc phm vi s nguyn 32 bit).
Kt qu: MAYORS.OUT
 In ra N dng, dng th i cha s nguyn 0 hoc 1 tng ng vi vic cn b
nhim th trng nam hay n cho thnh ph.
V d:
MAYORS.INP MAYORS.OUT
5
0
00
1
01
1
10
0
11
0
12

81

Mt s vn ng ch trong mn tin hc

VN : THUT TON FORD BELLMAN KT HP QUEUE


VNG.
Bi ton: Cho th c hng khng c chu trnh m, tm ng i c trng s nh nht
gia 2 nh s v t cho trc trn th.
Hng gii quyt: Thut tan FORD BELLMAN c s dng trong bi tan tm
ng i trng s nh nht trn th khng c chu trnh m, thut ton m t nh sau:
for v:=1 to n do d[v] := + ; {d[v] l nhn trng s ng i ngn nht
t s ti v}
d[s] := 0;
repeat
stop:=true;
for u:=1 to n do
for v:=1 to n do
if a[u,v] then {nu c cung (u,v)}
if d[v] > d[u] + c[u,v] then {iu kin ti u nhn}
begin
d[v]:=d[u] + c[u,v];
trace[v]:=u; {mng truy vt ng i}
stop:=false;
end;
until stop;

T tng ca thut tan FORD BELLMAN l lm tt dn nhn nh v (cho n khi


ti u) s dng cc nhn nh u c lm tt hn trc (d[v] : = d[u] + c[u,v]). iu
c ngha l nu ta c tp Q cha nhng nh u c lm tt hn bc trc th
ta ch cn duyt nhng nh u trong tp A ny, sau kim tra c th s dng nhn nh u
ti u thm nhng nh v no khc hay k. Nu ti u c nhn nh v th thm v
vo tp Q s dng cho ln ti u sau.
T tng kt hp vi Queue c m t nh sau:
Ban u Queue ch c nh s
Lp
Ly mt nh u trong Queue
B nh u trong Queue
Duyt mi cung (u,v) xem c ti u c nhn nh v no khng, Nu
c thi thm v vo Queue (nu trong Queue cha c v).
Cho n khi Queue rng.

D thy Queue c ti a n phn t nn ta c th dng Queue vng ci t thut ton

82

Mt s vn ng ch trong mn tin hc

x:=0; y:=0; Queue[0]:=s; {khi to Queue}


fillchar(inqueue,sizeof(inqueue),false);
{mng nh du
trong Queue}
inqueue[s]:=true;
for v:=1 to n do d[v]:=+ ;
d[s]:=0;
While x <> (y+1) mod n do
Begin
u:=queue[x];
inqueue[u]:=false; {ly nh u ra khi Queue}
x:=(x +1) mod n;
For v:=1 to n do
If a[u,v] then {Nu c cung (u,v)}
If d[v] > d[u] + c[u,v] then
Begin
d[v]:=d[u] + c[u,v];
trace[v]:=u;
If not inqueue[v] then
Begin
y:=(y + 1) mod n;
queue[y]:=v;
inqueue[v]:=true;
End;
End;
End;

nh

ang c

Thut ton FORD BELLMAN kt hp Queue vng c thi gian hot ng rt hiu
qu so vi thut ton FORD BELLMAN n thun. N khng ch ng dng trong cc bi
tm ng i trng s nh nht m cn c dng trong cc bi ton s dng t tng
FORD BELLMAN ni chung.
Luyn tp:
Bi ton:
V tr tt nht (BESTSPOT)
Bessie, lun lun mun cuc sng ca mnh tt hn , thy r rng c ta tht s
rt thch gh thm F (1 <= F <= P) cnh ng yu thch F_i trong tng s P (1 <= P <=
500;1 <= F_i <= P) cnh ng (c nh s t 1-> P) thuc s hu ca nng dn John.
Bessie bit rng c y c th xc nh c C (1 <= C <= 8000) con ng hai chiu
(c nh s 1 .. C) kt ni tt c cc cnh ng trong ton b nng tri. ng vi mi
con ng P_i l thi gian i T_i (1 <= T_i <= 892) v ni 2 cnh ng a_i v b_i (1 <=
a_i <= P; 1 <= b_i <= P).
Bessie mun tm cnh ng tt nht ng tha mn bnh qun thi gian i n F
cnh ng yu thch ca c ta l nh nht.
D liu: BESTSPOT.INP
 Dng 1: 3 s nguyn P,F,C
 Dng 2..F+1: Dng i+2 cha 1 s Nguyn F_i
 Dng F+2..C+F+1 : Mi dng cha 3 s Nguyn a_i, b_i, F_i m t 1 con ng
2 chiu l thi gian di chuyn gia chng.

83

Mt s vn ng ch trong mn tin hc

Kt qu: BESTSPOT.OUT
 Gm 1 dng duy nht l cnh ng c chn . nu c nhiu kt qu , chn cnh
ng c ch s nh nht.

V d:
BESTSPOT.INP BESTSPOT.OUT
13 6 15
10
11
13
10
12
8
1
243
7 11 3
10 11 1
4 13 3
9 10 3
232
354
592
676
561
124
453
11 12 3
6 10 1
787

84

Mt s vn ng ch trong mn tin hc

VN : THUT TON DIJTRA VI CC NH O


Lm quen vi dng ton ny qua cc v d:
Bi ton:
Tuyn bay (AIRLINES)
C N thnh ph v M ng hng khng hai chiu gia mt s cp thnh ph no ,
cc ng bay c qun l bi 16 hng hng khng. Cc thnh ph c nh s t 1 ti
N (N 100) v cc hng c nh s t 1 ti 16.
c bit chi ph bay trc tip gia hai thnh ph i, j bt k (nu nh c ng bay ) l
C. Nu ang i my bay ca mt hng n sn bay no ri chuyn sang my bay ca
hng khc th s phi mt thm mt khon ph ph A.
Yu cu: Cho trc hai thnh ph S v F, hy tm hnh trnh bay t thnh ph S n
thnh ph F vi chi ph t nht. Vi gi thit rng lun lun tn ti cch bay t S ti F.
D liu: AIRLINES.INP
 Dng 1 ghi su s nguyn dng N, M, C, A, S, F. (1 A, C 100)
 M dng tip theo, mi dng c dng u v k1 k2 ... cho bit rng gia thnh ph u
v thnh ph v c ng bay v k1, k2, ... l s hiu cc hng s hu ng bay

Kt qu: Ghi ra file vn bn AIRLINES.OUT. Trong :


 Dng 1: Ghi chi ph ti thiu phi tr
 Cc dng tip theo, mi dng ghi mt b ba i, j, k. Th hin ti bc s bay t
thnh ph i n thnh ph j bi my bay ca hng k. Th t cc dng phi theo
ng th t bay trong hnh trnh.
Cc s trn mt dng ca Input/Output file ghi cch nhau t nht mt du cch.
V d: Vi mng li ng khng nh di y: cn i t thnh ph 1 n thnh ph 5.
Chi ph ng bay trc tip gia hai thnh ph bt k C = 3, ph ph chuyn tuyn A = 2.
Cc s ghi bn cnh cc ng bay trc tip l tn cc hng s hu ng bay .

85

Mt s vn ng ch trong mn tin hc

AIRLINES.INP
15 16 3 2 1 5
1 2 1
2 3 1
3 4 12
3 9 2
4 9 1
5 10 1 3
6 7 1
6 11 1
7 8 1
7 13 2
8 9 1
10 15 3
11 12 1
12 13 1
13 14 1 3
14 15 1 3

AIRLINES.OUT
37
121
231
341
491
981
871
7 13 2
13 14 3
14 15 3
15 10 3
10 5 3

1
1

1&2

1
3

4
1

2
1

1
6

10

1
1
11

1&3

1
8

1
12

1&3
13

1&3
14

15

Gi : Xy dng th cc nh (u,k) vi ngh hnh khch bay chuyn bay ca hng k


n thnh ph u.
nh (u,k) c cnh ni vi nh (u,k) nu hng my bay k c tuyn bay t u n u.
cnh ny c trng s l C.
nh (u,k) c cnh ni vi nh (u,k) nu hng my bay k c tuyn bay xut pht t
u. cnh ny c trng s l A.
Kt qu l ng i ngn nht trong s cc ng i ngn nht t nh (S,k) n
(F,k) (1<=k,k<=16)
Bi ton:
Chuyn hng (CARGO)
Bn mt kho hng hnh ch nht kch thc mxn c chia thnh cc vung
n v (m hng, n ct: cc hng nh s t trn xung di, cc ct nh s t tri qua
phi). Trn cc ca bn c mt s k hiu:
o Cc k hiu # nh du cc c mt kin hng xp sn, o
Mt k hiu *: nh du ang c mt xe y
o Mt k hiu $: nh du cha kin hng cn xp
o Mt k hiu @: nh du v tr m cn phi xp kin hng B vo o
Cc k hiu du chm ".": Cho bit trng
Cn phi dng xe y * y kin hng $ n v tr @ sao cho trong qu trnh di
chuyn cng nh y hng, khng chm vo nhng kin hng c xp sn. (Xe y c
th di chuyn sang mt trong 4 chung cnh vi ang ng). Nu c nhiu phng n th
ch ra mt phng n sao cho xe y phi di chuyn qua t bc nht.
Cc hng di chuyn c ch ra trong hnh di y

86

Mt s vn ng ch trong mn tin hc

## # ## ## #
#
@
## # W

# ## ## *
$

D liu: CARGO.INP
 Dng 1: Ghi hai s nguyn dng m, n cch nhau mt du cch (m, n 80)
 m dng tip theo, dng th i ghi n k hiu trn hng th i ca bn theo ng
th t t tri qua phi. Cc k hiu c ghi lin nhau
Kt qu: CARGO.OUT
 Dng 1: Ghi s bc di chuyn xe y thc hin mc ch yu cu, nu khng
c phng n kh thi th dng ny ghi s -1
 Dng 2: Nu c phng n kh thi th dng ny ghi cc k t lin nhau th hin
hng di chuyn ca xe y R (East, West, South, North). Cc ch ci thng
(e,w,s,n) th hin bc di chuyn khng y hng, cc ch ci in hoa (E,W,S,N)
th hin bc di chuyn c y hng.
V d:
CARGO.INP
88
#.....@.
..###
#.#####*
.$...

CARGO.OUT
23
sswwwwwwNNNwnEseN
wnEEEE

CARGO.INP
5 9
@...
.##.###.#
...#..
.##$###.#
.*...

CARGO.OUT
22
eeNNNssseeeennnnwww
WWW

Gi : y kin hng n vung (x,y) bt k m s bc i l t nht th


trng thi cui cng, xe y hoc nm trn, di, tri hoc phi i vi kin
hng (xe y v kin hng nm k nhau).
Xy dng th cc nh (x,y,k) vi ngha: xe y ang pha k so vi kin hng
ang (x,y). (1<= k <=4 ng vi 4 hng trn, di, phi, tri.)
Xy dng cc cnh ca th: nh (x,y,k) c cnh ni ti nh (x,y,k) nu xe
y c th y kin hng (x,y) 1 nc theo hng k ti (x,y). cnh ny c trng
s bng 1.
nh (x,y,k) c cnh ni ti nh (x,y,k) nu xe y c th di chuyn t v tr nm
pha k so vi kin hng n v tr mi nm pha k so vi kin hng . Cnh ny c
87

Mt s vn ng ch trong mn tin hc

trng s bng di ng i ngn nht m xe y phi di chuyn thay i v tr so


vi kin hng
Vi (x1,y1) l v tr ca kin hng ban u, (x2,y2) l v tr ca kin hng cn di
chuyn n. Duyt k1,k2 nhn gi tr 1 trong 4 hng
Gi d(k1,k2)=khang cch ngn nht t nh (x1,y1,k1) n nh (x2,y2,k2) +
khang cch ngn nht xe y di chuyn t v tr ban u (x0,y0) n v tr nm pha k1
so vi kin hng.
Gi tr nh nht ca d chnh l s bc di chuyn ngn nht ca xe y
Bi ton:
ip vin (SPY)
a bn hot ng ca mt ip vin l mt khu ph m ch c cc ng ph
ngang, dc to thnh mt li vung. Vi mc ch bo mt, thay v tn ng ph,
ip vin nh s cc ph ngang t 0 n m v cc ph dc t 0 n n. mt s ng ba
hoc ng t c cc trm kim sot. Anh ta ang ng nt giao ca hai ng (i1, j1) (j1 ng ngang; i1 - ng dc) v cn ti im hn giao ca hai ng (i2, j2). trnh b
theo di, ng i phi khng qua cc trm kim sot v c ti ch r th nht thit phi
i hng i, thm ch c th sang ng v i ngc tr li. Vic i hng ch c
thc hin ng ba hoc ng t. Hy xc nh ng i ngn nht ti im hn hoc cho bit
khng c ng i p ng c yu cu nu.
D liu: SPY.INP
 Dng u: m n i1 j1 i2 j2 ( 0 m, n 100)
 Cc dng sau: mi dng 2 s i, j (to trm kim sot).
Kt qu: SPY.OUT
 Dng u: di ng i ngn nht hoc thng bo NO nu khng c ng i.
 Cc dng sau: mi dng 2 s i, j ch nt tip theo cn ti theo ng i tm c,
bt u l i1 j1 v kt thc l i2 j2.
V d:
SPY.INP
SPY.OUT
450054
13
01
00
04
10
22
11
23
10
40
20
52
21
53
31
-1
32
4 2
4 3
3 3
4 3
4 4
54
88

Mt s vn ng ch trong mn tin hc

Gi : Xt th cc nh (x,y,k) vi ngha: ip vin va i t hng k ti v ang


ng ti v tr (x,y). (k nhn gi tr t 1 n 4 tng ng vi 4 hng).
Luyn tp
Bi ton:
Hnh trnh r nht (ERP)
Thnh ph Peace va a vo p dng mt h thng in t t ng tnh l ph s
dng l ph ng giao thng. Mt h thng c trin khai pht hin xe ca bn r
tri, r phi, i thng hoc quay u v mi thao tc nh vy phi tr mt l ph tng
ng. l 1 $ cho mi ln r tri, 5$ cho mi ln r phi, i thng v pha trc l min ph,
quay u xe l b cm, ngoi tr tnh hung cui ph khi khng cn c th i
thng, r tri, hoc r phi c na. Trong trng hp ngoi l bt buc phi quay u xe,
bn phi tr l ph 10$. Bn c mi thit k v a ra ch dn cho ngi i xe i sao
cho phi tr l ph l t nht gia 2 im bt k trong thnh ph. Rt may h thng
ng giao thng ca Peace c dng bn c.
ERP.INP
8 11

ERP.OUT
8

.#####..
.#...#..
.#...#..
.#E#####..
.#...
.##F#...

v d trn k t # ch ra on ng ph, cn k t . ch ra on ng
khng l ng. Cc on ng ph u c th i c 2 chiu. K t E ch ra v tr xut
pht ca xe t c u xe hng v pha ng, cn k t F ch ra v tr kt thc. L
trnh phi tr l 8$, trong ta phi thc hin 3 ln r tri v 1 ln r phi n ch. Ta
c th thc hin cch i r phi 2 ln n ch, nhng cch l ph phi tr l 10$.
Chiu cao v chiu rng ca bn t nht l 4 v khng qu 30. Bn c ng 1
im xut pht v 1 im kt thc. Lun c ng i t im xut pht n im kt
thc. Lun c mt khung gm ton k t . vin bn khng th vt ra ngoi bn
.
D liu: ERP.INP
 Dng th nht cha 2 s nguyn dng h, w theo th t l chiu cao h v chiu
rng ca bn .
 Mi dng trong h dng tip theo cha w k t. Mi k t ch l mt trong s cc
k t sau:
- .: v tr khng c ng
- #: v tr c ng ca bn .
- E: v tr xut pht, xe hng u v pha ng.
89

Mt s vn ng ch trong mn tin hc

- W: v tr xut pht, xe hng u v pha Ty.


- N: v tr xut pht, xe hng u v pha Bc.
- S: v tr xut pht, xe hng u v pha Nam.
- F: v tr kt thc.
 Trong bn c ng 1 trong 4 k t E, W, N, S. V ng 1 k t F.
Kt qu: ERP.OUT
 Duy nht mt s l l ph ca l trnh r nht i t v tr xut pht n v tr kt
thc.

Bi ton:
To xu
Cho hai tp A v B cha cc xu. A=(p1,p2,,pn); B=(q1,q2,,qm);
Mt xu S c gi l c th nhn c t A nu S c th to thnh bng cch ghp cc xu
trong A. Tng t, mt xu S c gi l c th nhn c t B nu S c th to thnh bng
cch ghp cc xu trong B. V d:
A=(12, 43,5), B=(124,31,25)
S=1254312 l xu c th nhn c t A nhng khng nhn c t B
S=12425 l xu c th nhn c t B nhng khng nhn c t A
Bi ton t ra l: Hy tm mt xu S nhn c t A v B vi di ngn nht.
Bi ton:
N thang my (LIFT)
Mt ta nh cao tng c N thang my, mi thang my ni lin ng 2 tng vi nhau v
khng dng li nhng tng nm gia 2 tng ny. Vn tc ca cc thang my l nh nhau: 5
giy qua mt tng.
Thi im bt u, mi thang my u tng thp nht v chng cng bt u di
chuyn ln tng trn. Sau khi ti tng trn, ngay lp tc li chuyn xung tng di, ri li
ln tng trn, c nh th
Minh ang tng 1 (tng thp nht) v mun nhanh chng ln tng trn cng ca
ngi nh. Anh ta thay i thang my ch trn nhng tng chung ca hai thang my v nu
thang my kia ti thi im ny cng ti tng ny, vic chuyn thang my khi coi nh
khng tn thi gian no.
Yu cu: Hy vit chng trnh tnh thi gian t nht m Minh c th ln ti tng trn cng
ca ta nh.
D liu: LIFT.INP
 Dng u tin cha 2 s K v N, cch nhau du cch, l s tng v s thang my
ca ta nh (2<=k<=1000, 1<=N<=50000).
 Trn mi mt trong N dng tip theo, m t mt thang my ghi hai s nguyn A
v B cch nhau du cch, (1<=A<=B<=K), ngha l thang my ny di chuyn
gia hai tng A v B.
 Khng c hai thang my no khc nhau m li di chuyn gia 2 tng nh nhau.
Ch : D liu vo lun m bo c nghim.

90

Mt s vn ng ch trong mn tin hc

Kt qu: LIFT.OUT
 Ghi trn dng mt, thi gian t nht (tnh theo giy) m Minh c th ln ti tng
trn cng ca ta nh.
V d:
LIFT.INP
10 4
15
5 10
57
7 10

LIFT.INP
10 3
15
35
3 10

LIFT.INP
20 5
17
7 20
47
4 10
10 20

LIFT.OUT

LIFT.OUT

LIFT.OUT

45

105

150

Bi ton:
Hnh trnh nhanh (JOURN)
Cho N thnh ph. C nhng con ng mt chiu ni mt s thnh ph vi nhau.
N thnh ph c nh s t 1 n N. Vo nhng ngy l, xe c i theo ng chiu giao
thng, v trong nhng ngy chn th phi i theo hng ngc li. di cc con ng
gia hai thnh ph l s nguyn c o bng khong thi gian i ht con ng
(khng ph thuc vo hng i, tc ca cc loi xe c trn mt con ng l nh
nhau). Vit chng trnh tm tuyn t thnh ph A ti thnh ph B m thi gian ti c
B cng sm cng tt. Bit ngy u tin ca hnh trnh l mt ngy l. Thi gian i trong
mi ngy khng vt qu 12 gi. m cn ngh trong mt thnh ph. Hnh trnh c th
c tip tc trong ngy hm sau.
D liu: JOURN.INP
 Dng u tin cha hai s ln lt l s hiu ca thnh ph A v thnh ph B.
 Dng th hai cha N l s thnh ph v K l s cc con ng (1<=K<=1000).
 K dng cn li cha thng tin v cc con ng, mi dng cha ba s l s hiu
hai thnh ph c ni vi nhau bi mt con ng v khang thi gian tnh
bng gi i ht con ng , chiu ca con ng t thnh ph ghi trc n
thnh ph ghi sau.
Kt qu: JOURN.OUT
 Mi dng th hin mt con ng ln lt i trn hnh trnh bng 4 s: s hiu
thnh ph bt u, s hiu thnh ph kt thc con ng , s ngy (l ngy th
my k t khi bt u xut pht t A) v thi gian i trn con ng .

91

Mt s vn ng ch trong mn tin hc

V d:
JOURN.INP
13
67
129
1 6 2
1 5 19
5 4 1
4 6 2
4 3 4
235

JOURN.OUT
1 5 1 10
5411
4334

Bi ton:
Sp xp (SORT)
Cho mt dy s. Bn cn sp xp dy s bng cch i ch cc cp phn t. Chi
ph i ch phn t hai v tr i v v tr j l Cij.
Nhim v ca bn l tm chi ph nh nht c th sp xp dy s theo th t tng
dn.
D liu: SORT.INP
 Dng u tin cha dy s cn sp xp, c s phn t khng vt qu 7.
 Dng th i trong s N dng tip theo cha N s nguyn, s th j cho bit Cij, chi
ph i ch phn t v tr th i v v tr th j. Bit N l s phn t ca dy s,
cc phn t c nh s t 1 n N t tri sang phi. 0 Cij 999, Cii=0 v
Cij=Cji.
Kt qu: SORT.OUT
 In ra mt s nguyn dng duy nht: tng chi ph nh nht sp xp dy s theo
th t tng dn.
V d:
SORT.INP
123465
012345
101234
210123
321012
4 3 2 1 0 900
5 4 3 2 900 0

SORT.OUT
4

Gi : Xem mi nh l mt trng thi hon v ca N s (c tt c N! nh). Hai nh c


cnh ni vi nhau nu hai trng thi hon v tng ng ch khc nhau hai phn t u v
v b i ch cho nhau, trng s ca cnh ny bng Cu,v. Tm ng i ngn nht t nh
ng vi dy cn sp xp n nh ng vi dy sau khi sp khng gim.
Ch : do s nh c th ln ( = 7!) nn c th dng DIJTRA kt hp cu trc d liu
Heap.
92

Mt s vn ng ch trong mn tin hc

VN : MT S NG DNG THUT TON DIJTRA


Bi ton:
ng i gii hn
Mng li giao thng ca thnh ph biu din bng th N nh (i din cho N
thnh ph) v M cnh (i din cho M cy cu). Mi cy cu c gii hn cao ti a
ca xe khi chy qua n. Hay ni cch khc mi cnh trong th ng vi mt trng s
nguyn dng l chiu cao ca cy cu tng ng. Tm ng i t s n t (cho trc)
sao cho chiu cao ca xe c th i qua l ln nht c th.
Gi : Gi H[i] l chiu cao ln nht c th ca xe i t s n i.
Khi to gn H[s] = +v H[i] = 0 vi i s
Thut ton sa nhn tng t thut ton DIJTRA
Repeat
u:=0; max:=0;
for v:=1 to n do
if free[v] and (h[v] > max) then
begin
max:=h[v]; u:=v;
end;
if u=0 then break;
free[u]:=false;
for v:=1 to n do
if a[u,v] then
if h[v] < min(h[u],c[u,v]) then
begin
h[v]:=min(h[u],c[u,v]);
trace[v]:=u;
end;
until false;

Bi ton:
Tng s ng i ngn nht
Cho th v hng G vi cc cnh c trng s,2 nh s,t cho trc. Tnh s ng
i ngn nht t s ti t.( 2 ng i khc nhau nu th t cc nh trn 2 ng i khc
nhau)
Hng gii quyt: Kt hp DIJTRA v Quy hoch ng
Theo thut tan DIJTRA, d[i] l khong cch ngn nht t s n nh i. Ban u
d[v] = + ( v s) v d[s] = 0.
Quy hoch ng gi f[i] l s ng i ngn nht t s n nh i.Ban u f[v] = 0
(v s) v f[s] = 1.
Trong chng trnh DIJTRA:
Mi khi tm c ng i mi c di ngn hn (d[v] > d[u] + c[u,v]) ta tin
hnh thay i d[v] := d[u] + a[u,v] ng thi f[v] := f[u].
Mi khi tm c c 2 ng i c di bng nhau (d[v] = d[u] + c[u,v]) thay
i f[v]:=f[v] + f[u].
f[t] l kt qu cn tm.

93

Mt s vn ng ch trong mn tin hc

Lp trnh: an chng trnh DIJTRA kt hp Quy hoch ng.


For v:=1 to n do d[v]:=maxlongint; d[s]:=0;
For v:=1 to n do f[v]:=0; f[s]:=1;
Fillchar(Free,sizeof(Free),true);
Repeat
U:=0; mi:=maxlongint;
For v:=1 to n do
If (Free[v]) and (d[v]<mi) then
Begin mi:=d[v]; u:=v; end;
If u=0 then break;
Free[u]:=false;
For v:=1 to n do
If Free[v] then
If d[v]>d[u] + c[u,v] then
Begin d[v]:=d[u] + c[u,v]; f[v]:=f[u]; end
Else
if d[v] = d[u] + c[u,v] then f[v]:=f[v] + f[u];
Until false;

Bi ton:
K ng i ngn nht (PATHK)
Vng t X c N thnh ph (4N800) c nh s t 1 n N. Gia hai thnh
ph c th c ng ni trc tip hoc khng. Cc con ng ny c nh s t 1 n M
(1M4000). Ban lnh o th dc th thao vng X t chc cuc chy ua tip sc thng
minh theo quy lut sau:
- Thnh ph xut pht l thnh ph 1, thnh ph ch l thnh ph N.
- Mi i c K ngi d thi. Ln lt tng ngi chy t thnh ph 1 v thnh
ph N.
- Khi mt ngi chy v ti thnh ph N th ngi tip theo mi c php
xut pht. Ngi th K v ch ti thi im no th thi im c coi l
thi im v ch ca ton i.
- ng chy ca K i vin khng c ging nhau han ton.
- C th chy li nhng on chy qua.
Yu cu: Hy vit chng trnh tnh thi gian nh nht mt i hon thnh cuc chy
ua tip sc nu trn nu cc vn ng vin c tc chy nh nhau.
D li: PATHK.INP
 Dng u ghi ba s K, N, M
 M dng tip theo, mi dng ghi 3 s nguyn i, j, w th hin mt ng i trc tip
gia hai thnh ph i v j mt thi gian chy l w (n v thi gian 1w9500)
Kt qu: PATHK.OUT
 Dng th nht cha mt s nguyn duy nht l thi gian chy nh nht ca mt
i.
 K dng tip theo, mi dng th hin mt hnh trnh chy ca mt vn ng vin
trong i: l dy cc thnh ph lin tip trn hnh trnh .

94

Mt s vn ng ch trong mn tin hc

V d:
PATHK.INP
458
121
132
142
232
253
343
354
456

PATHK.OUT
23
1325
135
12125
125

Gi : T tng da vo thut ton DIJTRA. Gi D[t,i] l ng i ngn th t trong K


ng i ngn nht t nh 1 n nh i.
M t thut ton:
Khi to D[t,i] = +oo vi mi (i,j) ngoi tr D[1,1]=0
Lp
Tm D[t,i] nh nht v (t,i) cha c nh du.
nh du (t,i).
S dng (t,i) sa cc nhn D[t,i] vi iu kin
- c cnh (i,i)
- D[t,i] > D[t,i] + a[i,i]
Khi cn gn li mi ng i ngn th t ti nh i thnh ng
i ngn th t+1 v cp nht ng i ngn th t ti i bng ng i
qua i trc ri qua cnh (i,i) ti i.
Cho n khi nh du ht cc (t,i).

Bi ton:
S ph thuc - Olympic Balan 2003 (SUMS)
Cho tp s nguyn A gm n phn t, A={a1, a2,..., an}. S k c gi l ph thuc vo
tp A, nu k c to thnh bng cch cng cc phn t ca tp A (mi phn t c th cng
nhiu ln).
V d cho A={2,5,7}. Cc s nh 2, 4(2+2), 12(5+7 hoc 2+2+2+2+2) c gi l ph
thuc vo tp A. S 0 cng gi l ph thuc vo tp A.
Yu cu: Cho mt dy B, hy kim tra xem bi c phi l s ph thuc vo tp A hay
khng .
D liu: SUMS.INP
 Dng u tin cha s nguyn n (1 n 5000).
 N dng tip theo cha cc phn t ca tp A, a1 < a2 < ... < an (1 ai 50000 ). 
Dng th N+2 cha s nguyn m (1 m 10000 ).
 M dng tip theo cha dy s nguyn b1, b2, ..., bm (0 bi 1000000000 ).
Kt qu: SUMS.OUT
 Gm m dng, dng th i ghi ra TAK nu bi l s ph thuc vo tp A v NIE nu
khng phi l s ph thuc.
V d:
95

Mt s vn ng ch trong mn tin hc

SUMS.INP
3
2
5
7
6
0
1
4
12
3
2

SUMS.OUT
TAK
NIE
TAK
TAK
NIE
TAK

Gi : T tng p dng thut ton DIJTRA vi l thuyt ng d trong ton hc.


Xt th gm a1 nh i din cho cc s d khi chia mt s cho a1. Cc nh
ny c s hiu t 0,1,a1-1.
Ln lt ly s d ca php chia a2,a3,,an cho a1. Gi s ak mod a1 = x th s c cc
cnh ni (0,x), (1,x+1), vi trng s ak. Ch trng hp 2 s ak < ak c cng s d khi
chia cho a1 th ch xt ak.
Gi d(i) l ng i ngn nht t nh 0 n nh i cn li (1<=i<=a1) - y cng
chnh l tng nh nht c th to c t n s cho tha mn iu kin khi chia cho a1 c
s d l i. Do bi l s ph thuc nu bi >= d(bi mod a1)
Luyn tp:
Bi ton:
Bo tn ng vt hoang d (MOVE)
Mt khu bo tn ng vt c n a im v cc ng i hai chiu ni cc a im
, a im th i c nhit l ti, gia hai a im bt k c nhiu nht l mt ng i
ni chng.
Ngi ta mun di chuyn mt loi ng vt qu him t a im A ti a im B,
tuy nhin nu chnh lch v nhit gia hai a im lin tip trn ng i l qu cao
th loi ng vt ny rt c th b cht.
Yu cu: Hy ch ra mt hnh trnh m lch nhit ln nht gia hai a im lin
tip bt k trn ng i l cc tiu.
D liu: MOVE.INP
 Dng 1: Cha ba s n, A, B (2 n 200; A B)
 Dng 2: Cha n s t nhin t1, t2, ..., tn (i: 0 ti 20000)
 Cc dng tip theo, mi dng cha hai s nguyn dng u, v cho bit gia hai a
im u v v c ng i ni chng.
Kt qu: MOVE.OUT
 Dng 1: Ghi lch nhit ln nht gia hai a im lin tip bt k trn
ng i tm c, nu khng tn ti ng i th dng ny ghi s -1.
 Trong trng hp tm c ng i th dng 2 ghi hnh trnh tm c, bt u
t a im A, tip theo l nhng a im i qua, kt thc l a im B. Cc a
im phi c lit k theo ng th t i qua trn hnh trnh
96

Mt s vn ng ch trong mn tin hc

 Cc s trn mt dng ca Input/ Output file c ghi cch nhau t nht mt du


cch.
V d:
MOVE.INP
714
20 22 29 30 24 27 26
12
13
14
24
25
34
36
45
46
57
67

MOVE.OUT
2
1257634

22

24

30
20

3
29

7 26

6
27

Bi ton:
ng n trng (SCHOOL)
Ngy 27/11 ti l ngy t chc thi hc k I trng H BK. L sinh vin nm th
nht, Hiu khng mun v i mun m gp trc trc phng thi nn chun b kh k
cng. Ch cn li mt cng vic kh gay go l Hiu khng bit i ng no ti trng l
nhanh nht. Thng ngy Hiu khng quan tm ti vn ny lm cho nn by gi Hiu
khng bit phi lm sao c . Bn thnh ph l gm c N nt giao thng v M con
ng ni cc nt giao thng ny. C 2 loi con ng l ng 1 chiu v ng 2
chiu. di ca mi con ng l mt s nguyn dng. Nh Hiu nt giao thng 1
cn trng H BK nt giao thng N. V mt l trnh ng i t nh Hiu ti trng
c th gp nhiu yu t khc nh l gp nhiu n , i qua cng trng xy dng, ...
phi gim tc cho nn Hiu mun bit l c tt c bao nhiu l trnh ngn nht i t
nh ti trng. Bn hy lp trnh gip Hiu gii quyt bi ton kh ny.
D liu: SCHOOL.INP





Dng th nht ghi hai s nguyn N v M.


M dng tip theo, mi dng ghi 4 s nguyn dng K, U, V, L. Trong
K = 1 c ngha l c ng i mt chiu t U n V vi di L.
K = 2 c ngha l c ng i hai chiu gia U v V vi di L.

97

Mt s vn ng ch trong mn tin hc

Kt qu: SCHOOL.OUT
 Ghi hai s l di ng i ngn nhn v s lng ng i ngn nht. Bit
rng s lng ng i ngn nht khng vt qu phm v int64 trong pascal hay
long long trong C++.
Gii hn:
 1 N 5000
 1 M 20000
 di cc con ng 32000
V d:
SCHOOL.INP
32
1123
2231

SCHOOL.OUT
41

Bi ton:
Thnh ph trung tm (CENTRE)
Theo thng k cho bit mc tng trng kinh t ca nc Peace trong nm 2006 rt
ng kh quan. C nc c tng cng N thnh ph ln nh c nh s tun t t 1 n
N pht trin kh ng u. Gia N thnh ph ny l mt mng li gm M ng i hai
chiu, mi tuyn ng ni 2 trong N thnh ph sao cho khng c 2 thnh ph no c
ni bi qu 1 tuyn ng. Trong N thnh ph ny th thnh ph 1 v thnh ph N l 2 trung
tm kinh t ln nht nc v h thng ng m bo lun c t nht mt cch i t thnh
ph 1 n thnh ph N.
Tuy nhin,c 2 trung tm ny u c du hiu qu ti v mt dn s. V vy, c
vua Peaceful quyt nh chn ra thm mt thnh ph na u t thnh mt trung tm
kinh t th ba. Thnh ph ny s tm ngng mi hot ng thng nht, cng nh mi
lung lu thng ra vo tin hnh nng cp c s h tng. Nhng trong thi gian sa
cha y, phi bo m ng i ngn nht t thnh ph 1 n thnh ph N khng b thay
i, nu khng nn kinh t quc gia s b tr tr.
V tr v ng ni gia N thnh ph c m t nh mt th N nh M cnh.
Hy gip nh vua m s lng thnh ph c th chn lm trung tm kinh t th ba sao cho
thnh ph c chn tha mn cc iu kin trn
D liu: CENTRE.INP
 Dng u tin ghi 2 s nguyn dng N v M l s thnh ph v s tuyn ng.
 Dng th i trong s M dng tip theo ghi 3 s nguyn dng xi, yi v di vi
ngha tuyn ng th i c di di v ni gia 2 thnh ph xi, yi.
Output: CENTRE.OUT
 Dng u tin ghi s t nhin S l s lng cc thnh ph c th chn lm trung
tm kinh t th ba.
 S dng tip theo, mi dng ghi 1 s nguyn dng l s th t ca thnh ph
c chn ( In ra theo th t tng dn )

98

Mt s vn ng ch trong mn tin hc

Gii hn:
 2 N 30000
 1 M 100000
 1 di 1000
V d:
CENTRE.INP
66
121
231
361
1 4 100
4 5 100
5 6 100

CENTRE.OUT
2
4
5

Gi : Gi F1[i] l s ng i ngn nht t 1 n i. F2[i] l s ng i ngn nht t i


n N. iu kin i c chn lm trung tm kinh t l F1[i] + F2[i] > F1[n] (= F2[1]).
Ch v s nh ca th ln nn s dng thut tan DIJTRA + Heap.

99

Mt s vn ng ch trong mn tin hc

VN : LUNG MINCOST
Bi ton:
Lung cc i vi chi ph nh nht (MINCOST)
Cho mt mng l th c hng n nh, m cung. Mi cung ca mng c mt kh
nng thng qua v mt cc ph vn chuyn nht nh.
Trong thc t c th hnh dung th nh mt mng li vn chuyn hng ha.
Mi cung (u,v) c kh nng thng qua au,v c ngha l lng hng ha thng qua cung
ny khng c vt qu au,v . Mi cung (u,v) c mt cc ph vn chuyn cu,v ngha l
nu vn chuyn k n v hng (k au,v) trn cung ny th mt mt chi ph k*cu,v.
Hy tm mt phng n vn chuyn, ngha l hy xc nh trn mi cung ca
mng cn vn chuyn bao nhiu hng (ph hp vi kh nng thng qua ca mng) sao cho
vn chuyn c lng hng ln nht t ngun (nh s cho trc) v ch (nh t cho
trc) vi tng chi ph vn chuyn l nh nht.
5;2
2

1;4

10;2

6;2

1;2

1;4
3;4

2;4
4

4;1

D liu: MINCOST.INP
 Dng u l n, m, s, t : S nh, s cung, nh ngun, nh ch.
 m dng tip theo mi bao gm u, v, c, d cho bit c cung (u,v) vi chi ph l c v
kh nng thng qua l a.
Kt qu: MINCOST.OUT
 Dng u, ghi lng hng ti a vn chuyn c v tng chi ph vn chuyn.
 Mt s dng tip ghi u, v, i cho bit vn chuyn i n v hng t trn cung(u,v).
Gii hn:





n 100
dij 30000
cij 109
Phm vi tnh ton l Longint.

100

Mt s vn ng ch trong mn tin hc

V d:
MINCOST.INP
6916
1 2 10 2
1434
2314
2552
4324
3214
3612
4641
5662

MINCOST.OUT
5 57
121
144
252
321
362
433
461
562

Hng gii quyt: Da vo thut ton tm lung cc i FORD-FULKERSON.


Ch rng thut ton FORD-FULKERSON s dng fi,j biu th gi tr lung hin ti
thng qua trn cung (i,j) (fi,j = -fj,i).
fi,j > 0 c ngha l c lung gi tr fi,j thng qua cung (i,j). Khi cung (i,j) gi l
cung thun
fi,j < 0 c ngha l c lung gi tr -fi,j thng qua cung (j,i). Khi cung (i,j) gi l
cung nghch
tm lung MINCOST, da vo thut ton FORD-FULKERSON ,ti mi bc tm
ng tng lung, ta tm ng c chi ph t nht t s n t tha mn cc cung trn ng
i cha c bo ha (tc l c th tng thm gi tr lung trn cc cung ny). Chi ph trn
cc cung (i,j) ti mi bc tm c quy nh bng ci,j nu (i,j) hin ti ang l cung
thun v bng -ci,j nu (i,j) ang l cung nghch. Ta tng gi tr lung da theo ng
i chi ph t nht ny cho n khi khng tm c ng tng lung no na th ta c
lung MINCOST cc i.
Ton b chng trnh bi MINCOST
const inp='MINCOST.INP';
out='MINCOST.OUT';
maxn=100;
maxc=1000000000;
type ii=longint;
var fi,fo:text;
n,s,t:ii;
d:array[1..maxn] of ii;
trace:array[1..maxn] of ii;
c,a,f:array[1..maxn,1..maxn] of ii;
Procedure OpenFile;
begin
assign(fi,inp);
reset(fi);
assign(fo,out);
rewrite(fo);
end;

101

Mt s vn ng ch trong mn tin hc

Procedure CloseFile;
begin
close(fi);
close(Fo);
end;
Procedure Enter;
var i,x,y,m:ii;
begin
readln(fi,n,m,s,t);
fillchar(a,sizeof(a),0);
for i:=1 to m do
readln(fi,x,y,c[x,y],a[x,y]);
end;
function Getd(x:ii):ii;
begin
if x>=0 then Getd:=1 else Getd:=-1;
end;
function min(x,y:ii):ii;
begin
if x<y then min:=x else min:=y;
end;
function FindPath:boolean;
{Tm ng tng lung}
{s dng thut tan FORD BELLMAN tm ng tng lung c chi ph t
nht}
var u,v:ii;
stop:boolean;
begin
for v:=1 to n do d[v]:=maxc;
d[s]:=0;
repeat
stop:=true;
for u:=1 to n do
for v:=1 to n do
if a[u,v] - f[u,v] > 0 then
if d[v] > d[u] +
c[u,v]*Getd(f[u,v]) then
{cung (u,v) c trng s c[u,v] nu (u,v)
l cung thun  f[u,v] 0}
begin
trace[v]:=u;
d[v] := d[u] + c[u,v]*Getd(f[u,v]);
stop:=false;
end;
until stop;
if d[t]<maxc then FindPath:=true else FindPath:=false;
end;

102

Mt s vn ng ch trong mn tin hc

function findel:ii;
{Tm lng lung c th tng trn ng i chi ph t nht tm c}
var u,v,mi:ii;
begin
v:=t;
mi:=maxc;
while v<>s do
begin
u:=trace[v];
if f[u,v] >= 0 then {Nu (u,v) l cung thun}
mi:=min(mi,a[u,v] - f[u,v])
else {(u,v) l cung nghch}
mi:=min(mi,-f[u,v]);
v:=u;
end;
findel:=mi;
end;
procedure IncFlow;
{tng lung}
var pp,u,v:ii;
begin
pp:=findel;
v:=t;
while v<>s do
begin
u:=trace[v];
inc(f[u,v],pp);
dec(f[v,u],pp);
v:=u;
end;
end;
Procedure Process;
var boo:boolean;
u,v,k,sum:ii;
begin
fillchar(f,sizeof(f),0);
repeat
boo:=FindPath;
if boo then IncFlow else break;
until false;
k:=0;
for v:=1 to n do
if f[s,v]>0 then inc(k,f[s,v]);
sum:=0;
for u:=1 to n do
for v:=1 to n do
if f[u,v]>0 then inc(sum,f[u,v]*c[u,v]);
writeln(fo,k,' ',sum);
for u:=1 to n do
for v:=1 to n do
if f[u,v]>0 then writeln(fo,u,' ',v,' ',f[u,v]);
end;

103

Mt s vn ng ch trong mn tin hc

begin
OpenFile;
Enter;
Process;
CloseFile;
end.

Luyn tp:
Bi ton:
Trao i thng tin (KWAY)
Cho mt mng thng tin gm n trm v m ng ni hai chiu gia cc trm. Trm s l
trm ch huy, trm f l trm iu khin. Sau mt ln b tin tc tn cng ly mt d liu t trm
ch huy chuyn n trm iu khin, ch huy mng quyt nh chia thng tin chuyn i thnh
k n v thng tin chuyn theo k ng n trm iu khin. M hai ng truyn bt
k khng c chung bt k mt ng no.
Hy tm cch truyn k n v thng tin sao cho tng chi ph l nh nht.
D liu: KWAY.INP
 Dng u l n, m, k, s, f (n 100).
 m dng tip l u, v, c cho bit c ng t u -> v v v -> u vi chi ph l c.
Kt qu: KWAY.OUT
 Dng u ghi -1 nu khng th chuyn k n v thng tin theo cch trn, ngc
li ghi chi phi chuyn.
 k dng tip ln lt ghi cch chuyn ca tng n v thng tin. S u l s lng
trm trn ng truyn, tip l dy cc trm trn ng truyn (bt u t s,
kt thc f)
Ch : Phm vi tnh ton l Longint.
V d:
KWAY.INP
8 11 3 1 8
121
141
151
2 3 1
2 4 1
2 7 1
3 8 1
3 6 1
3 5 1
6 8 1
781

KWAY.OUT
11
41238
515368
514278

104

Mt s vn ng ch trong mn tin hc

VN : CC CNG THC HNH HC


1. Lu d liu hnh hc trong Pascal.
Thng thng vic tinh ton trong hnh hc c thc hin trn phm vi s thc.
Mt s kiu s thc thng c s dng nh sau:
Kiu
Single
Real
Double
Extended

Gii hn
1.5e-45..3.4e38
2.9e-39..1.7e38
5.0e-324..1.7e308
3.4e-4932..1.1e4932

Ch s c ngha
7-8
11-12
15-16
19-20

Kch thc (Byte)


4
6
8
10

Ty theo yu cu v chnh xc m chng ta s dng kiu d liu cho ph hp.


Ch rng cc php ton vi s thc lun c sai s, do khi so snh hai kt qu l s thc
th hai gi tr chnh nhau khng vt qu mt s eps (rt nh c mc nh t trc)
th c th xem hai gi tr bng nhau.
2. Cc khai bo kiu d liu.
Khai bo im
Type point=record
x,y:real;
end;

Khai bo an thng
Type Line=record
P1,p2:point
End;

Khai bo ng thng (ax + by + c = 0)


Type StrLine=record
a,b,c:real;
End;

3. Phng trnh ng thng.


Cch lp phng trnh ng thng i qua 2 im (x1,y1), (x2,y2) l:
(y1-y2)x + (x2-x1)y + (x1y2 - x2y1) = 0
Procedure Extract(p1,p2:point; var
begin
Var d : strLine
d.a := p1.y - p2.y;
d.b := p2.x - p1.x;
d.c:=p1.x*p2.y - p2.x*p1.y;
end;

d:StrLine);

Phng trnh ng thng trng vi trc tung l x = 0


Phng trnh ng thng trng vi trc honh l y = 0

105

Mt s vn ng ch trong mn tin hc

4. Khong cch, gc.


2

Khong cch gia 2 im (x1,y1) v (x2,y2) l: d =

(xx) +(yy)
1
2
1
2
Khong cch gia im (x0,y0) v ng thng ax + by + c = 0 l:
ax + by + c
d= 0 2 0 2
a +b
Gc gia 2 ng thng a1x + b1y + c1 = 0 v a2x + b2y + c2 = 0 l
a a +bb
1
2
1 2
cos =
2
2
2
2
a +b
a + b
1

Hai ng thng vung gc vi nhau khi a1a2 + b1b2 = 0


5. V tr tng i.
V tr tng i ca im i vi ng thng, an thng:
o im (x0,y0) nm trn ng thng ax + by + c = 0 khi v ch khi
ax0 + by0 + c = 0 .
o Nu gi F(x,y) = ax + by + c th ax0 + by0 + c = 0 F(x0,y0) = 0 o
Hai im (x1,y1) v (x2,y2) nm khc pha so vi ng thng
ax + by + c = 0 khi v ch khi:
(ax1 + by1 + c). (ax2 + by2 + c) < 0 F(x1,y1)*F(x2,y2) < 0
o Mt im (x0,y0) nm trn an thng ni hai im (x1,y1) v (x2,y2) nu
- F(x0,y0) = 0
- min(x , x ) x max(x , x )

min( y , y ) y max( y , y )
0

V tr tng i gia 2 ng thng (d1): a1x + b1y + c1 = 0


v (d2): a2x + b2y + c2 = 0
Xt
a b1
D = 1 ; = a 1 b 2 a 2b 1
a2 b 2
c b1
a c1
1
Dx =
; = b 1 c 2 b 2 c 1 Dy = 1; = a 1c 2 a 2 c 1
c2b 2
a 2c 2
o Nu D 0 th hai ng thng giao nhau ti ( x 0, y0 ) = (

D
x

Dy
D

o Nu D = 0 th
D
- Nu Dx 0 hay Dy 0 th hai ng thng song song vi nhau
- Nu Dx = Dy = 0 th hai ng thng trng nhau
6. Giao im.
Hai an thng A1A2 v B1B2 ct nhau ti im khng phi l u mt khi v
ch khi:
- A1 v A2 khc pha so vi B1B2
- B1 v B2 khc pha so vi A1A2
D Dy
Hai ng thng ctt nhau khi D 0, giao im l ( x 0 , y 0 ) =
; )
x
D
(
D
106

Mt s vn ng ch trong mn tin hc

7. Hm r phi, r tri.
B

C
B

Hm CCW cho bit khi i t ABC l r tri hay r phi. Hm tr v gi


tr -1 nu r phi (k < 0) , 1 nu r tri (k > 0)v 0 nu i thng. Trong :
(xb xa ) (xc xb )
k=
;
= ( x b x yc y b) ( y b y a)( x c x b)
( y b y a)(
a
) ( y c y b)
Procedure
ccw(p1,p2,p3:point):integer;
Var u1,u2,v1,v2,T:longint;
Begin
u1:=p2.x - p1.x; v1:=p2.y - p1.y;
u2:=p3.x - p2.c; v2:=p3.y - p2.y;
T:= u1*v2 - v1*u2;
If T = 0 then abs(ccw) < eps then ccw:=0
Else if t > eps then ccw:= 1
Else ccw:=-1
End;

C th dng hm ccw kim tra: 2 an thng A1A2 v B1B2 c giao im


khc u mt khi v ch khi ccw(A1,A2,B1)*ccw(A1,A2,B2) < 0
8. Tam gic.
Din tch tam gic
1
1
abc
S = a h a= p (p a )( p b )( p c ) = b c sin A = p r =
2
2
4R
Trong :
- a,b,c l di 3 cnh ca tam gic
1
p l na chu vi tam gic: p = 2 ( a + b + c )
- r l bn knh ng trn ni tip, R l bn knh ng trn ngoi tip
9. a gic.
Din tch a gic gm cc nh (x1,y1), (x2,y2) (xn,yn) l:
n
( x x )( y y )
i
i +1
i
i +1
(Trong (xn+1,yn+1) = (x1,y1))
2
S=
i=1
Nu a gic vi cc nh c ta nguyn th c cng thc lin h gia dn
tch a gic v s im nguyn nm bn trong a gic nh sau:
m
S=n+ 1
2
Trong :
- n l s im nguyn nm bn trong a gic
- m l s im nguyn nm trn cc cnh ca a gic
107

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Vn : Mt dng bi quy hoch ng


y l mt dng bi quy hoch ng thng gp , phng php thng l tnh f[I,j] qua f[I,k] v
f[k+1,j] Trong i<=k<=j( phc tp thng l O(n^3) , nhng c 1 s dng bi c th rt xung
n^2.) hoc tnh f[I,j] qua f[I,j+1] v f[I,j-1] ,( phc tp l n^2)

Bi Ton : <ngun

spoj.pl/problems/TRT>

FJ ( Farmer John ) mun bn N ming bnh lm t sa cc con b. ( 1 <= N <= 2000). FJ bn mi


ngy 1 ming bnh v mun nhn c s tin ln nht t vic bn nhng ci bnh trong mt
khong thi gian c hn. Mi ming bnh c gi tr cao nh nhiu nguyn nhn :
- Cc ming bnh c xp trong mt bng di c nh s t 1 n N. Mi ngy, FJ c th ly 1
ming bnh u ny hoc u kia ca bng ).
- Cng ging nh ru v ph mt, cc ming bnh cng c tui th cao th cng c gi tr.
- Gi tr cc ming bnh cng khng c nh. Ming bnh th i c gi tr V(i) ( 1 <= V(i) <= 1000).
- Mi chic bnh c gi tr ph thuc vo tui ca n. Mi con b s nhn c a*V(i) vi ming
bnh th i c a tui.
Cho cc gi tr V(i). Tm gi tr ln nht FJ c th nhn c t vic bn nhng chic bnh.
Chic bnh c bn u tin s c tui l 1. Cc ming bnh sau s nhiu hn ming bnh
trc 1 tui.

INPUT
Dng th nht : Mt s t nhin N duy nht.
Dng th 2 n N+1 : Dng th i cha gi tr ca V(i)
---------------------------------------------------------------------------------------------------------------------------109

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------OUTPUT
Mt s duy nht l gi tr ln nht m FJ thu c t vic bn bnh.
Sample :
Input:
5
1
3
1
5
2
Output:
43

Thut Ton : QH :
F[i,j] l s tin ln nht thu c ca on i -> j.
D thy s tui ca mi bnh 2 u lc l n - (j - i) = T
F[i,j] = Max(F[i,j - 1] + V[j] * T , F[i - 1,j] + V[i] * T).
C th ci tin thnh mng 1 chiu.
KQ : F[1,N]

Bi Ton LSFIGHT
< ngunhttp://vn.spoj.pl/problems/LSFIGHT/>
Trong k thi Marathon 08 nm nay cc vCoders phi tham gia mt mn thi u i khng gia 2
ngi. Sau vng loi, ban t chc s chn ra N th sinh c s im cao nht v nh s t 1 n N.
---------------------------------------------------------------------------------------------------------------------------110

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Cc th sinh ny phi xp ln lt theo th t thnh 1 vng trn (ngi th N ng cnh ngi th
1). Sau s chn ra 2 th sinh bt k ang ng cnh nhau trong vng trn thi u, th sinh no
thua s b loi v buc phi i ra vng trn, tr v hng gh khn gi. Cuc u c tip tc nh th
n khi ch cn mt ngi li v cng chnh l ngi thng cuc.
Tuy nhin ban t chc mun bit trc xem c bao nhiu ngi c kh nng thng cuc v l
nhng ngi no. Bit trc ai s thng trong mi trn u, bn hy gip ban t chc nh ^^
D liu
- Dng u l s nguyn dng N (3 <= N <= 500)
- N dng sau l ma trn A[i, j], A[i, j] = 0 nu th sinh i thua th sinh j v A[i, j] = 1 nu ngc li.
Bit rng lun m bo A[i, i]=1 vi mi i v A[i, j] + A[j, i] = 1 vi i <> j. Cc s vit cch nhau
t nht 1 du cch.
Kt qu
- Dng u l s nguyn dng M - s lng th sinh c kh nng thng cuc
- M dng sau mi dng ghi mt s l ch s ca th sinh c kh nng thng cuc theo th t tng
dn ca ch s.
V d
D liu
7
1111101
0101100
0111111
0001101
0000101
1101111
0100001
Kt qu
3
1
3
6
Thut Ton :
Quy hoch ng
F(i, j) = true nu c th tn ti cch u sao cho cc i th gia i v j u b loi (tnh theo chiu
---------------------------------------------------------------------------------------------------------------------------111

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------kim ng h trn vng trn).


F(i, j) = true nu tn ti k gia i v j (gia l tnh theo vng trn) m F(i, k) = F(k, j) = true v k
thua mt trong 2 ngi i v j.
T y d dng suy ra c p s.
phc tp O(n^3).

Bi Ton : OPTCUT
< Ngun http://vn.spoj.pl/problems/OPTCUT/>
Bn cn cht mt thanh g ra thnh n on, mi on c di ai. Cc on c cht phi c
di theo ng th t a1, a2, ..., an t tri sang phi.
Ti mi bc, bn c th cht mt nht chia mt thanh g lm hai, v chi ph cho nht cht ny
bng di ca thanh g trc khi cht.
Th t cht khc nhau s cho ra tng chi ph khc nhau khi cht thanh g thnh n on yu cu.
V d bn cn cht mt thanh g di 20 ra thnh 4 on di 3, 5, 2 v 10 theo th t.
Khi cht t tri sang phi:
20 cht thnh 3 v 17, chi ph 20.
17 cht thnh 5 v 12, chi ph 17.
12 cht thnh 2 v 10, chi ph 12.
Tng chi ph: 49
Khi cht t phi sang tri:
20 cht thnh 10 v 10, chi ph 20.
10 cht thnh 8 v 2, chi ph 10.
8 cht thnh 3 v 5, chi ph 8.
Tng chi ph: 38
Bn hy tm cch cht c tng chi ph nh nht.
D liu
---------------------------------------------------------------------------------------------------------------------------112

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Dng 1: n (1 n 2000)
Dng 2: n s nguyn dng a1, a2, ..., an, bit rng di ca thanh g a1+a2+...+an 500000
Kt qu

Mt s nguyn duy nht l chi ph nh nht tm c.


V d
D liu
4
3 5 2 10
Kt qu
37
Thut Ton : Gi Cat[i,j] l im ct sao cho f[i,j] t min , c th tnh cat[I,j] thng qua Cat[i+1,j]
V cat[i,j-1]. c/m Cat[i,j]>= Cat[i+1,j] , tng t c th Cm Cat[i,j]<=cat[i,j-1].
Cch chng minh c th gi l 1 tr chi ti u.

Bi Ton :DTGAME <ngun https://vn.spoj.pl/problems/DTGAME/>


Tin bc vn lun l th c gi tr i vi mi con ngi, k c vi pirate. V vy, khi hn o
xinh p ca tn cp bin kht ting ny sp b... gii ta, hn tranh th v vt cho n ng
tin vng cui cng. Trn hn o c N m vng nm cnh nhau trn mt ng thng, nh s t
1 n N. M vng i c gi tr l p_i. i thi cng s c nhim v san lp ht N m vng ny.
Nhng ti mi thi im, pirate c gng ngn cn vic san lp bng cch xy mt bc tng ngn
cch hai m vng lin tip no , vy l cm m cn li c chia lm 2 phn. i thi cng s
chn mt trong hai phn san lp ht, th l pirate gi li c phn cn li v hn s nhn
c s ng tin vng ng bng tng gi tr ca nhng m cn li . Cng vic c tip tc cho
n khi ch cn li mt m vng duy nht. i thi cng bit iu , cho nn h c chin thut
san lp cc tiu ha s tin ca pirate. Vi lng tham khng y, pirate quyt tm ly cng
nhiu vng cng tt. Hy gip con ngi khn kh v tin ny
Input
D liu vo gm nhiu dng:
---------------------------------------------------------------------------------------------------------------------------113

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------ Dng 1: Mt s nguyn dng N (1 n 2000).


Dng 2...n+1: Mi dng ghi gi tr p_i ca tng m vng theo th t t 1 n n (1 p_i 1000).

Output
D liu ra gm 1 dng duy nht ghi ra s ng tin vng ln nht c th v vt c.
Example
Input:
5
8
6
2
4
2
Output:10
Gii thch: u tin pirate chia m vng thnh 2 phn [1,2] v [3,4,5]. Xe i s san lp phn [1,2]
v pirate nhn c p_2 + p_3 + p_4 = 8 ng tin vng. Tip theo chia [3,4,5] thnh [3] v [4,5].
Xe i san lp [4,5] v pirate thu thm p_2 = 2 ng tin vng. Cng vic kt thc v ch cn 1 m,
vy tng cng thu c l 8 + 2 = 10 ng tin vng. Khng c cch no gip hn thu thm tin.

Thut ton : y l 1 bi tng t nh bi OPTCUT , cc bn c th tham kho cch gii trn .

Luyn tp .
Bi Ton :NKPOLY < ngun http://vn.spoj.pl/problems/NKPOLY/>
c vua vng quc XYZ t chc kn r cho c cng cha duy nht ca mnh. V vy, ng t ra
nhng yu cu rt cao cho con r tng lai. c th tr thnh con r ca ngi, cc chng trai thi
nhau th hin mnh. Sau khi vt qua nhng phn thi i hi sc kho, lng dng cm, h s
gp phi mt th thch v cng kh khn, l phn thi v s nhanh nhy v thng minh. c
vua s cho mi ngi mt ming ba cho bt k khng c im chung khc cc u mt. Vi cch
v nh vy, chng ta s thu c N-2 hnh tam gic. c vua yu cu h hy tm 2 cch chia:
Mt cch chia sao cho tam gic c din tch ln nht trong N-2 tam gic l ln nht.
Mt cch chia sao cho tam gic c din tch ln nht trong N-2 tam gic l nh nht.

---------------------------------------------------------------------------------------------------------------------------114

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Sau khi nh vua a ra hnh dng ca a gic li, h s ch c 1 giy a ra p n ca mnh.


Ngi a ra p n ng nht v nhanh nht s c chn lm ph m. Bn cng l mt ngi
lt vo vng thi ny. Hy chng t kh nng ca mnh i!
D liu
Dng u tin ghi s nguyn N l s nh ca a gic.
Trong n dng sau, mi dng ghi mt cp s nguyn l ta cc nh ca a gic. Cc nh c

lit k theo chiu kim ng h.

Kt qa
Dng th nht ghi din tch ca tam gic ln nht trong trng hp 1.
Dng th hai ghi din tch ca tam gic ln nht trong trng hp 2.

Cc gi tr din tch c chnh xc 1 ch s thp phn.


Gii hn
4 N 200.
6

Cc ta l cc s nguyn c tr tuyt i khng qu 10 .

V d
D liu:
5
00
02
14
22
20
Kt qa
4.0
2.0

---------------------------------------------------------------------------------------------------------------------------115

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Vn : TRIE TREE v ng dng.


Trie tree hay cn gi l cy tin t , c s dng rt nhiu trong cc bi ton so snh chui . nh
ngha n gin v d hiu nhng n c ng dng kh rng .

Hnh bn l 1 cy trie tng ng cho cc t "A", "to", "tea", "ted", "ten", "i", "in", and "inn".

Mt s bi tp ng dng

Bi ton : CHAIN2 < http://vn.spoj.pl/problems/CHAIN2/>


Chui t c di n l mt dy cc t w1, w2, ..., wn sao cho vi mi 1 i < n, t wi l tin t ca
t wi+1. Nhc li t u c di k l tin t ca t v c di l nu l > k v cc k t u tin ca v
trng vi t u. Cho tp hp cc t S={s1, s2, ..., sm}. Tm chui t di nht c th xy dng c
bng cch dng cc t trong tp hp S (c th khng s dng ht cc t).
D liu
Dng u tin cha s nguyn m (1 m 250000). Mi dng trong s m dng sau cha mt t
trong tp S. Bit rng mi t c di khng qu 250000 k t v tng di ca cc t khng
---------------------------------------------------------------------------------------------------------------------------116

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------vt qu 250000 k t.
Kt qu
In ra mt s duy nht l di ca chui t di nht xy dng c t cc t trong tp cho.
V d
D liu
3
a
ab
abc
Kt qu
3
D liu
5
a
ab
bc
bcd
add
Kt qu
2
Thut Ton : Bi CHAIN2 em dng Trie cho cc t, sau ch cn QH trn Trie tm nhnh
c nhiu nt l kt thc ca cc t nhts. Code tham kho :
uses math;
const
FINP

FOUT

'';

'';

type
trie

node

^node;
record

u,f

longint;

array['a'..'z'] of trie;

end;

---------------------------------------------------------------------------------------------------------------------------117

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

var
f1,f2

text;

root

trie;

string;

procedure openF;
begin
assign(f1,FINP); reset(f1);
assign(f2,FOUT); rewrite(f2);
end;
procedure closeF;
begin
close(f1);
close(f2);
end;

procedure add(var a:trie); inline;


var
c:char;
begin
new(a);
a^.u:=0;
a^.f:=0;
for c:='a' to 'z' do
a^.c[c]:=nil;
end;

---------------------------------------------------------------------------------------------------------------------------118

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------procedure inp;
var
n,i:longint;
p:trie;
begin
readln(f1,n);
add(root);
for n:=1 to n do
begin
readln(f1,s); p:=root;
for i:=1 to length(s) do
begin
if p^.c[s[i]]=nil then add(p^.c[s[i]]);
p:=p^.c[s[i]];
end;
p^.u:=1;
end;
end;

procedure dfs(a:trie); inline;


var
c:char;
begin
a^.f:=a^.u;
for c:='a' to 'z' do
if a^.c[c]<>nil then
begin
dfs(a^.c[c]);

---------------------------------------------------------------------------------------------------------------------------119

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------a^.f:=max(a^.f,a^.c[c]^.f+a^.u);
end;
end;

procedure solve;
begin
dfs(root);
writeln(f2,root^.f);
end;

begin
openF;
inp;
solve;
closeF;
end.

Bi luyn tp SEC < http://vn.spoj.pl/problems/SEC/>


Bessie nh dn n b i trn. m bo b mt, n b lin lc vi nhau bng cch tin nhn nh
phn. Tng l mt nhn vin phn gin thng minh, John thu c M (1 <= M <= 50,000) tin
nhn mt, tuy nhin vi tin nhn i John ch thu c b_i (1 <= b_i <= 10,000) bit u tin.
John bin son ra 1 danh sch N (1 <= N <= 50,000) cc t m ha m n b c kh nng ang
s dng. Tht khng may, John ch bit c c_j (1 <= c_j <= 10,000) bit u tin ca t m ha
th j. Vi mi t m ha j, John mun bit s lng tin nhn m John thu c c kh nng l t
m ha j ny. Tc l vi t m ha j, c bao nhiu tin nhn thu c c phn u ging vi t m
ha j ny. Vic ca bn l phi tnh s lng ny.
Tng s lng cc bit trong d liu u vo (tng cc b_i v c_j) khng qu 500,000.
QUY CCH NHP D LIU
---------------------------------------------------------------------------------------------------------------------------120

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------ Dng 1: 2 s nguyn: M v N


Dng 2..M+1: Dng i+1 m t tin nhn th i thu c, u tin l b_i sau l b_i bit cch nhau

bi du cch, cc bit c gi tr 0 hoc 1.


Dng M+2..M+N+1: Dng M+j+1 m t t m ha th j, u tin l c_j sau l c_j bit cch

nhau bi du cch.
V D
45
3010
11
3100
3110
10
11
201
501001
211
GII THCH V D
C 4 tin nhn v 5 t m ha. Cc tin nhn thu c c phn u l 010, 1, 100 v 110. Cc t m
ha c phn u l 0, 1, 01, 01001, v 11.
QUY CCH GHI KT QU
Dng 1..M: Dng j: S lng tin nhn m c kh nng l t m ha th j

V D
1
3
1
1
2
GII THCH
0 ch c kh nng l 010 -> 1 tin nhn. 1 ch c kh nng l 1, 100, hoc 110 -> 3 tin nhn. 01 ch
c th l 010 -> 1 tin nhn. 01001 ch c th l 010 -> 1 tin nhn. 11 ch c th l 1 hoc 110 -> 2
tin nhn.

Bi Ton

NPR

(y l mt bi cc bn luyn tp v Trie )

---------------------------------------------------------------------------------------------------------------------------121

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Cho mt danh sch t L v mt t w. Nhim v ca bn l phi tm mt t trong L to thnh mt


"vn hon ho" vi w. T u ny l duy nht xc nh bi cc thuc tinh sau:
N nm trong L.
N khc w.
Phn hu t chung ca chng di nht c th.
u l t c th t t in nh nht tho mn cc iu trn

Ch
Mt tin t ca mt t l mt chui c th thu c bng cch lp li vic xo k t cui cng ca
t. Tng t, mt hu t ca mt t l mt chui m c th thu c bng cch lp li vic xo k
t u tin ca t.
V d vi t: different.
T ny va l tin t, va l hu t ca chnh n. mt tin t di nht khc ca n differen, v mt
hu t di nht khc ca n l ifferent. Chui rent cng l mt hu t khc nhng ngn hn. Chui
eent v iffe u khng phi l tin t hay hu t ca t different.
Gi u v v l 2 t khc nhau. Ta ni rng u c th t t in nh hn v nu hoc u l mt tin t
ca v, hoc nu i l v tr u tin m chng khc nhau, v k t th i ca u ng trc k t th i
ca v trong bng ch ci.
V d, dog nh hn dogs, t ny li nh hn dragon (V o nh hn r).
D liu
C 2 phn. Phn th nht cha danh sch t L, mi t trn 1 dng. Mi t ch cha cc ch ci
thng ting Anh v khng c 2 no t ging nhau.
Phn th nht kt thc bng mt dng trng.
Tip theo l phn 2, vi mi cu hi cho t w trn mt dng.
Bn c th chc chn rng trong c 2 phn ca d liu vo, di ca mi t khng qu 30. V s
lng t trong mi phn khng qu 250000.
Kt qu
Vi mi cu hi, vit ra trn mt dng t m to thnh vn hon ho vi n. Kt qu phi vit bng
ch ci thng.
---------------------------------------------------------------------------------------------------------------------------122

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------V d
D liu
perfect
rhyme
crime
time
crime
rhyme
Kt qu
time
crime
Trong cu hi th 2, c 2 t c cng di hu t vi rhyme (l crime v time), t c th t t
in nh hn c chn.

Ch : Duyt bng cch chia i tp hp


Trong thc t ta thng gp dng bi phi xt tt c cc cu hnh c th xc nh cu hnh ti
u. Phng php thong thng c s dng l duyt 2^n c cn . Vi n c 32 th chi ph s l
2^32 ~~ 4 t(My tnh loi trung bnh c th phi chy my vi pht) , ko th m bo chy trong
thi gian cho php !
C 1 thut ton ti u hn , l ta s chia tp hp trong bi thnh 2 phn . Duyt tt c cc
trng thi mi phn . Sau Tip tc Duyt hay Qhd. Chi ph s nm c 2^(n/2) * n ~~ 1 triu ,
c th m bo chy trong thi gian cho php .

Bi tp v d.

---------------------------------------------------------------------------------------------------------------------------123

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Bi ton : VECTOR < http://vn.spoj.pl/problems/VECTOR/>


Trong mt phng ta c N vc t. Mi mt vc t c cho bi hai ch s x v y. Tng ca hai
vc t (xi, yi) v (xj, yj) c nh ngha l mt vc t (xi + xj, yi + yj). Bi ton t ra l cn chn
mt s vc t trong N vc t cho sao cho tng ca cc vec t l vc t (U, V).
Yu cu: m s cch chn tho mn yu cu bi ton t ra trn.
Input
Dng th nht ghi s N (0 N 30).
N dng tip theo, dng th i ghi cc s nguyn xi, yi ln lt l hai ch s ca vc t th i. (|xi|, |yi|
100). Dng cui cng ghi s hai s nguyn U V (|U|, |V| 109).
Output
Gm mt s duy nht l s cch chn tho mn.
Example
Input:
4
0 0
-1 2
2 5
3 3
2 5
Output:
4
Gi :D dng nhn xt vi bi , c mt thut ton tru b , l duyt tt cc cc t hp ca
tp vector cho , vi mi trng thi tm c , tnh tng gi tr ca cc vector c chn , t
ti u kt qu. Nh ni trn , vi cch lm ny phc tp s l 2^n ( n<=30) s ko chy
trong thi gian cho php .
Cch ti u hn l : chia N vc t thnh 2 phn mi phn gm N/2 vc t.
Duyt phn 1, c 2^(N/2) vc t tng, lu vo mng 32767 phn t.
Sort li mng ny theo ch s x ri y.
---------------------------------------------------------------------------------------------------------------------------124

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Duyt phn 2, vi mi vc t tng (x, y) duyt c ca phn 2, tm xem c bao nhiu vc t tng
ng (U-x, V-y) trong phn 1. Ta c th tm bng chia nh phn.
phc tp O(2^(N / 2) * (N / 2))
B nh O(2^(N / 2))

Bi Ton : COIN34 < http://vn.spoj.pl/problems/COIN34/>


Bn c 34 ng xu c gi tr nh sau:
xu(1) c gi tr 2
xu(2) c gi tr 3
xu(3) c gi tr 5
for n = 4 to 34
xu(n) c gi tr (xu(n-1) + xu(n-2) + xu(n-3))
Bn hy dng nhiu ng xu nht mua mt mn hng c gi l X!
D liu
Dng u tin l s test (khng qu 1000). Mi dng tip theo cha mt s nguyn X (1 X
2000000000).
Kt qu
Vi mi test, in ra "Case #" + s hiu test + ": " + s lng ln nht ng xu cn dng. Nu khng
c cch no t gi tr X th in ra -1.
V d
D liu
4
1
5
8
9
Kt qu
---------------------------------------------------------------------------------------------------------------------------125

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Case #1: -1
Case #2: 2
Case #3: 2
Case #4: -1
Gi : Bi tp ny c nhiu im ging vi bi VECTOR , nhng do d liu bi nn ta s chia
cc ng xu cho thnh 2 phn .
Phn 1 : cc ng xu th 1,220.
Phn 2: cc ng xu th 21,22,34
Duyt phn 1 , c 2^20 tng , ta lu s ng tin nhiu nht t c
Mi tng vo mng F. Duyt phn : duyt tt c cc tng , vi mi tng sinh ra , gi l S , vi
mi test , ta tm s ng xu nhiu nht phn 1 m tng gi tr ca chng l (X-S). t tm c
kt qu .

Bi Ton : CHNREST http://vn.spoj.pl/problems/CHNREST/


Hng nm v mun c khng kh m cng v cng tit kim nn bn thng t chc sinh nht
nh. Tuy nhin trc sinh nht nm nay vi hm bn thi u vo i tuyn tin hc quc gia. y
l mt s kin c bit c ngha nn bn quyt nh mng ngy sinh nht ca mnh ti mt nh
hng Trung Quc sang trng v bn t nh ln ny nht nh phi tiu xi rng tay hn. Mi vic
chun b gn xong nhng cn mt vn lm bn kh nhc u, l lm sao chn c
nhng mn n m mi ngi cng thch.
Nh hng c M mn n khc nhau v th v ch l mi mn n rt nhiu nn c th cho bao
nhiu ngi cng c, v th vn l gi mn no ch khng phi mi mn gi bao nhiu. C
tt c N ngi n d tic sinh nht (bao gm c bn trong ). Bn tm hiu c danh sch
nhng mn n yu thch ca tng ngi v bn mun rng i vi mi ngi phi c t nht 2 mn
m h thch. Tuy nhin sau khi n xong cn nhiu tit mc hp dn khc nn bn cng mun rng
bt k ai cng khng c qu 2 mn n yu thch trong danh sch c t trc. V vn cui
cng, y l tin ca b m nn cng khng nn tiu xi qu ng.
Yu cu
---------------------------------------------------------------------------------------------------------------------------126

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Hy cho bit s tin t nht phi tr gi mt thc n tha mn cc yu cu trn.


D liu
- Dng u tin cha hai s M, N
- Dng th hai cha M s Pi l gi ca mn th i.
- Trong N dng cui cng, dng th k ghi danh sch cc mn yu thch ca ngi th k.
Kt qu
- Gm mt s duy nht l kt qu ca bi ton, hoc
- in ra -1 nu khng c cch gi mn no tha mn.
V d
D liu:
53
100 150 300 425 200
124
1345
145
Kt qu:
450
Gii hn
- M 30.
- N 10.
Gi : vi m/2 mn n u tin , ta duyt tt c cc t hp ca n,
vi mi t hp sinh ra th s mn n a thch trong list ca mi ngi s l (a1,a2...an),
r rng ch xt nhng b no c tt c cc ai <=2 , vi mi b th m ha ~thanh ` s t nhin
tng t cho nhm 2 , vi mi trng thi (b1,...bn) s tm c trng thi tng ng bn nhm 1
(sao cho a1+b1=2 , ...,an+bn=2)

Luyn Tp : LQDDIV http://vn.spoj.pl/problems/LQDDIV/


Cho N ngi(2N32) ,mi ngi c mt s ai(1 ai 109) c gi l tin cy
Cn phn chia n ngi ny vo 2 tp sao cho:
- Mi ngi thuc ng mt tp
- Chnh lch tng tin cy ca 2 phn l b nht
---------------------------------------------------------------------------------------------------------------------------127

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Input
Dng u cha s nguyn N
Dng tip theo cha N s : s th i l tin cy ca ngi th i
Output
Ghi ra hai s u v v vi u l chnh lch nh nht v v l s cch phn chia
Example
Input:
5
15678
Output:
13
Ch thch : chnh lch t nht ca 2 phn l 1
C 3 cch phn chia .3 cch phn chia nhm 1 l (3,5) ,(1,3,4) v (1,2,5)

---------------------------------------------------------------------------------------------------------------------------128

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Ch : Mt S Bi Ton V Cy Khung
Vi cc bi ton v cy khung , ta thng gp 2 dng bi ch yu , l cc bi ton c lien quan
n Cy khung nh nht , v cc bi ton c lin quan n cy khung ln nht .
Hai thut ton thng c s dung l PRIM v KRUSCAL ( bn c c th tham kho trong ti
liu ca thy L Minh Hong hoc H S m, xin ko nhc li l thuyt y)
Cc bi tp.

Bi ton IOIBIN < https://vn.spoj.pl/problems/IOIBIN/>


C N thng nc c nh s t 1 n N, gia 2 thng bt k u c mt ng ni c mt van c
th kha hoc m. trng thi ban u tt c cc van u ng.
Bn c cho mt s yu cu, trong mi yu cu c 2 dng:
Dng X Y 1 c ngha l bn cn m van ni gia 2 thng X v Y.
Dng X Y 2 c ngha l bn cn cho bit vi trng thi cc van ang m / kha nh hin ti th 2
thng X v Y c thuc cng mt nhm bnh thng nhau hay khng? Hai thng c coi l thuc
cng mt nhm bnh thng nhau nu nc t bnh nyc th chy n c bnh kia qua mt s
ng c van ang m.
Input
Dng u tin ghi mt s nguyn dng P l s yu cu.
Trong P dng tip theo, mi dng ghi ba s nguyn dng X, Y, Z vi ngha c yu cu loi Z
vi 2 thng X v Y.
Output
Vi mi yu cu dng X Y 2 (vi Z = 2) bn cn ghi ra s 0 hoc 1 trn 1 dng ty thuc 2 thng X
v Y khng thuc hoc thuc cng mt nhm bnh.
Example
Input:
9
122
121
372
---------------------------------------------------------------------------------------------------------------------------129

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------231
132
242
141
342
172
Output:
0
0
1
0
1
0
Gii hn
1 N 10000
1 P 50000

Gi : y l bi tp c bn - ng dng thut ton KRUSKAL . Nu 2 bnh cng thuc 1 nhm


Bnh Th chng s cng thuc 1 gc cy.

Bi Ton : NKRACING < https://vn.spoj.pl/problems/NKRACING/>


Singapore s t chc mt cuc ua xe Cng Thc 1 vo nm 2008. Trc khi cuc ua din ra,
xut hin mt s cuc ua v m tri lut. Chnh quyn mun thit k mt h thng kim sot
giao thng bt gi cc tay ua phm lut. H thng bao gm mt s camera t trn cc tuyn
ng khc nhau. m bo tnh hiu qu cho h thng, cn c t nht mt camera dc theo mi
vng ua.

---------------------------------------------------------------------------------------------------------------------------130

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

H thng ng Singapore c th c m t bi mt dy cc nt giao thng v cc ng ni


hai chiu (xem hnh v). Mt vng ua bao gm mt nt giao thng xut pht, tip theo l ng
i bao gm t nht 3 tuyn ng v cui cng quay tr li im xut pht. Trong mt vng ua,
mi tuyn ng ch c i qua ng mt ln, theo ng mt hng.
Chi ph t camera ph thuc vo tuyn ng c chn. Cc s nh trong hnh v cho bit chi
ph t camera ln cc tuyn ng. Cc s ln xc nh cc nt giao thng. Camera c t
trn cc tuyn ng ch khng phi ti cc nt giao thng. Bn cn chn mt s tuyn ng sao
cho chi ph lp t l thp nht ng thi vn m bo c t nht mt camera dc theo mi vng
ua. Vit chng trnh tm cch t cc camera theo di giao thng sao cho tng chi ph lp t l
thp nht.

---------------------------------------------------------------------------------------------------------------------------131

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

D liu
Dng u tin cha 2 s nguyn n, m ( 1 n 10000, 1 m 100000) l s nt giao thng v s

ng ni. Cc nt giao thng c nh s t 1 n n.


m dng tip theo m t cc ng ni, mi dng bao gm 3 s nguyn dng cho bit hai u

mt ca tuyn ng v chi ph lp t camera. Chi ph lp t thuc phm vi [1, 1000].


Kt qa
In ra 1 s nguyn duy nht l tng chi ph lp t tht nht tm c.
V d
D liu:
67
125
233
145
---------------------------------------------------------------------------------------------------------------------------132

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------454
564
633
523

Kt qa
6
Gi : Ta S Tm cy khung ln nht ca th (thut ton tng t thut ton tm cy khung nh
nht nhng sort cc canh ngc li),
tng trng s ca cc cnh khng thuc cy khung ln nht s l kt qu bi ton.
Vi d liu bi , thut ton tm cy khung ln nht s l kruskal.

Bi 3 S Mng in
Mt cng ty n thay th ton b h thng dy in mc ni tip gia N phng lm vic.Cho bit s
Mng li in hin c ca N cn phng c biu din bi ma trn A[i,j] trong A[i,j] chnh
l di dy in ni gia hau cn phng i,j.Nu ko c dy in th gia 2 phng (i,j) th A[i,j] =0
v a[j,i]=0. Hin ti N phng u c dy in ni n h thng nhng h thng ng dy ny qu
nhiu. Hy tnh
tng di t nht ca dy dn cn s dng sao cho c N phng u c in.
D liu vo cho trong file SD.INP
+ dng u tin l s N
+ N dng sau m t ma trn A(n,n) , mi dng n s cch nhau 1 du cch.
Kt qu ghi ra file SD.OUT

---------------------------------------------------------------------------------------------------------------------------133

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------+ dng u l tng di cc ng dy cn dng


+cc dng sau mi dng 2 s ui vi th hin c dy in ni 2 phng ui v vi (i=1,2...)
V d
SD.INP
4
0342
3032
4301
2210
SD.OUT
5
34
14
24
Thut ton : Xy dng cy khung nh nht .
Bi ton NKCITY http://vn.spoj.pl/problems/NKCITY/
Nc Anpha ang lp k hoch xy dng mt thnh ph mi v hin i. Theo k hoch, thnh
ph s c N v tr quan trng, c gi l N trng im v cc trng im ny c nh s t 1
ti N. B giao thng lp ra mt danh sch M tuyn ng hai chiu c th xy dng c gia
hai trng im no . Mi tuyn ng c mt thi gian hon thnh khc nhau.
Cc tuyn ng phi c xy dng sao cho N trng im lin thng vi nhau. Ni cch khc,
gia hai trng im bt k cn phi di chuyn c n nhau qua mt s tuyn ng. B giao
thng s chn ra mt s tuyn ng t trong danh sch ban u a vo xy dng sao cho
iu kin ny c tha mn.Do nhn c u t rt ln t chnh ph, b giao thng s thu hn
mt i thi cng ring cho mi tuyn ng cn xy dng. Do , thi gian hon thnh ton
b cc tuyn ng cn xy dng s bng thi gian lu nht hon thnh mt tuyn ng no
Yu cu: Gip b giao thng tnh thi gian hon thnh cc tuyn ng sm nht tha mn yu cu
---------------------------------------------------------------------------------------------------------------------------134

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------ nu.
D liu
Dng cha s N v M (1 N 1000; 1 M 10000).
M tip theo, mi dng cha ba s nguyn u, v v t cho bit c th xy dng tuyn ng ni gia
trng im u v trng im v trong thi gian t. Khng c hai tuyn ng no ni cng mt cp
trng im.
Kt qu
Mt s nguyn duy nht l thi gian sm nht hon thnh cc tuyn ng tha mn yu cu
nu.
V d
D liu
57
122
151
251
143
132
532
344
Kt qu
3
Gi : Xy dng cy khung theo thut ton KRUSKAL , sort cc cnh theo th t t b n ln ,
cho n khi np N thnh ph vo cy khung Th kt qu l cnh ln nht trong cch cnh trong
cy khung va tm c (ni cch khc l cnh cui cng c kt np vo Cy khung tr khi
tt c N thnh ph c np vo cy khung).

---------------------------------------------------------------------------------------------------------------------------135

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Ch : Tm Kim Nh Phn v ng dng

Trong thc t , ta thng gp dng bi ton tm thi im kt thc sm nht (hay mun nht) ca
mt cng vic , hay tm chi ph b nht (hay ln nht) , vi cc yu cu rang buc trong bi.
Khi ta c 1 thut ton rt hiu qu , l cht nh phn . N c m t nh sau.
Yu cu : Cn tm gi tr V tha mn yu cu bi.
Thut ton c m t nh sau : {V d sau m t vic tm V sao cho V min}

Dau := 0; cuoi := Vc;


While dau <> cuoi do
Begin
Mid := (dau+ cuoi) div 2; {chat nhi phan}
If Kiemtra(mid) {neu mid thoa man} then dau:= mid+1 else cuoi:=mid;
End;

Bi ton : LIS (http://vn.spoj.pl/problems/LIS/)


Cho mt dy gm N s nguyn (1 N 30000). Hy tm dy con tng di nht trong dy . In ra
s lng phn t ca dy con. Cc s trong phm vi longint.
Input
Dng u tin gm s nguyn N.
Dng th hai gm N s m t dy.

Output
Gm mt s nguyn duy nht l p s ca bi ton
Example
Input:
5
21435
Output:
3

---------------------------------------------------------------------------------------------------------------------------136

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Gi : Gi k l di cc i ca dy con tng v k hiu H[1..k] l dy c ngha sau : H[i] l s


hng nh nht trong cc s hng cui cng ca cc dy con tng c di i. ung nhin H[1] <
h[2] <.. < h[k]. Mi khi xt them mt gi tr mi trong dy A th cc gi tr trong dy H v gi tr k
cng tng ng thay i.

Res:=1; H[1]:=1;
For i:=2 to n do
Begin
If A[i] < a[h[1]] then h[1]:=i
else if a[i] > a[h[res]] then
Begin
Inc(Res); H[res]:=i;
End
else
Begin
d:=1; c:=Res;
While d<>c do
begin
mid:=(d+c+1) div 2;
If A[i] > a[h[mid]] then d:=mid else c:=mid-1;
End;
Mid:=(d+c) div 2;
If (A[h[mid]] < a[i]) and (a[i]<a[h[mid+1]]) then
h[mid+1]:=i;
End;
End;
WRiteln(fo,Res);

Bi ton : ASSIGN1(https://vn.spoj.pl/problems/ASSIGN1/)
C n ngi, n vic (1 < n 200). Ngi th i thc hin cng vic j mt C[i,j] n v thi
gian. Gi s tt c bt u vo thi im 0, hy tm cch b tr mi cng vic cho mi
ngi sao cho thi im hon thnh cng vic l sm nht c th.

Input
- Dng u: N
- Tip theo l ma trn C[i,j]. (thuc kiu Integer)
---------------------------------------------------------------------------------------------------------------------------137

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Output
- Ghi thi im sm nht hon thnh.

Example
Input:
4
10 10 10 2
10 10 3 10
4 10 10 10
10 5 10 10
Output:
5

Gi : Cht nh phn thi m kt thc sm nht . vi mi gi tr ang xt , kim tra xem liu c
tn ti Mt cch ghp N th vi N vic hay ko.(S dng kin thc p ghp)

Bi ton : YUGI(https://vn.spoj.pl/problems/YUGI/)

Cc bn c b truyn tranh Nht Bn Yugi-oh chc hn ai cng cc k yu thch tr chi bi


Magic. B bi v chin thut chi quyt nh n s thng thua ca i th(m s thng thua th
cn lin quan n c tnh mng >_<). V th tm quan trng ca b bi l rt ln. Mt b bi tt
khng ch bao gm cc qun bi mnh m cn ph thuc vo s h tr tng tc gia cc qun
bi. B bi ca Yugi l mt b bi c s b sung, h tr cho nhau rt tt, iu ny l 1 trong cc
nguyn nhn khin Kaiba lun l k chin bi.
Tnh c Kaiba tm c 1 qun bi ma thut m chc nng ca n l chia b bi hin c ca i
th ra lm K phn, mi phn c t nht 1 qun bi (iu ny lm gim sc mnh ca i th).
Kaiba quyt nh p dng chin thut ny vi Yugi. Hin ti Yugi c trong tay N qun bi, 2 qun
bi i, j c sc mnh tng tc a(i,j) (a(i,j) = a(j,i)). Kaiba mun chia cc qun bi thnh K phn
theo quy tc sau:
Gi s K phn l P1, P2, ..., Pk th gim sc mnh gia 2 phn u,v l b(u,v) = min(a(i,j) vi i

thuc Pu, j thuc Pv).


gim sc mnh ca b bi l S = min(b(u,v) vi 1 u, v K).

Kaiba mun chia K phn sao cho S ln nht


---------------------------------------------------------------------------------------------------------------------------138

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Input
Dng u l 2 s N,K(2 K N 200)
N dng tip theo mi dng l N s a(i,j) (a(i,j) 32767; nu i = j th a(i,j) = 0)

Output
Gm 1 dng duy nht l S ln nht
Example
Input:
43
0123
1023
2203
3330
Output:
2
Gi : Cht nh phn , vi mi gi tr V(sc mnh) ang xt , nhm tt c cc qun bi (i,j) thnh 1
nhm nu
+ I # j.
+ a[i,j] <= V.
phn nhm c th s dng BFS.
Kim tra xem liu s nhm cn thit c gi tr V l bao nhiu ? Nh hn K hay ln hn K , t
gim dn khong cn xt .

bi ton : MTWALK(https://vn.spoj.pl/problems/MTWALK)
Cho mt bn kch thc NxN (2 <= N <= 100), mi mang gi tr l cao ca (0 <=
cao <= 110). Bc John v b Bessie ang trn tri (dng 1, ct 1) v mun i n cabin (dng
N, ct N). H c th i sang phi, tri, ln trn v xung di nhng khng th i theo ng
cho. Hy gip bc John v b Bessie tm ng i sao cho chnh lch gia im cao nht v thp
nht trn ng i l nh nht.
---------------------------------------------------------------------------------------------------------------------------139

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------D liu
Dng 1: N
Dng 2..N+1: Mi dng cha N s nguyn, mi s cho bit cao ca mt .

Kt qu
Mt s nguyn l chnh lch cao nh nht.
V d
D liu
5
11368
12255
44033
80234
43021
Kt qu
2
Gi : Ta c nhn xt cc gi tr cao nm trong khong [1,110] , v th ta c thut ton cht nh
phn nh sau :
Gi s ta ang xt gi tr V ( Chnh lch chiu cao)
- V chnh lch ti u ang xt l V , suy ra nu gi tr chi cao nh nht trong ng i tm
c l Min , th gi tr chiu cao ln nht phi nh hn hoc bng Max = Min + V.
- Do chiu cao cc <=110, nn vic th ln lut cc gi tr di (gi tr Min) c th chy trong
thi gian cho php .
-Vi mi gi tr V , ta loang tm 1 ng i tha mn 2 iu kin trn. phc tp M log M * N^2
( M l gi tr)

---------------------------------------------------------------------------------------------------------------------------140

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

VN : XP LCH CNG VIC

Bi ton xp lch cng vic l mt trng nhng bi ton ph bin nht trong thc t : xp lch thi
u, xp lch thi cng cng trnh ,xp lch sa cha my, xp lch hc tp
Yu cu ch yu ca bi ton lp lch l tm ra phng n ti u nht ph hp vi d liu trong
thi gian cho php.Cc phng php ch yu gii quyt bi ton lp lch ch yu l : sp xp
topo, thut ton Johnson, phng php heuritic,duyt c t cn , qhi hoch ng ,s dng lung
v th hai pha ..
Chng ta s cp n tng thut ton qua cc bi ton di y.

Phng php 1:

Duyt c t cn

Vic quan trong nht trong phng php ny chnh l tm cn. Vic tm cn hp l vi thi gian
cho php ta c th tm c kt qu tng i ti u.
c im ca phng php ny l thng sp xp d liu theo mt kha no thut li cho
vic duyt tm kt qu.

Bi ton 1:

Cho n cng vic , vi mi cng vic cho bit s tin thu Ci c khi

hon thnh , thi gian Ti thc hin cng vic, thi im Ri ti a kt thc. Hy xp lch thc
hin cng vic ti u.
D Liu: XL01.INP :
- Dng u l s n
- N dng sau l 3 s nguyn Ti , Ri, Ci.
Kt qu : XL01OUT :
---------------------------------------------------------------------------------------------------------------------------141

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

- Dng u l tng s tin thu c.


- Cc dng sau gm 4 s : s hiu , thi im bt u ,thi im kt thc , gi tr cng vic.
- V d:
XL01.INP
XL01.OUT
10

329

14 9

5 0 1 25

5 8 86

1 1 2 89

4 11 83

3 2 6 83

5 7 84

6 6 9 61

1 2 25

10 9 14
71

3 11 61
6 11 33
4 7 28
3 10 1
5 14 71

Hng dn :
Sp xp cc cng vic theo th t tng ca thi im kt thc.
Chng ta s duyt vi cn : Tng tin thu c khi thc hin thm cng vic th k + tng tin
cc cng vic cn li > kt qu ti u c .
Xy dng mt stack gm 4 trng: s hiu cng vic ti nh, thi gian bt u,kt thc, tin cng.
Nu tng tin > kt qu ti u th cp nht.
Gi s thc hin cng vic th k : np k vo stack,ta tnh s tin ca cc cng vic cn li = (tng
s tin cc cng vic cha thc hin s tin ca cc cng vic khng th thc hin c nu thc
hin cng vic k).
Nu tng tin + tin cn li > kt qu ti u th duyt tip ngc li g k ra khi stack v sa li
gi tr tin cn li .
---------------------------------------------------------------------------------------------------------------------------142

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Kt qu ca bi ton l cc gi tr cn li trong stack.

Bi ton 2:

C N cng vic , mi cng vic thc hin trn mt trong 2 my A hoc B. Thi
gian thc hin trn my A l A[i],trn my B l B[i]. Hy thc hin hon tt cc cng vic sao cho
thi gian hon thnh l sm nht.
D Liu: XL02.INP
- Dng u l s N.
- N dng sau l mi dng l 2 s a[i],b[i].
Kt qu: XL02.OUT
- Dng u l thi gian hon thnh cng vic
- Dng th 2 l cc cng vic hon thnh trn my A
- Dng th 3 l cc cng vic hon thnh trn my B
Hng dn :
Xy dng mng mt chiu rest[i]= tng(min(a[k],b[k]) vi k=i+1..n vi ngha rest[i] l thi
gian t nht cn c thc hin cc cng vic cn li l i+1..n.
Gi s lm xong cng vic k, thi lm trn my A l sumA, thi gian lm trn my B l
sumB th iu kin c th chn cng vic k l :
(sumA+sumB+res[k+1])/2<lsum vi lsum l kt qu ti u c.
Chng minh: Gi thi gian lm ht cc cng vic cn li l T th T>=res[k+1],thi gian cn lm
trn my A l TA, thi gian cn lm trn my B k TB th T=TA+TB.Hai ln thi gian thc hin
cc cng vic l :
sumA+sumB+tA+tB=sumA+sumB+T>=sumA+sumB+res[k+1] => pcm.

Bi ton 3: Cho n cng vic cn c lm trn M my.Thi gian hon thnh cng vici l
t[i].Mi cng vic phi thc hin lin tc trn mt my. Mi my J khng th hot ng lin tc
qu Q[j] gi (1<=j<=M),nu mun my j hot ng tr li th phi cho n ngh R[j] gi. Tm thi
gian nh nht hon thnh N cng vic trn M my.

D liu: XL03.INP gm :
-

Dng u l 2 s N,M (N<15;M<10);


Dng th 2 l N s T[i] (0<T[i]<=10);
Dng th 3 l M s Q[i] (0<Q[j]<24);
Dng th 4 l M s R[i] (0<R[i]<=6);
---------------------------------------------------------------------------------------------------------------------------143

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Kt qu: XL03.OUT :


- Dng th nht l Tmin thi gian hon thnh N cng vic.
- M dng sau mi dng j gm cc nhm c 3 s: s hiu cng vic,thi gian bt u ,thi gian kt thc
tng ng l lch lm vic ca my j.
V d:
XL03.INP

XL03.OUT

10 3

14

1 2 3 4
5 4 3 4
5 3

8 04 65
9 4 10 14

4 3 8
1 1 2

10 0 3 7
4 7 3 8
11 2 12
14
1 01 91
6 5 8 13

Hng dn:
Duyt theo cng vic. To mt phng n n gin ban u vi thi gian thc hin xong N cng
vic l ltg lm cn ngay khi duyt phng n tip theo . Khi xy dng mt phng n nu
duyt xong k-1 cng vic ,tip tc chn mt my lm cng vic th k m thy thi gian lm cc
cng vic l t 1 n k l tg >ltg th khng thc hin tip phng n ny na. iu kin chn
my j nhn cng vic k l : thi gin lm cng vic k phi khng vt qu thi cho php lm lin
tc ca my j u tin chon nhng my I no va thc hin xong sm nht cng vic nay trc k
mt khc my I phi l my thc hin cng vic k tt nht ( khng c my no thc hin xng cng
vic k sm hn n). m bo thi gian chy cn t cn thi gian.

Bi ton 4:

C M mn hc c nh s t 1..M v N kha hc nh s 1..N. Mi kha hc


p ng 1 s mn hc. tt nghip hc sinh cn hon thnh tt c cc mn hc. Hy gip chn ra
1 s t nht cc kha hc tt nghip.
D liu: XL04.INP :

- Dng u l 2 s N,M (M,N<200);


- Trong N dng sau mi dng gm M s : s 0 nu kha hc j khng p ng c mn hc I ,1 nu
ngc li.
---------------------------------------------------------------------------------------------------------------------------144

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Kt qu: XL04.OUT :

- Dng u l s kha hc
- Dng sau l s hiu cc kha hc.
V D:
XL04.INP

XL04.OUT

4 3

0 0 1

2 3

1 0 0
0 1 1
1 0 0

Hng dn:

Cn: s kha hc c chon < s kha hc ti u


Nu p ng M mn hc th cp nht kt qu.
Duyt cc kha hc vi su ph hp: mi ln duyt ta ch c mt s kha c nhiu mn hc
c tha mn nht tc l mi ln duyt ta sp xp gim cc kha hc theo s lng cc mn hc
cha hon tt m cc kha hc c th p ng c. Ngoi ra ta cn phi t cn j thi gian
m bo thi gian chy.

Bi ton 5:

Robot qut vi

C 9 cn phng c nh s t 1 n 9 c qut vi vi cc mu trng xanh v vng.C 9


robot c nh s t 1 n 9 ph trch qut vi cc phng.Mi robot ch qut mt s phng nht
nh.Vic qut vi c thc hin nh mt chng trnh ci t tun theo cacc qui tc sau :

---------------------------------------------------------------------------------------------------------------------------145

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

- Nu phng anh mu trng th qut thnh mu xanh


. Nu phng ang mu xanh th qut thnh mu vng
. Nu phng ang mu vng th qut thnh mu trng
Mi ln ch c php gi mt robot ra qut vi nhng mi robot c th gi nhiu ln. Robot c
gi s qut vi tt c cc phng n c ph trch.Hy tm mt phng n qut vi sao cho cui
cng tt c cc phng u mu trng v tng s lt phng phi qut vi l t nht.

D liu : XL05.INP

- 9 dng u,dng th I m t danh sch cc phng m robot th I phi qut vi di dng mt xu k


t s lin nhau.
- Dng cui cng l 1 xu 9 k t m t trng thi ca cc phng.K t V tng ng vi mu vng,k
t X tng ng vi mu xanh,k t T tng ng vi mu trng.
Kt qu: XL05.OUT

- Nu khng c phng n ghi ra -1.


- Nu c phng n th dng u l th t ci cc robot,dng sau l s lt phng phi qut vi.
V D:
XL05.INP

XL05.OUT

159

2455688

123

21

357
147
532

---------------------------------------------------------------------------------------------------------------------------146

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------369
456
789
258
XTVVXVTXT

Hng dn :
Duyt quy theo s ln qut lin tc ca 1 robot.
Nhn xt:
- mi robot ch c th gi lin tc 0 n 2 lt
- Nu m ha cc k t T l 0,X l 1 ,V l 2 .Mu mi phng s tr thnh mu trng khi s hiu
mu hin ti ca n + s lt phng c qut vi l 1 s chia ht cho 3.
T c th d dng gii quyt c bi ton ny.

Bi ton 6:

Xp vali

Cho mt va li c th cha W n v trng lng .C N loi vt (s lng khng hn ch ),


vt I c trng lng A[i] v gi tr C[i].Hi nn chn s lng mi vt l bao nhiu gi tr thu
c l ln nht.

D liu: XL06.INP
- Dng th nht l 2 s N v W
- N dng tip theo : Dng i+1 ghi 2 s A[i],C[i].
Kt qu: XL06.OUT

- Dong th nht l tng gi tr ca valy.


- Cc dng tip theo mi dng 2 s : s I (s hiu vt c chon) v s lng vt i.
V d:
---------------------------------------------------------------------------------------------------------------------------147

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

XL06.INP

XL06.OUT

4 100

110

50 50

2 1

19 20

3 1

80 90
21 25

Hng dn :

Xy dng mng r[i]=c[i]/a[i] l gi tr trung bnh ca mi n v khi lng ca vt th i.


Sp xp cc mng a[i],c[i],r[i] theo chiu tng ca r[i].
Tin hnh duyt theo s lng mi vt.
Gi s xt n vt th i khi lng vali xp l weight,gi tr hin ti l cost. Tnh s lng
max s vt th I c th b vo vali l T.
Cn: C th cho vo X (0<=X<=T) vt I nu :
Cost+(R[i+1]*(W-(weight+a[i]*x))>Lcost.

---------------------------------------------------------------------------------------------------------------------------148

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Phng php 2: Duyt kt hp heuristic

Trong cc vi ton lp lch xut hin mt lp bi ton NP l nhng bi ton khng c thut gii tt
trong thi gian cho php. Chnh v vy vn t ra l tin gn st n kt qu ti u cng gn
cng tt . Vic on nhn iu kin thch hp (heuristic) l rt quan trng t c kt qu gn
st ti u.
Cc heuritics thng l sp xp d liu theo mt kha no , vi mi kiu sp xp tin hnh duyt
tham lam c kt qu ti u nht c th

Bi ton 7:

Chia N vic cho M my

Cho N cng vic , cng vic I hon thnh trong thi gian t[i]. Cc cng vic c thc hin trn
M my cng sut nh nhau, mi my u c th thc hink c cng vic bt k trong N vic)
mi cng vic c lm lin tc trn mt my cho n khi xong .Hy t chc my thc hin N
cng vic sao cho thi gian hon thnh cng nh cng tt.

D liu: XL07.INP

- Dng u gm 2 s nguyn N,M


- Dng tip theo l N s T1,T2..Tn
Kt qu: Xl07.OUT :

Dng u l thi gian hon thnh n cng vic

M dng sau dng i+1 ghi cc s hiu cng vic thc hin trn my i

---------------------------------------------------------------------------------------------------------------------------149

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------V d:
XL08.INP

XL08.OUT

6 3

2 5 8 1
5 1

3
2

5 6

Hng dn:

Bc 1: Sp xp cc cng vic gim dn theo thi gian hon thnh


Bc 2 : Ly M cng vic u phn cng cho M my, Mi my lm mt vic
Gi MaxT l thi im hon thnh M cng vic ny.
Bc 3: Repeat
Repeat
Chn my c thi gian lm nh hn MaxT, xp thm 1 cng vic mi cho my ny.
Until :Nu cng vic mi vo th khng cn my no c thi gian d kin nh hn MaxT.
Cp nht li gi tr MaxT
Until Sp xp ht vic.

Bi ton 8:

ng gi

C N vt v mt s gi hng. Mi vt c kch c V[i], cc gi hng c th gi ti a mt


kch c To. Hy chon 1 s t nht cc gi hng ng gi N vt trn.
D liu: XL08.INP.
---------------------------------------------------------------------------------------------------------------------------150

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------- Dng u l s N,V0 (N<=100).


- Dng th 2 l N s nguyn dng V1,V2..Vn.
Kt qu: XL08.OUT
- Dng u l s S s gi hng t nht cn chn
- S dng sau mi dng l 1 s s nguyn ch s hiu ca vt xp trong gi i
V d:

XL08.INP

XL08.O
UT

5 5

3 3 2 2
2

1 3
2 4
5

Hng dn:

Cch 1:
Heuristic 1 : Sp gim theo kch thc vt
- Theo th t ln lt cho xp vo gi. Mt gi tip tc nhn thm vt nu tng kch thc cc
vt trong n v d vt mi nhn cn cha vt qu Vo
- Nu mt my no khng th nhn tip cng vic th tng s my thm 1.
Heuristic 2: Tng t heuristic 1 nhng mi ln chn gi cn trng nhiu nht.Nu khng cn gi
no gi c na th tng thm 1 gi mi.
Cch 2:
Nhn xt s my lun <=s vt tc l M<=N
Cho nn ta c th cht nh phn gi tr ca M.Vi mi gi tr ang xt ta s tnh kch thc ln
nht .

---------------------------------------------------------------------------------------------------------------------------151

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Bi ton 9:

C N cng vic cn thc hin trn mt my, mi vic i hi ng 1 gi chy


my.Vi mi vic ta bit thi hn cui cng phi np v tin thu lao thu c nu np kt qu
ng thi hn.Ch c mt my, hy lp lch thc hin mt s cng vic trn my sao cho tng s
tin thu c l ln nht ( nu c hai cch cng thu s tin nh nhau th chn cch c t thi gian
hn).Thi gian v tin thng l cc s nguyn dng.
D liu: XL09.INP

- Dng u l s N 100
- N dng sau : dng i+1 gm 2 s ,s th nht l thi hn cui cng phi np,s th 2 l tin thu lao
c hng nu np ng hn
Kt qu: XL09.OUT

- Dng u ghi hai s : tng tin thng v thi gian lm cc cng vic chn
- Cc dng sau l th t thc hin cc cng vic

V d:

XL09.INP

XL09
.OUT

10

111
7

4 4
5 1
2 21
3 5
12 27
5

24

2 18

8
3
10
7
9
2
5

---------------------------------------------------------------------------------------------------------------------------152

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------5 6
4 14

Hng dn:
Bc 1: Sp gim theo tin thng cng vic
Bc 2 : Ln lt ly cc cng vic sp xp a vo trc thi gian phn b cng vic theo
cch sau:
- T thi im kt thc mi cng vic I lui v 1 n v thi gian c on thi gian thc hin cng
vic i.Nu trn trc cn trng on ny th xc nhn on thi gian ny thc hin cng vic i.
- Nu on ny b tr cng vic khc th li n v pha gc mt v xp vo 1 on cn trng
- Nu khng c on cn trng no th b cng vic I xp cng vic khc
- Cui cng di cc on v pha gc thu c thi gian thc hin t nht

---------------------------------------------------------------------------------------------------------------------------153

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Phng php 3:

Cc thut ton ring

1.Lp lch trn hai my


Bi ton 11:

C N chi tit my nh s t 1..N.Mi chi tit cn phi gia cng ln lt trn 2


my A v B. Thi gian thc hin chi tit i trn my A l A[i] trn my B l B[i]
Xp lch thc hin gia cng cc chi tit sao cho thi gian hon thnh l sm nht.
D liu: XL07.INP :

- Dng u l s N ( N<=10000).
- Dng th 2 gm n s A[i]
- Dng th 3 gm n s B[i]
Kt qu: XL07.OUT :

- Dng u s S thi im sm nht hon thnh cng vic


- Dng th 2 ghi th t thc hin cng vic.
V d:

XL11.INP

XL11.OUT

26

3 3

1 4 2 5
3

4 3
6 2
5 7
6 3

---------------------------------------------------------------------------------------------------------------------------154

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------a) nh l Johnson (1954)


Phng n V={v[1],v[2],v[N]} ln lt thc hin cc chi tit v[1],v[2],v[N] vi thi gian
nh nht khi v ch khi Min(Av[k] ,Bv[k+1])<=Min(Bv[k],Av[k+1]) k=1,2..N-1,
T nh l trn c th chng minh s ng n ca thut ton sau:
b) Thut ton :
+ Bc 1 : Chia cc chi tit thnh 2 nhm :
Nhm 1 : Gm cc chi tit m Ai<=Bi
Nhm 2 : Gm cc chi tit m Ai>Bi.
+ Bc 2 : Xp nhm 1 theo chiu tng ca Ai,xp nhm 2 theo chiu gim ca Bi.
+ Bc 3 : Ni nhm 2 vo sau nhm 1.

Bi ton 12: Lp lch trn 3 my .


Xt bi ton gia cng N chi tit trn 3 my theo th t A,B,C vi bng thi gian
Ai,Bi,Ci,i=1,2,..n tho mn:
max Bi min Ai hoc max Bi min Ci
Hng dn:
Lch gia cng ti u trn 3 my s trng vi lch gia cng ti u trn 2 my: my th nht vi thi
gian Ai + Bi v my th hai vi thi gian Bi + C i.

2. Thut ton More

Bi ton 13: Lp lch gim thiu tr hn


C n cng vic nh s t 1 n n v mt my thc hin chng. Bit:
-pi l thi gian cn thit hon thnh cng vic i.
---------------------------------------------------------------------------------------------------------------------------155

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------ di l thi hn hon thnh cng vic i.

My bt u hot ng t thi im 0. Mi cng vic cn c thc hin lin tc t lc bt u cho


ti khi kt thc, khng cho php ngt qung. Gi s ci l thi im hon thnh cng vic i. Khi ,
nu ci > di ta ni cng vic i b hon thnh tr hn, cn nu ci di th ta ni cng vic i c hon
thnh ng hn.
Yu cu: Tm trnh t thc hin cc cng vic sao cho s cng vic hon thnh tr hn l t nht.
D liu
Dng u tin cha s nguyn dng n (0 < n 1000).
Dng th hai cha n s nguyn dng p1, p2, ..., pn (0 < pi 1000).
Dng th ba cha n s nguyn dng d1, d2, ..., dn (0 < di 1000).

Kt qu
Dng u tin ghi s lng cng vic b hon thnh tr hn theo trnh t tm c.
Dng tip theo ghi n s nguyn dng l ch s ca cc cng vic theo trnh t thc hin tm c.

V d
D liu
6
241231
356678
Kt qu
2
134625

Thut ton : More


Bc 1: Sp xp theo th t tng dn ca thi im bn giao
Bc 2 :Duyt t u cho n khi gp cng vic qu hn u tin (Gi s l cng vic th k)
Tm t u cho n cng vic th k, cng vic no c ti ln nht (Gi s l cng vic th m).
Nu cng vic ny c chuyn mt ln ri th dng chng trnh, cn nu khng th ta chuyn
cng vic ny xung cui. Ri tr li bc 2.

---------------------------------------------------------------------------------------------------------------------------156

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

3.Lp lch c thng pht


Bi ton 14:C N cng vic nh s t 1 n N cn b tr thc hin trn mt my. Bit:
- Pi l thi gian cn thit lm cng vic i
- Di l thi im cui cng phi hon thnh cng vic i.
- Hi l h s thng pht ca cng vic i.
Mi cng vic cn c thc hin lin tc t lc bt u n khi kt thc, khng cho php ngt
qung . Thi gian chuyn t cng vic ny sang cng vic khc l khng ng k .Gi s Ti l thi
im hon thnh cng vic I, khi gi tr thng pht ca cng vic I l Hi(Di-Ti).Bit thi im
c th thc hin cng vic l 0, hy tm trnh t thc hin N cng vic sao cho tng gi tr thng
pht ca cc cng vic l ln nht.

D liu: XL14.INP
- Dng u ghi s nguyn dng N (N<100001).
- Dng th hai ghi N s nguyn dng P1,P2,,PN.
- Dng th ba ghi N s nguyn dng D1,D2,,DN.
- Dng th t ghi N s nguyn dng H1,H2,,HN.
Kt qu: XL14.OUT
- Dng u l s gi tr thng pht tm c.
- Dng th hai ghi N s nguyn dng l trnh t thc hin cng vic.

XL11.INP

XL11.OUT

-17

1 2 3 4

1 2 3 4

3 2 1 3
1 2 1 2

---------------------------------------------------------------------------------------------------------------------------157

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------XL11.INP

XL11.OUT

2 2 3
4 3

2 5 3 1 4

3 2 10
11 9
1 2 2
1 3

Hng dn: Gi V[1],V[2]V[N] l th thc hin cc cng vic.Gi gi tr thc hin thng pht
ca cng vic V[i] l Qv[i] v gi s cng vic V[k-1] kt thc ti thi im t th tng gi tr thng
pht l :
i-1

S1= Qv[k]+Hv[i](Dv[i]-t-Pv[i])+Hv[i+1](Dv[i+1]-t-Pv[i+1]-Pv[i])+ Qv[k].


K=1

k=i+2

Khi tro th t hai cng vic V[i] v V[i+1] th tng gi tr thng pht ca N cng vic l :

i-1

S1= Qv[k]+Hv[i+1](Dv[i+1]-t-Pv[i+1])+Hv[i](Dv[i]-t-Pv[i+1]-Pv[i])+ Qv[k].


K=1

k=i+2

Do S1S2 th Hv[i+1]Pv[i]Hv[i]Pv[i+1]  Hv[i+1]/Pv[i+1]Hv[i]/Pv[i].


p dng nhn xt trn, bng cch xt ln lt cc cng vic v tr I trong dy (i=1,2,N-1) ln
lt so snh vi cc cng vic v tr j (j=i+1,i+2,..,N) s dn n kt lun:
Dy V[1],V[2],,V[N] tt nht  Hv[i+1]/Pv[i+1]Hv[i]/Pv[i]
Thut ton : sp xp cc cng vic theo gi tr tng ca Hv[i]/Pv[i] th dy cc cng vic sau khi sp
xp l dy kt qu ti u t ta c th tnh c tng s tin thng pht.
---------------------------------------------------------------------------------------------------------------------------158

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Phng php 4: Qui hoch ng


Phng php qui hoch ng thng p dng cho nhng bi ton c d liu va phi, v thng
tm c kt qu ti u trong thi gian chy ngn.
Tuy nhin y l mt phng php kh, vic tm cng thc quy hoch ng khng d cht
no.Chnh v vy khi lm bi thi nu khng tm c cng thc quy hoch ng th nn chuyn
sang hng quy hoc tham lam.

Bi ton 15:

Sau khi thnh cng vi phi v xut khu b sa Famer John c c mt s


tin rt ln v ng quyt nh xy nh.B khung ca ngi nh c hon thnh , l mt b
khung c kiu dng rt p.Farmer John quyt nh trang tr n thnh ngi nh p nht trong
lng. trang tr c cn tri qua N cng on,hon thnh cng on I cn phi tr cho th Pi tin.
Ngoi ra nu cng on j hon thnh trc cng on I th mun th hon thnh cng vic I th
cn tn Sij tin na ( m bo khi thc hin cng on I th khng ph v hoc lm hng cng
on .V d khi trang tr ni tht ,nu trong nh cha lp ca knh ch phi tr tin sn tng l 10
triu dng,nhng khi sn tng cn phi tr thm 2 triu ng na).L mt con ngi lun qu
trng ng tin mnh lm ra Farmer John khng mun lng ph mt cch sai lm. V vy ng
tm n bn ngh lp k hoch trang tr sao cho s tin phi tr l t nht.L mt lp trnh vin
khng ngi kh khn hy vit chng trnh tnh s tin t nht FJ phi tr.
D Liu : Xl15.INP

Dng u l s nguyn dng N (0<N<16).


N dng tip theo mi dng cha ng N s nguyn : s nguyn th I l gi tr gc ca vic I,s
nguyn th j (j<>i) l s tin Sij phi tr thm cho cng vic i.
Cc gi tr nguyn khng amm <10^6.

Kt qu: XL15.OUT
mt s duy nht l gi tr nh nht tm c.
V d:

XL15.INP

XL15.OUT

---------------------------------------------------------------------------------------------------------------------------159

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------2

30

10 10
9000 10

XL15.INP

XL15.OUT

47

14 23 0
5

14 0

1000
9500 14

Hng dn:
Gi H l tp hp cc cng vic lm .C[H] l chi ph nh nht hon thnh H.Do s cc tp con
ca tp N cong vic l 2^N,N15 nn c th dng mt s nguyn 2 byte i din cho mt tp
con. Trong s nguyn ny ,bit th I ca n bng 1 ngha l cng vic I hon thnh ,ngc li bit
th i=0 ngha l cha hon thnh.Ta c th dng nht k hiu h l s nguyn tng ng vi tp H
ni trn .
Thc hin QH theo s h tng dn t 1 n 2^N -1:
- Khi tr C[h]=0 vi mi h=0..2^N-1.Ring C[2i-1]=s[i,i] v tp cng vic H tng ng vi h=2i-1
ch c mt cng vic duy nht l i.
- Gi s xt n s h , ln lt xt cc bt I l bt 1 t phi qua tri: Nu b bt I trong s h ( cho
bt i=0) ta c s k th :
C[h]=Min{C[k]+s[i,i]+s[j,i] j l s hiu cc bit 1 trong s k}
T ta s c c kt qu.

---------------------------------------------------------------------------------------------------------------------------160

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Bi ton 16: Hi trng


Nh trng c mt phng hi trng. C nhng yu cu mun s dng phng hi trng ny, mi
yu cu cho bit thi im bt u v thi im kt thc. Nh trng c th chp nhn hoc t chi
i vi mt yu cu.

Yu cu: hy gip nh trng chn cc yu cu s dng hi trng sao cho tng thi gian
hi trng c s dng l ln nht.
D liu
Dng u tin cha mt s nguyn dng n (n 10000), s yu cu.
Mi dng trong s n dng tip theo cha 2 s nguyn dng p v k (0 p < k 30000), m t mt
yu cu bt u ti thi im p v kt thc ti thi im k.
Kt qa
Gm mt dng duy nht l tng thi gian ln nht m hi trng c s dng
V d

XL16.INP

XL16.OUT

12

12

1 2
3 5
0 4
6 8
7 13
4 6
9 10
9 12
11 14
15 19
14 16
18 20
---------------------------------------------------------------------------------------------------------------------------161

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Hng dn:
- Sp xp cc cng vic theo tng dn ca thi im kt thc.
- S dng mng T[i] i=0...30001 l s hiu ca cng vic cui cng c thi im kt thc l i.
- S dng mng F[i] i=030001 vi ngha tnh n thi im I my thc hin c F[i]
gi.Ban u khi to bng 0.
- Gi D[i],C[i] ln lt l thi im bt u v kt thc ca cng vic i.
Ta QHD nh sau:
For i=130001 {xt cc thi im}
Begin
F[i]=Max(F[i-1],F[D[k]]+C[k]-D[k]) vi k l s hiu cc cng vic c C[k]=i.
End.
F[30001] l kt qu ca bi ton.

Bi ton 17: Dch bnh l mm long mng ang honh hnh v lo lng n b b bnh nn Farmer
John bn r tt c s b v quyt nh i ngh. Ly ton b s tin bn b farmer John m mt
ca hng cho thu my cy. Ti thi im 0 ,ng John nhn c n t hng thu s dng my
cy ca N khch hng .Cc khch hng c nh s t 1 n N.Khch hng I cn s dng my t
thi im Di n thi im Ci (Di,Ci l cc s nguyn v 0<Di<Ci<10^9) v s tr tin s dng my
l Pi( Pi<10^7).Hai n t hng I v J c nhn nu khong thi gian c nhn nu thi gian s
dng khng giao nhau. V mi bc vo ngh nn Farmer John khng bit nn nhn nhng n
no thu c li nhun ln nht,l mt lp trnh vin bn hy gip ng y tnh xem li nhun
ln nht l bao nhiu v danh sch cc n t hng c nhn.
D liu:
XL17.INP
- Dng u l s N (0<N1000)
- Dng th i+1 trong N dng sau l 3 s Di,Ci,Pi.
Kt qu:
XL17.OUT
- Dng u gm 2 s : s n t hng c nhn v tng tin cng thu c.
- Dng th 2 ghi s hiu ca cc n t hng c nhn.
---------------------------------------------------------------------------------------------------------------------------162

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------XL17.INP

XL17.OUT

2 180

150
150

500

1
100

200

400
80

800

2 3

XL17.INP

XL17.OUT

2 1100

400 821
800

2 4

200 513
500
100 325
200
600 900
600

Hng dn:
- Sp xp cc khong thi gian thu s dng my theo im u ca nhng khong ny.
- Gi Nh[i] l s tin ti u thu c khi xt xong cc cng vic t 1 n I ( theo th t sp xp).
- Sau sa nhn t NH[i] n Nh[n] nh sau : Gn Nh[i]=Pi . sa nhn NH[i] , tm cng vic j c
nh ln nht trong cc cng vic t 1 n i-1 m thi im hon thnh ca cng vic j sm hn
thi im bt u ca cng vic I , s dung cng thc:
Nh[i]=Max(NH[i],Nh[j]+Pi , Cj<Di
tm c th t thc hin cng vic th s dng thm mng trace[i] , gn trace[i]=j nu j l n
lm cho Nh[i] max.

---------------------------------------------------------------------------------------------------------------------------163

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Phng php 5: S dng th 2 pha v Lung

c th ng dng th hai pha v lung vo bi ton lp lch cc bn cn nm vng kin thc


v cch mt s bi ton c bn sau y:
-

Tm cp ghp c lc lng cc i (cp ghp c nhiu cnh nht).


Tm cp ghp c trng s cc i, trng s cc tiu
Tm Lung cc i trn mng
Tm lt ct nh nht.

Bi ton:

C N th v M vic .Vi mi th cho bit danh sch cc cng vic m anh ta c th


lm c.Hy phn M vic cho N th sao cho mi th ch lm mt vic mi vic ch giao cho 1 th
lm v s vic lm c l ln nht.
D liu:
- Dng u 2 s N, M ( 0<N,M<101).
- N dng sau mi dng gm M s 0 hoc 1 .Bng 0 nu th I khng lm c vic j , bng 1 nu th I
c th lm c vic J.
Kt qu:
- Dng u l s S , s cng vic ln nht lm c.
- S dng sau mi dng gm 2 s I,j biu din phn cng vic j cho th i.
V d:

Xl18.INP

XL18.OUT

4 4

0 1 1 1

1 4

0 1 0 1

2 2

1 0 1 1

3 1

0 0 1 1

4 3

Hng dn: Xy dng th 2 pha , mt pha gm N nh tng trng cho N th , mt pha l M


nh tng trung cho M vic ,c cnh ni i-j nu a[I,j]=1.Bi ton tr thnh tm cp ghp c lc
lng cc i.
---------------------------------------------------------------------------------------------------------------------------164

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Bi ton : Phn cng hon thnh sm nht


C n ngi, n vic (1 < n 200). Ngi th i thc hin cng vic j mt C[i,j] n v thi gian. Gi
s tt c bt u vo thi im 0, hy tm cch b tr mi cng vic cho mi ngi sao cho thi
im hon thnh cng vic l sm nht c th.
D liu: XL19.INP
- Dng u: N
- Tip theo l ma trn C[i,j]. (thuc kiu Integer)
Kt qu: XL19.OUT
- Ghi thi im sm nht hon thnh.
XL19.INP

XL19.OUT

10 10 10
2
10 10 3
10
4 10 10
10
10 5 10
10

Hng dn:
- Cht nh phn thi im sm nht hon thnh cng vic gi l CM.
Left:=1;Right:=Maxint;
Repeat
Cm:=(left+right) div 2.
- Tin hnh tm cp ghp cc i vi iu kin: cnh I,j c th ghp vo nu C[I,j]Cm.
Nu c th tm c cp ghp c N cnh th gi tr lu gi tr kt qu bng Cm ng thi gim
Right:=Cm-1 ngc li Left:=Cm+1.
Until LeFt>Right.

---------------------------------------------------------------------------------------------------------------------------165

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Bi ton: C M sinh vin va N chuyn cho cc sinh vin ny (M,N<100).Cho ma trn


A[1..M,1..N] trong A[I,j]=0 nu sinh vin I c nguyn vng hc chuyn j, A[I,j]=2 nu sinh
vin khng c nguyn vng hc chuyn .
Cho dy P gm M s Pi (1iM): PI l s chuyn sinh vin I cn phi hc.
Hy tm cc b tr sinh vin hc cc chuyn ph hp nguyn vng ca hok ng thi cc
chuyn c s lng sinh vin theo hc chnh lch nhau cng t cng tt.

D Liu: XL20.INP
- Dng u ghi hai s M,N.
- M dng sau l ma trn A (mi dng ghi N s).
- Dng cui cng l M s P1,P2,PM.
Kt qu: XL20.OUT
- Dng u ghi s sinh vin theo chuyn c ng sinh vin tham gia nht.
- M dng tip theo : Dng th I (1iM) ghi Pi s l cc chuyn do lch xp cho sinh vin I theo
hc.
V d:
XL20.INP

XL20.OUT

8 8

20200
002

567

00220
200

2578
78

22000
000

1235

00020
022

136

02200
220

1458

348
3567

00200
000
02000
200
20020
---------------------------------------------------------------------------------------------------------------------------166

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------002
34244
334

Hng dn:
- Cht nh phn s hc sinh tham gia chuyn ong nht gi l k.
- Xt lung trn th hai pha ( pha tri N nh: mi nh l s hiu ca sinh vin ,pha phi M
nh : mi nh l s hiu nguyn vng),thm 2 nh T v S .Trng s trn cc cung (t,i) vi
i=1,2,,N nguyn vng ca sinh vin I.Trng s treen cc cung (j,S) vi j=N+1,N+2,,N+m) du
bng k.Cc cung (I,j) c trng s bng 1 nu a[I,j-N]=0 ,ngc li nu a[I,j-N]=2 th trng s cung
bng 0.
Nu th tm c lung cc i th tha mn .

Luyn tp:
Bi ton 21:

( Da theo thi chn i tuyn quc gia nm 1997-1998).

C N cng vic nh du t 1..N .Mi cng vic I c thi gian hon thnh l Ti, thi im bt u
thc hin l l Bi,thi im ti a phi kt thc l Ci.Hy lp lch thc hin c nhiu cng vic
nht.

D liu: XL11.INP.

---------------------------------------------------------------------------------------------------------------------------167

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------- Dng u l s N
- N dng sau mi dng gm 3 s Ti,Bi,Ci.
Kt qu: XL11.OUT

- Dng u l s M s cng vic xp c


- M dng sau mi dng gm 3 s : s hiu cng vic l c,thi im hon thnh,thi im kt thc
V d:
XL21.INP

XL21.OUT

25 22 47

3 8 `12

3 22 47

4 16 41

4 8 20

2 41 44

25 16 41

5 45 54

45 63

24 47 71
16 27 47
24 39 63

Bi ton 22: Lp lch sa cha t


Mt c s sa cha t c nhn n chic xe sa. Do cc nhn vin lm vic qu li nhc nn
n hn tr cho khch hng m vn cha tin hnh sa c chic xe no. Theo hp ng k kt
t trc, nu bn giao xe th i qu hn ngy no th s phi tr thm mt khon tin pht l A[i].
---------------------------------------------------------------------------------------------------------------------------168

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------ng ch c s sa cha quyt nh sa thi ton b cng nhn v thu nhn cng mi. Vi lc
lng mi ny, ng ta d nh rng sa chic xe th i s cn B[i] ngy. Vn t ra i vi
ng l phi lp lch sa tun t cc chic xe sao cho tng s tin b pht l t nht.
Yu cu: Hy lp lch sa xe gip cho ng ch c s sa cha t.
D liu
Dng 1: Cha s n (n 10000)
Dng 2: Cha n s nguyn dng A[1], A[2], ..., A[n] (1 A[i] 10000)
Dng 3: Cha n s nguyn dng B[1], B[2], ..., B[n] (1 B[i] 100)
Kt qu
Dng 1: Ghi s tin b pht ti thiu
Dng 2: Ghi s hiu cc xe s tin hnh sa cha, theo th t t xe c sa u tin n xe sa
sau cng
V d
Input:
4
1342
3231

Output:
44
4231

Xong cng vic 4 vo cui ngy 1 => phi tr 2 * 1 = 2 .


Xong cng vic 2 vo cui ngy 3 => phi tr 3 * 3 = 9.
Xong cng vic 3 vo cui ngy 6 => phi tr 6 * 4 = 24 .
Xong cng vic 1 vo cui ngy 9 => phi tr 1 * 9 = 9 .
Vy tng cng phi tr 44 .

---------------------------------------------------------------------------------------------------------------------------169

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Bi ton 23:

n b ng nh

i dch l mm long mng qua i Farmer John li quay li ngh chn nui b sa cho
ng.La b ny ca ng c kh nng cho sa rt tt nhng cng rt ng nh.Chng ch n c
cnh ng chng thch v ch cho sa nu c n ngay ti cnh ng (chng khng n c kh).
Farmer john c N cnh ng c , hin ti c k con b ng nh ang trn k cnh ng.Hy gip
Farmer John a k con b n cc cnh ng m cc ch b thch n.
Hin ti Farmer John ang ng cnh ng th 0, v a con b th j n cnh ng I th
John phi n cnh ng j n con b ti ri a v ng c i.Trn ng Farmer John c th
mang theo nhiu con b.
L mt ngi rt qu trng thi gian nn Farmer John mun i tht nhanh.
Bn hy gip ng y tm cch a cc con b sao cho tn t thi gian nht.

D Liu: XL23.INP
- Dng u l 2 s N,K (K<N<1000);
- K dng sau mi dng gm 2 s l v tr ca con b ang ng v cnh ng c m n yu thch.
Kt qu: XL24.INP
- Dng u l thi gian ngn nht cn dng.
- Dng th 2 gm k s l th t cc con b n cnh ng n thch.
V d:
XL23.INP

XL23.OUT

10 5

12

1 3
2 4
4

5 10
7 10

---------------------------------------------------------------------------------------------------------------------------170

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Vn v x l s nguyn( s nguyn ln, hm mod).


I) X l s nguyn ln.

Trong tin hc c nhiu lc chng ta phi lm vic vi nhng con s ln, thm ch l rt ln, khi
cc kiu d liu chun ca ngn ng lp trnh khng th biu din c, buc ta phi tm cc cch
biu din khc. biu din 1 s nguyn ln, cc bn c th dng xu hoc mng, mi phn t ca
xu hoc mng biu din 1 ch s ca s cn tm. y chng ta s xt trn mng. 1 s ln c
khi bo = 1 kiu record nh sau y.
Type bignum=record
D:longint;
CS:array[0..maxcs] of byte;
End;
D l s lng ch s ca n, mng cs biu din cc ch s ca s ang xt. thun tin, ta s lu
cc ch s ngc li so vi th t vit. VD s 123456 th mng CS s ln lt l
CS[1]=6;..CS[6]:=1. Lu cc ch s kiu ny s d dng khi thc hin cc php tnh trn s ln.
Bi ton:
Cho 2 s nguyn A v B c khng qu 1000 ch s, tnh A+B, A-B, A*B.

Hng dn:
1) Php cng, ta thc hin nh php cng c hc trng, tc l cng t hng n v n
hng chc Ta cn c 1 bin nh lu nh, sau khi n hng tip theo th phi cng c nh vo
na. Th tc mu:
Procedure cong(a,b:bignum);
Var n,I,nho:longint;
Begin
If a.d>b.d then n:=a.b else n:=b.d;
Nho:=0;
For i:=1 to n do
Begin
---------------------------------------------------------------------------------------------------------------------------171

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Nho:=nho+a.cs[i]+b.cs[i];
c.cs[i]:=nho mod 10;
nho:=nho div 10;
End;
c.d:=n;
if nho>0 then
begin
inc(c.d);
c.cs[c.d]:=nho;
end;
End.
Kt qu l s C.
2) Php tr, gi s s b tr > s tr. Ta cng cn 1 bin nh thc hin php tr nh chng ta
thng lm. n hng I, nu nho+b[i]>a[i] th c[i]:=10+a[i]-nho-b[i] v gn nho:=1, ngc li, tc
l nho+b[i]<=a[i] th c[i]:=a[i]-nho-b[i] v nho:=0. Cc bn t vit th tc.
3) Php nhn: php nhn th c phc tp hn 1 cht.
Procedure nhan(a,b:bignum);
Var I,j:longint;
Begin
For i:=1 to a.d do
For j:=1 to b.d do
Inc(c.cs[i+j],a.cs[i]*b.cs[j]);
For i:=1 to a.b+b.d do c.cs[i]:=c.cs[i+1];
For i:=a.b+b.d downto 1 do if c.cs[i]<>0 then break;
c.d:=I;
End.

---------------------------------------------------------------------------------------------------------------------------172

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Sau khi ci t c 3 th tc trn, ta c th hon thnh bi ton, ch lu php tr, nu A<B


th ta cn in ra 1 s m, v vy trc ht in ra du tr ri i ch A v B, sau thc hin tr nh
bnh thng. Hm so snh 2 s ln cng khng n gin, cc bn c th t ci t.
By gi 1 vn t ra l, nu c 1 bi ton m mi s c khong 10000 ch s, v cc bn phi
thc hin cc php tnh +,-,* nhiu ln, nh vy th nu ta vn thc hin nh cc th tc trn y
th khng th chp nhn c v mt thi gian. V vy chng ta cn c s ci tin. l ta ang
thc hin cc php tnh trn h c s 10, vy th ta s ngh n thc hin nhng php tnh trn cc
h c s ln hn, v khng lm phc tp ha vn th nhng c s ny l nhng bi s ca 10,
cc bn c th tng ln c s 10^9(nu dng kiu longint lu tr), hoc thm ch l
10^17,10^18( nu cc bn dng int64 hoc qword lu). Ch cn chnh sa nhng th tc trn
ch mod 10 v div 10 thnh mod coso v div coso l xong. Nhng khi in ra cn c 1 cht chnh
sa. Do y l c s ln nn mi phn t cn phi c log10( coso) ch s( trng hp coso=10 l
c 1 ch s), nhng trong PASCAL nhng ch s 0 v ngha u s b b i, nn khi write 1
phn t no , ta phi b sung nhng ch s 0 vo u n khi s ch s ri mi ghi ra( tr
phn t u tin v nhng s 0 trc phn t ny khng c ngha).

Bi ton: m dy

m s dy tng dn( di dy phi >=2)c cc phn t nguyn dng m tng ng


bng n

Gii hn
n<=4000

D liu vo
Ghi duy nht s n

D liu ra
Ghi ra s cch

V D
Input:
5
Output:
2
Gii thch: C 2 dy l (1,4)v (2,3)

y l 1 bi ton QH. Bi ny quy v bi ton tm s nghim ca phng trnh


x1+x2++xk=n vi x1<x2<x3<xk. Gi F[n,k] l kq bi ton.
TH1: Tt c cc s u xi u >1, lc F[n,k]:=F[n-k,k].
---------------------------------------------------------------------------------------------------------------------------173

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------TH2: x1=1, =>F[n,k]:=F[n-1,k-1] (loi x1 ra).


Kt hp 2 trng hp ny li ta c cng thc:
F[n,k]:=F[n-k,k]+F[n-1,k-1].
Vy l ta cn tm cc F[n,k] tha mn k*(k+1)<=n v cng li vo bin kt qu, kt qu bi ton l
rt ln, cho d cc bn c tm ra cng thc QH nhng vn ci t h c s 10 th cng khng
th gii quyt trn vn bi ton. V th nn gii php ca bi ny l dng h c s ln. C s cng
ln th cng rt gn thi gian chy chng trnh li.

II)Hm mod trong cc bi ton tin hc.


Trong tin hc c nhiu bi ton cn ng n x l s ln, nhng khi ca tc gi ch l tm ra
thut ton ng gii quyt bi ton ch khng coi trng vic ci t s ln, lc thng th tc
gi s yu cu ghi ra s d ca kt qu khi chia cho 1 c s bt k no . V vy m ta cn tm
hiu nhng tnh cht ca hm mod c th m bo kt qu mnh a ra l chnh xc.
Gi s c 2 s x v y, vi c s l n, c nhng tnh cht sau y:
1.(x+y)mod n = (x mod n+y mod n) mod n.
2.(x-y)mod n = (x mod n-y mod n)+ord(x mod n<y mod n)*n;( y c th hiu 1 cch n gin l
nu x mod n-y mod n<0 th cng thm n vo kt qu).
3.(x*y) mod n=(x mod n)*(y mod n)mod n.
Ngoi ra cn c th c nhiu tnh cht khc, nhng chng ny cng cc bn dng trong hu
ht cc bi ton thng gp.

Nu bi m dy trn ch yu cu chng ta in ra phn d ca kt qu khi chia cho 123456789 th


mi ln tnh F[I,j] ta li ly F[I,j] mod 123456789. Khi cng vo bin kt qu ta cng ly kt qu
mod 123456789. Do y ch thc hin php + nn theo tnh cht 1 th cui cng kt qu ta tm
c l chnh xc.

Bi ton: S huyn b( Mystery).

t nc Vn Lang thi c xa c nhng hiu bit tn tin v s hc. Tng truyn


rng, vua Hng Vng th 17 cng cc trng lo trong triu nh pht minh ra cc s
huyn b. Cc s ny gip ch dn ng vo kho tng ca t nc.
Theo cc chng tch kho c, cc nh khoa hc kt lun rng s huyn b c s a bng tch
ca (3d-1) vi mi c s d > 0 ca a.
---------------------------------------------------------------------------------------------------------------------------174

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Bm thch s hc ng thi cng rt thch tm hiu lch s t nc. Bn hy gip Bm


tnh s huyn b c s a (1 a 109). Do kt qu c th rt ln, bn ch cn in ra phn d
ca s huyn b c s a khi chia cho 20122007.

D liu
Gm mt s nguyn a duy nht.

Kt qa
In ra s nguyn duy nht l phn d ca s huyn b c s a khi chia cho 20122007.

V d
D liu:
10
Kt qa
7291779

Hng dn:
Vi bi ny th ta cn tm tt c cc c s ca a, sau ly s d ca (3^d-1) khi chia cho
20122007, sau p dng tnh cht 3 ly kt qu. Vn mu cht y l lm sao
tnh s d ca 3^d-1 cho 20122007. Nu dng 1 vng for t 1->d th s khng th m bo
thi gian v c nhng c rt ln. tnh cht 3, ta c 1 thut ton tnh trong log(d) nh
sau: Nu d chn l th 3^d=3^(d div 2)*3^(d div 2). Nu d l th 3^d=3*3^(d div 2)*3^(d
div 2). V vy ta ch cn phi tnh s d ca 3^(d div 2) l c th tnh c cho d, vy 1 th
tc quy l rt thch hp trong trng hp ny. Sau p dng tnh cht 2 ly phn d
ca (3^d-1) do y xut hin du tr.

Tree Num(TREENUM)
Mt s c gi l s tree_num khi n c l tng ca cc ly tha c s 3 vi s m
khng m tng dn.
V d 30=3^1+3^3; 325=3^0+3^4+3^5 l nhng s tree_num.
Yu cu :Tm s tree_num th n

Input
Dng u cha s nguyn dng ntest l s test(ntest<=30000)
Ntest dng sau:mi dng cha s nguyn dng n(0<=10^19).

Output
Ntest dng mi dng cha s tree_num th n

Sample
---------------------------------------------------------------------------------------------------------------------------175

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Input:
5
1
2
7
3
6
Output:
1
3
13
4
12

Thut ton
Nhn vo nh ngha ca s TREE_NUM th n, ta nhn thy: Nu thay c s 3 bng c s
2 th s tree_num th n chnh l s n. T ta c thut ton sau:
Phn tch n ra h nh phn. Gi s n=2^x1+2^x2++2^xk th s tree_num c tnh bng
cng thc 3^x1+3^x2++3^xk. Nh vy ta c th s dng x l bit trong bi ton ny,
nu bit th j l 1 th cng 3^j v kt qu. Nhng bi ton cha dng li y.
N<=10^19 tc l n c ti a 64 bt. Ta li phi s dng s ln gii quyt bi ny, do khi
chuyn t 2 sang 3 th kt qu ln hn rt nhiu. Nu ta cng tr trn c s 10 th kh
c th chy trong thi gian cho php vi s lng test ln(<=30000). Vy bi ny chng
ta nn thc hin x l vi c s ln, mng ly tha ca 3 cn c tnh trc trnh tnh
trng tnh lp li nhiu ln, gy lng ph v lm chm chng trnh.

Space settlement(SPACESET)
lu lm ri, mt thin h xa xi ... Mt ch xy dng nn mt trm khng gian
v i. Trm khng gian ny c m tng, v mi tng gm c n khu vc. Cc khu vc c
ni vi nhau bi cc tuyn ng cc tu khng gian c th bay qua.
Mt tng l mt vng trn vi n khu vc c t trn . Vng trn cung cp cc tuyn
ng bay cho cc tu khng gian. Trong vng mt tng, vic di chuyn ch c thc
hin dc theo vng trn . Vng trn nh hng ng bay s lun tn ti, bt chp s
lng khu vc trong tng .
Cc tng c t chc thnh mt h thng. Mt s kt ni hon ho c cung cp gia
cc tng. Ti mi khu vc trong mt tng s c cc tuyn ng ni ti mi khu vc
tng ngay trn v ngay di n. Tng trn cng v di cng cng c ni theo cch
tng t.

---------------------------------------------------------------------------------------------------------------------------176

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Chng phi hnh gia thch phiu lu -- Han Solo mun ch mi ngi gia cc khu vc.
Tu khng gian ca Solo c th bay theo mt hnh trnh c chnh xc k im dng, khng
hn khng km.
Cho gi tr ca k, n v m. Bn phi tnh s hnh trnh trong trm khng gian m Solo c
th dng thc hin cng vic ca mnh.
Lu

1. Mt khu vc c th c thm bao nhiu ln ty trong 1 hnh trnh.


2. Mt hnh trnh c coi l mt dy cc nh sao cho tn ti mt cnh gia 2 nh lin
tip. Hai hnh trnh c coi l khc nhau nu chng khc nhau ti mt nh bt k.
3. Tng trn cng v di cng ch c ni vi nhau nu nh chng khc nhau.
4. Hnh nh tng trng

Trong hnh, cc du chm mu en th hin cc khu vc. S kt ni c biu din bng


cc vng trn v ng thng.

Input
Dng u cha T, s lng test. Mi test cha cc gi tr ca m, n v k.

Output
Cha T dng, mi dng cho 1 test. Mi dng s ghi phn d ca tng s hnh trnh c th
s dng khi chia cho 12345678.

Example
Input:
5
111
121

---------------------------------------------------------------------------------------------------------------------------177

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

3 3 56
434
691 60 97764
Output:
1
2
8019378
6144
470730

Constraints
Dataset 1: T 100, m 1000, n 1000, k 100000 Time limit: 5s
Dataset 2: T 100, m 10^8, n 10^8, k 10^8 Time limit: 5s

Thut ton:
Mi hnh trnh c k im dng. im u tin trong hnh trnh c m*n kh nng chn, sau
t im th 2 tr i, mi im c (2*n+2) kh nng chn(s im vng k di +s im
vng k trn + s im k im trn vng trn hin ti).
T ta c cng thc tnh sau:Kt qu:=(m*n*(2*n+2)^(k-1))mod 12345678.
y l 1 trong nhng bi ton m p dng tnh cht th 3 ca hm mod rt nhiu ln. Da vo tnh
cht ny cc bn c th tnh ra kt qu khng my kh khn. Ch xin lu cc bn 1 vi trng
hp c bit khi m,n<=2. Lc ny th cng thc ca chng ta c 1 cht thay i(cc bn t tm
cng thc ca nhng trng hp ny). 1 iu na l nu cc bn p dng tnh cht 3 nhng khng
cn thn vi kiu d liu c th gy trn s.

---------------------------------------------------------------------------------------------------------------------------178

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Vn HEAP V ng Dng
-Heap l 1 trong nhng cu trc d liu c bit quan trng trong tin hc, n gip chng ta c th
gii c nhiu bi ton vi thi gian cho php. Sau y ta s tm hiu chi tit v HEAP.
-u tin heap l 1 cy nh phn c quan h gia nt cha v 2 nt con ca n. Loi heap max l
heap m mi c kha ln hn hoc bng cc nt con ca n( nu n khng phi l nt l). Trong
loi heap ny th ta c th d dng nhn thy kha ca gc l kha ln nht. Loi heap min th c
nh ngha tng t nhng ngc li. Sau y l hnh nh ca 1 heap max.

-T y chng ta ch xt trn heap max, heap min lm tng t, ch l vi heap min th nt cha
c kha b hn nt con nn khi thc hin cc so snh th phi o chiu.
-Do heap l 1 cy nh phn, nn cch n gin nht biu din n l dng 1 mng 1 chiu n phn
t( vi n l s lng phn t ln nht cn qun l). 2 nt con ca nt k l 2*k v 2*k+1, nt cha ca
nt k l k div 2. Gi nheap l s phn t hin ti ca heap.
Ta cn thc hin nhng thao tc sau vi 1 heap:
a) Upheap: Khi c 1 nt c gi tr kha tng ln th c th cu trc heap khng cn c bo ton na,
n c th phi 1 v tr khc( do n ln hn nn c th phi gn gc hn). Cn c 2 bin cha v
con thc hin qu trnh chnh sa heap, ta tng tng nt con lc u l v tr cn chnh sa,
nu nt cha ca n c gi tr kha < gi tr kha ca n th i ch nt con cho nt cha, nt con mi
---------------------------------------------------------------------------------------------------------------------------179

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------lc ny l nt cha c. C tip tc nh th n khi gp 1 v tr m nt cha c gi tr kha >= n hoc


v tr nt con hin ti =1 (nt gc).
rocedure upheap(v:longint);
Var cha, con, x:longint;
Begin
Con:=v;x:=h[v].key;
While con>=2 do
Begin
Cha:=con div 2;
If h[cha].key>=x then beak;
H[con]:=H[cha];
Con:=cha;
End;
H[con]:=v;
End.
b) Downheap: Ngc li vi upheap, c th c gi tr kha ca phn t no y gim i th phi tin
hnh iu chnh li heap. u tin nt cha v tr cn thay i. Nu gi tr kha nt cha < gi tr
kha ln nht trong cc nt con th tin hnh i ch nt cha v nt con c gi tr kha ln nht
ny. Nt cha mi l nt con c. C tip tc nh th cho n khi gp 1 v tr m gi tr kha ca nt
cha>= gi tr kha ca nt con ln nht hoc l nt khng c nt con na. Cc bn c th tham
kho th tc sau y.
Procedure downheap(v:longint);
Var cha, con, x:longint;
Begin
Cha:=v;x:=h[v].key;
While cha*2<=n do
Begin
Con:=cha*2;
If (con<nheap)and(h[con].key<h[con+1].key) then inc(con);
If h[con].key<=x then break;
---------------------------------------------------------------------------------------------------------------------------180

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------H[cha]:=h[con];
Cha:=con;
End;
H[cha]:=v;
End.
Nu trong qu trnh x l, cc bn cn bit s hiu cc phn t th thm vo 1 mng sh na, lu
l khi no c s thay i v tr ca 1 nt th cng thay i gi tr ca mng sh theo m bo
sh[h[v]]:=v;
Khi cc bn c trong tay 2 th tc upheap v downheap th cc thao tc cn li c th quy v 2
th tc ny:
-Thm 1 phn t vo heap: Cho phn t ny nm v tr nheap+1 ri thc hin thao tc upheap.
-Ly 1 phn t ra khi heap( thng l ta cn ly phn t gc v y l phn t nh nht hoc
ln nht trong 1 on): Gn phn t cui vo phn t cn loi b, ng thi dec(nheap), sau coi
nh phn t ny b thay i gi tr, gi tr kha m tng ln th thc hin upheap cn khng th thc
hin downheap.
Sau khi ta ci t c cc th tc cn c ca 1 heap, ta s tm hiu ng dng ca n khi gii
cc bi ton trong tin hc. Nh ta thy, heap max hay heap min c th cho ta ly phn t ln nht
hoc phn t nh nht trong 1 on. V vy n rt hu dng trong cc bi ton m ta cn phi truy
vn cc phn t ln nht hoc cc phn t nh nht trn 1 on( chng hn nh cc bi ton QH
th ta thng cn tm nhng gi tr ny). Hn na, mi th tc ca heap c phc tp khng qu
0(logn) (iu ny cc bn c th t chng minh), v vy heap gip nhng bi ton loi ny c th
gii quyt n gin hn trong thi gian cho php.

ng i ngn nht

Cho 1 th c n nh, m cnh (1<=n,m<=10^5), tm di ng i ngn nht gia 2 nh s v t


ca th.

Thut ton:
Bi ny vi d liu nh(n<=5000) th cc bn dng thut ton Dijkstra tm ng i ngn nht
t nh s. Nhng vi n<=10^5 m thut ton Dijkstra c in c phc tp n^2 th khng kh thi,
vy ta phi tm cch ci tin.

---------------------------------------------------------------------------------------------------------------------------181

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Trong thut ton Dijkstra, mi ln ta cn tm 1 nh trong s cc nh cha c nh du sao cho


nh ny c gi tr ng i hin ti l nh nht. iu ny lm ta ngh n dng heap. Dng 1 heap
min lu ch s ca cc nh (gi tr ng i ngn nht hin ti lu trong mng d). Mi ln tm nh
min, ta li ly nh gc ra, khi cp nht nu c nh no c thay i gi tr th ta thc hin
upheap( hoc thm vo nu phn t ny cha c trong heap). thc hin cp nht mng d th nn
lu th bng danh sch lin kt hoc lu kiu Forward-star. phc tp thut ton l mlog(n).
Thut ton Dijkstra kt hp cu trc heap l 1 trong nhng thut ton thng gp nht vi cu trc
d liu quan trng bc nht ny.

Mt cht v Huffman Tree( HEAP1)


Mt ngi nng dn mun ct 1 thanh g c di L ca mnh thnh N ming , mi ming
c di l 1 s nguyn dng A[i] ( A[1] + A[2] + A[N] = L ) . Tuy nhin ct mt
ming g c di l X thnh 2 phn th ng ta s mt X tin . ng nng dn ny khng
gii tnh ton lm , v vy bn c yu cu lp trnh gip ng ta cho bit cn dnh t
nht bao nhiu tin th mi c th ct c tm g nh mong mun .
Lu : Kt qu c th vt longint ( trong Pascal ) v vt long ( trong C++ ) y nh .

Input
Dng 1 : 1 s nguyn dng T l s b test .
T nhm dng tip theo m t cc b test , mi nhm dng gm 2 dng :
Dng 1 : s nguyn dng N ( 1 N 20000 ) .
Dng 2 : N s nguyn dng A[1] ,, A[N] . ( 1 A[i] 50000 )

Output
Kt qu mi test ghi ra trn 1 dng , ghi ra 1 s nguyn dng duy nht l chi ph ti thiu
cn ct tm g .

Example
Input:
1
4
1234
Output:
19

u tin ct ming g thnh 2 phn c di 6 v 4 . Sau ct tip ming c di 6 -> 3 v 3 .


Ct 1 ming 3 thnh 2 phn c di 1 , 2 . Nh vy chi ph l 10 + 6 + 3 = 19.

Thut ton:
---------------------------------------------------------------------------------------------------------------------------182

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------u tin cho tt c cc phn di trn vo 1 heap min, thc hin vng lp n-1 ln nh sau: Ly 2
phn t u tin( tc l 2 phn t c gi tr nh nht trong heap hin ti) ra, sau thm 1 phn t
mi c gi tr = tng 2 phn t va ly ra cho vo heap. Nh th sau n-1 ln, heap ch cn 1 phn
t v gi tr ca phn t ny chnh l kt qu cn tm, phn chng minh xin nhng bn c. Mt
lu na l phi khai bo mng heap kiu int64 v kt qu c th vt qu longint.

KMIN

Cho 2 dy s nguyn A v B. Vi mi s A[i]thuc A v B[j] thuc B ngi ta tnh tng


n. Tt c cc tng ny sau khi c sp xp khng gim s to thnh dy C.
Nhim v ca bn l: Cho 2 dy A, B. Tm K s u tin trong dy C

Input
Dng u tin gm 3 s: M, N, K
M dng tip theo gm M s m t dy A
N dng tip theo gm N s m t dy B

Output
Gm K dng tng ng l K phn t u tin trong dy C

Example
Input:
446
1
2
3
4
2
3
4
5
Output:
3
4
4
5
5
5

Gii hn
1 M, N, K 50000
1 Ai, Bi 10

---------------------------------------------------------------------------------------------------------------------------183

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Thut ton:
Vi m,n<=50000 th ta khng th to 1 mng 50000^2 ri sp xp li c, v vy chng ta cn
nhng thut ton tinh t hn, 1 trong nhng thut ton n gin m hiu qu nht l dng heap.
u tin ra sp xp 2 mng A v B khng gim, d nhin phn t u tin chnh l A[1]+B[1], vn
l phn t th 2 l A[2]+B[1] hay A[1]+B[2], ta x l nh sau:
Trc ht ta to 1 heap min gm cc phn t A[1]+B[1], A[1]+B[2],A[1]+B[n], mi khi ly ra
phn t gc( tc l phn t c gi tr nh nht trong heap hin ti), gi s phn t l A[i]+B[j],
ta li y vo heap phn t mi l A[i+1]+B[j]( nu i=m th khng y thm phn t no vo
heap). C th cho n khi ta ly ra k phn t cn tm.
phc tp thut ton trong trng hp ln nht l 0(50000*log(50000)), c th chy trong thi
gian 1 s, b nh lu tr t l vi n.

Ball game
Hm qua AnhDQ mi mi c gi ca mnh i n mn g KFC (vn l s trng ca hai
ngi). Hai ngi quyt nh gi phn n Chicky (dnh cho tr em :d), va tit kim, m
cn c tng km mn chi ng nghnh c tn l "Bt g" :d Sau mt hi loay hoay,
AnhDQ pht hin ra rng tr chi ca bn tr con nc ngoi ny kh l ging vi tr chi
g ca tr con Vit Nam :d (tt nhin l hin i hn ^^). Sau AnhDQ quyt nh r
nng i xem phim MegaStar :"> trn ng gh qua khu StarBowl, cm trn tay mn
"Bt g", AnhDQ cht ny ra mt tr chi th v kt hp gia nhng qu bng bowling v
tr chi g dn gian, v chng quyt nh hai nhc Alice v Bob s l nhng v khch u
tin tham gia tr chi mi ny! Chng tm t tn cho tr chi l "Tr chi vi nhng tri
bng":
AnhDQ lm sn mt ci mng c N l xp lin nhau c nh s t 1..N v mt ng
rnh gip a cc qu bng vo cc l ny. ng rnh ny c thit k c bit nh sau:
- Ch c th nm bng vo t mt trong hai u ca ng rnh.
- Ti mt thi im ch c mt qu bng c nm vo ng rnh.
- Nu bng c nm vo t u no th ng rnh s a qu bng ti l trng gn u
nht.
- Thi gian a bng ti mt l bt k l khng ng k.
AnhDQ lm ra M qu bng c bit cho Alice v Bob chi, nhng qu bng ny c c
im nh sau:
- Chng c cng hnh dng, kch thc; vy nn c th ri vo bt k l no trn mng.
- Mi qu bng c mt xoy (c th ging hoc khc nhau); nu mt qu bng c
xoy l x th n s xoy trn ming l m n ri vo trong x pht trc khi ri hn xung
l.
---------------------------------------------------------------------------------------------------------------------------184

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Li ni v ci mng:
- Mi l trn mng c sc cha v hn.
- Mt l c gi l trng nu khng c qu bng no ang xoy trn ming l ; ti thi
im mt qu bng dng vic xoy v bt u ri vo l th l cng c coi l trng.
- Tr chi bt u thi im 0, Alice ng u rnh pha bn tri (gn l th nht) cn
Bob ng u rnh pha bn phi (gn l th N).
- Ti cc thi im khc nhau, Alice hoc Bob nm mt trong M qu bng vo rnh.
- Tr chi kt thc khi mt trong cc trng hp sau xy ra:
++ Alice v Bob nm ht M qu bng; khi hai nhc ha nhau; thi gian ca vn
chi l thi im m qu bng cui cng ngng xoy v ri xung l.
++ Alice hoc Bob nm mt qu bng vo rnh trong lc khng c l no trn mng cn
trng; khi nhc no nm qu bng s l ngi thua cuc :d; thi gian ca vn chi
l thi im m nhc thua cuc nm qu bng .
AnhDQ i chi v v thy hai nhc ang ngi th hn hn v nm bng :)) AnhDQ lin hi
hai nhc xem ai thng th hai nhc ci toe tot ni l.. khng nh @) B tay, AnhDQ lin
gng hi chng v din bin vn chi, hai nhc chanh che nhau k ra cc ln nm bng
ca mnh, c m t bi hai s u, v, trong u l thi im nm qu bng v v l xoy
ca qu bng .
Nhng chng k cng chng c th t g ht, cng lm AnhDQ au u hn, chng c ghi
li thng tin m chng k v nh cc VOJ-er(s) ti gii gip chng phn nh kt qu ca
vn chi xem sao. Chng rt hi hp v tr chi mi ny ca mnh.

D liu
- Dng u tin cha hai s N, M.
- M dng tip theo, mi dng bt u bi mt ch ci 'A' hoc 'B', tng ng vi li k ca
Alice hoc Bob; tip theo l hai s u, v tng ng.

Kt qu
- Nu vn chi kt thc vi kt qu ha, in ra nh sau:
++ Dng u tin in ra DRAW.
++ Dng th hai in ra Game lasts: T minute(s); trong T l thi gian ca vn chi.
++ M dng tip theo in ra "bin bn" ca vn chi; mi dng ghi Alice takes the hole:
H hoc Bob takes the hole: H tng ng vi mt lt nm bng ca Alice hoc Bob;
trong H l l trng tng ng m qu bng ca lt nm ri vo. Bin bn ny vit
ra theo th t thi gian.
- Nu vn chi kt thc vi mt nhc thua cuc, in ra nh sau:
++ Dng u tin in ra Alice loses at her turn: R nu Alice thua cuc, hoc in ra Bob
loses at his turn: R nu Bob thua cuc; vi ngha: nhc tng ng thua cuc sau ln
nm th R ca mnh.
++ Dng th hai in ra Game lasts: T minute(s); trong T l thi gian ca vn chi.

V d
---------------------------------------------------------------------------------------------------------------------------185

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------D liu:
22
A 1 10
B 2 20
Kt qu:
DRAW
Game lasts: 22 minute(s)
Alice takes the hole: 1
Bob takes the hole: 2
D liu:
12
A 1 10
B 2 20
Kt qu:
Bob loses at his turn: 1
Game lasts: 2 minute(s)

Gii hn
- N, M 105.
- u, v 109.

Thut ton:
u tin ta sp xp li th t thi gian ca cc cuc nm bng. Bi ny ta dng 3 heap vi
cc ngha nh sau: 1 heap min, 1 heap max lu ch s cc l cn trng. 1 heap qun l cc
ang c bng xoy trn, heap ny l 1 heap min vi gi tr kha l thi gian qu bng
ri xung l. u tin 2 heap min v max y( tt c cc cn trng). Cho 1 vng for qua
cc th t nm, n 1 lt ta phi lm 2 vic sau:
1: Loi b t heap qun l cc c bng nhng no c thi gian bng ri xung l
<=thi gian nm bng ca lt ny, sau thm vo heap min v heap max nhng tm
c, nhng ny ln lt c ly ra t gc ca heap ang xt.
2: Thc hin nm: Nu nm t bn tri, da vo heap min tm ra trng c ch s nh
nht, nm bn phi th ngc li. Khi tm c th ta tin hnh loi b khi 2 heap ny
phn t tm c( do n bt u c bng xoy pha trn) v thm vo heap kia 1 phn t
gm 2 thng tin, ch s ca l v thi gian bng ri xung l.
Nu n 1 lt nm m tt c cc u c bng th tr chi dng li. C 1 lu l ta cn
qun l s hiu ca cc trong 2 heap tin cho vic loi b.

---------------------------------------------------------------------------------------------------------------------------186

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

INTERVAL TREE
Bi vit ny mun gii thiu vi cc bn 1 cng c rt hu dng c s dng nhiu trong cc bi
ton trn dy s, hoc c quy v cc bi ton x l trn dy s, c bit l cc bi ton c nhiu
cng vic cn x l v nhiu truy vn xen k nhau. Cng c c ni n y chnh l
INTERVAL TREE( hay cn gi l segmet tree), tc l cy on.
Interval tree l cy on, vy th n l 1 cy, v cc nt ca n th lu thng tin ca 1 on xc
nh. Interval tree l 1 cy nh phn m mi nt khng phi l l u c ng 2 nt con. Nu nt A
lu thng tin ca on t i..j th 2 nt con ca n, A1 v A2, ln lt lu thng tin ca cc on
i..m v m+1..j, vi m=(i+j) div 2 l phn t gia ca on.
V y l cy nh phn, li c y 2 nt con, n gin th ta c th biu din cy ch = 1
mng 1 chiu, vi ngha nh sau:
Nt 1 l nt gc, nt k( nu khng phi l nt l) th c 2 con l cc nt k*2( nt con tri) v
k*2+1(nt con phi).
Nt 1 s lu thng tin ca on 1..n ( vi n l di dy s).
Vy nt 2 s lu thng tin on 1..(n+1) div 2 v nt 3 s lu thng tin on (n+1) div 2+1..n.
Tng t theo nh ngha th ta c th bit c nt th k s lu thng tin ca 1 on xc nh no
y. Sau y l hnh nh 1 cy INTERVAL TREE vi n=7:

C 1 vn l vi 1 on n phn t, th mng biu din cy s c bao nhiu phn t l , ngi ta


chng minh c cy interval tree ch cn ti a l 4*n-5 phn t, v vy khi khai bo 1 cy
interval tree, ta thng khai bo l 1 mng 1..4*n.
Trn interval tree c 2 thao tc cn x l, 1 l cp nht thay i cho on i..j v 2 l ly thng tin
cn c ca on i..j, nhng mi nt ca inteval tree ch lu nhng on xc nh, v vy 2 thao tc
ny c th cn tc ng n nhiu nt.
---------------------------------------------------------------------------------------------------------------------------187

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------ d hnh dung, ta ly 1 v d c th:


Cho 1 dy n phn t (n<=10^5), ban u mi phn t c gi tr 0. C q<=10^5 truy vn, mi truy
vn l 1 trong 2 thao tc sau:1 l gn gi tr v(v>0) cho phn t v tr i, 2 l tm gi tr ln nht
trong on i..j bt k.
Cch n gin nht l ta c 1 mng A[1..100000], vi thao tc 1 th gn A[i]=v, thao tc 2 th cho
1 vng for t i n j tm max, nhng cch ny trong trng hp c nhiu truy vn th 2 th s
chy rt lu, trng hp xu nht l n*q. D thy l cch ny khng th chy trong thi gian cho
php.
Cch dng interval tree nh sau:
Vi truy vn 1, ta s cp nht l kt qu max cho tt c cc on m cha phn t th i, nhng
on cn li th khng lm g c v khng nh hng n.
Vi truy vn 2, ta cn tm kt qu max trong s tt c nhng on nm gn trong i..j, tc l nhng
on c im u >=i v im cui <=j.
Gi T[1..400000] of longint l mng lu tr cy interval tree. T[i] l gi tr ln nht trong on
m nt k lu gi thng tin.
Khi gp truy vn 1, ta lm nh trong th tc sau:
procedure truyvan1(k,l,r,i:longint);
var m:longint;
begin
1.if (l<i)or(r>i) then exit;
2 if (l=r) then
begin
T[k]:=v;exit;
end;
3.m:=(l+r) div 2;
4.truyvan1(k*2,l,m,i);
5.truyvan1(k*2+1,m+1,r,i);
6.T[k]:=max(T[k*2],T[k*2+1]);
end;
Ta s phn tch th tc truyvan1:
---------------------------------------------------------------------------------------------------------------------------188

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------Th tc ny c cc tham s k,l,r,i vi ngha: l v r l im u v im cui ca on m nt k


lu tr thng tin, i chnh l phn t cn gn gi tr v.-Trong th tc c 1 bin m xc nh phn t
nm gia on l..r.
-Cu lnh 1 c ngha l ta s b qua khng lm g vi cc on khng cha phn t th i( l>i
hoc r<i)
-Cu lnh 2 tc l, khi n nt th k biu din on i..i th ta ch cn gn T[k]=v, v tt nhin sau
khi gn, v s l gi tr ln nht ca on i..i.
-Cu lnh 3 xc nh phn t nm gia l..r.
-Cu lnh 4 l 1 li gi quy, cc tham s th d dng nhn ra, cu lnh ny gi n nt con
tri ca nt k, tc nt k*2 ta cp nht cho nt .
-Cu lnh 5 tng t cu lnh 4 nhng l gi cp nht cho nt con phi.
-Cu lnh 6: Sau khi cp nht cho 2 nt con tri v phi th xc nh c gi tr ln nht t
l..m v m+1..r, vy th xc nh gi tr ln nht ca on l..r ta ch cn ly gi tr ln nht ca 2
on kia=> T[k]:=max(T[k*2],T[k*2+1]).
Khi gi th tc truy vn 1, ta s gi t nt gc, tc l gi truyvan1(1,1,n,i);
Vy l xong yu cu th nht, nhng ci ta cn xem chng trnh c hot ng tt hay khng
li l kt qu ca yu cu th 2, v vy th tc truyvan1 l gip th tc truyvan2 sau y tm
c kt qu vi on i..j bt k.
Procedure truyvan2(k,l,r,i,j:longint);
var m:longint;
begin
1.if (l>j)or(r<i) then exit;
2.if (i<=l)and(j>=r) then
begin
res:=max(res,T[k]);exit;
end;
3:m:=(l+r) div 2;
4:truyvan2(k*2,l,m,i,j);
5:truyvan2(k*2+1,m+1,r,i,j);
end;
---------------------------------------------------------------------------------------------------------------------------189

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Phn tch:Th tc truy vn 2 ny c cc tham s vi ngha nh th tc 1, c thm tham s j v cn


ly kt qu trn on i..j.
Mi on l..r s c 3 kh nng vi on i..j.
a: l..r khng giao i..j, trng hp ny b qua khng lm g c( cu lnh 1).
b: l..r nm gn trong i..j, trng hp ny th ta ch cn ti u kt qu khi so snh vi T[k] v: Ta
xc nh c phn t ln nht trong on l..r nh th tc 1, v do l..r nm gn trong i..j nn khng
cn i vo 2 nt con ca n.(cu lnh 2).
c: l..r khng nm gn trong i..j nhng c 1 phn giao vi i..j, trng hp ny th ta s i vo 2 nt
con ca n ly kt qu, n khi no gp phi 2 trng hp u.(cu lnh 4 v 5).
Suy ngh k s thy th tc truy vn 2 khng b st cng nh tnh tha phn t no ngoi on i..j.
Khi gi th tc truyvan2 ta cng gi t nt gc truyvan2(1,1,n,i,j). Sau th tc thi in ra res l kt
qu cn tm.
Ngi ta cng chng minh c rng, phc tp ca mi th tc truyvan1 v truyvan2 khng
qu log(n). V vy thut ton dng interval tree cho bi ny c phc tp khng qu
q*log(n)=10^5*log(10^5), c th chy trong thi gian cho php.
y l 1 trong nhng v d c bn nht v interval tree, hi vng cc bn c th hiu v ci t
n.Trong khi nghin cu v cc bi tp sau y, ta s tm hiu 1 vi kiu s dng interval tree khc.
y cng l 1 trong nhng cu trc d liu thng c s dng trong cc k thi Olympic Tin hc
trn th gii.
.

Xp hng(NKLINEUP)
Hng ngy khi ly sa, N con b ca bc John (1 N 50000) lun xp hng theo th t khng
i. Mt hm bc John quyt nh t chc mt tr chi cho mt s con b. n gin, bc John
s chn ra mt on lin tip cc con b tham d tr chi. Tuy nhin tr chi din ra vui v,
cc con b phi khng qu chnh lch v chiu cao.
Bc John chun b mt danh sch gm Q (1 Q 200000) on cc con b v chiu cao ca
chng (trong phm vi [1, 1000000]). Vi mi on, bc John mun xc nh chnh lch chiu cao
gia con b thp nht v cao nht. Bn hy gip bc John thc hin cng vic ny!
D liu

Dng u tin cha 2 s nguyn N v Q.

Dng th i trong s N dng sau cha 1 s nguyn duy nht, l cao ca con b th i.
---------------------------------------------------------------------------------------------------------------------------190

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------

Dng th i trong s Q trong tip theo cha 2 s nguyn A, B (1 A B N), cho bit on cc
Con b t A n B.
Kt qa
Gm Q dng, mi dng cha 1 s nguyn, l chnh lch chiu cao gia con b thp nht v cao
nht thuc on tng ng.
V d
D liu:
63
1
7
3
4
2
5
15
46
22

Kt qa
6
3
0
Thut ton:
y l 1 bi ton x l trn dy s v cn truy cp n nhng on A..B bt k trong dy, v vy
interval tree l 1 trong nhng la chn khng ti. Bi ny chng ta c 1 iu may mn l khng cn
phi cp nht li chiu cao ca cc con b, v vy thng tin trong cy interval tree l c nh v ta
s to cy interval tree da trn mng chiu cao ca cc con b. Mi on th ta cn in ra chnh
lch cao con b cao nht v con b thp nht, v vy chng ta cn tm c gi tr ln nht v
gi tr nh nht trong cc phn t t A n B. Ta c th dng 1 cy interval tree vi mi nt lu 2
thng tin, gi tr ln nht v gi tr nh nht trong on m n biu din, cng c th dng 2 cy
---------------------------------------------------------------------------------------------------------------------------191

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------interval tree, 1 cy dng lu gi tr ln nht, cy cn li l gi tr nh nht. y ta gi 2 cy


ny l maxd v mindPhn to ta c th lm rt n gin da trn tng sau:
Nu l=r th Maxd[k]=Mind[k]=A[l];
Nu khng th Maxd[k]=max(Maxd[k*2],Maxd[k*2+1]) v
Mind[k]:=min(Mind[k*2],Mind[k*2+1]);
Khi mun tm kt qu th da vo mng Maxd tm GTLN trn on A..B, dng mng Mind
tm GTNN trn on A..B, vic ny lm tng t nh trong v d ca bi vit gii thiu v Interval
tree pha trn. Ch l khi tm max hay tm min ta u phi i n nhng nt ging nhau( do i
n nhng nt no th ch ph thuc A v B) nn mi ln tm ch cn gi chung 1 th tc.

Gi tr ln nht(QMAX)
Cho mt dy gm n phn t c gi tr ban u bng 0.
Cho m php bin i, mi php c dng (u, v, k): tng mi phn t t v tr u n v tr v ln k n
v.
Cho q cu hi, mi cu c dng (u, v): cho bit phn t c gi tr ln nht thuc on [u, v]
Gii hn

n, m, q <= 50000

k>0

Gi tr ca mt phn t lun khng vt qu 231-1


Input

Dng 1: n, m

m dng tip theo, mi dng cha u, v, k cho bit mt php bin i

Dng th m+2: p

p dng tip theo, mi dng cha u, v cho bit mt php bin i


Output

Gm p dng cha kt qu tng ng cho tng cu hi.


Example
Input:
---------------------------------------------------------------------------------------------------------------------------192

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------62
132
463
1
34
Output:
3

Thut ton:
Bi ny th ta c m php bin i tng dy trc ri mi yu cu tm gi tr ln nht trong cc on
ch khng phi xen k nhau, v vy ta s tm cch xy dng dy s sau m php bin i. Khi c
c mng gi tr sau m php bin i, cng vic cn li ca ta l to 1 cy interval tree vi mi
nt lu gi tr ln nht ca on m n qun l trong khi cc phn t ca mng xc nh, vi mi
truy vn tm GTLN th ta c th lm khng my kh khn.
Vn by gi l xy dng dy s sau m php bin i.
Ta c th s dng 1 k thut n gin nhng rt hiu qu nh sau.
Gi s mng ta cn c l mng A[0..n+1], lc u A[i]=0 vi mi i.
Mi yu cu u,v,k tc l tng cc phn t t v tr u n v tr v ln k n v, ta lm nh sau:
A[u]:=A[u]+k;A[v+1]:=A[v+1]-k;
Sau khi c xong m php bin i v lm nh trn, cui cng l tnh mng A:
For i:=1 to n do
A[i]:=A[i]+A[i-1];
Cc bn c th t chng minh tnh ng n hay c th vit on chng trnh ny ra v kim
nghim li. Nh vy ta c th gii quyt trn vn bi ton.

Gi tr ln nht ver2(QMAX2)
Ging bi "Gi tr ln nht" trn.
---------------------------------------------------------------------------------------------------------------------------193

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Input
- n: s phn t ca dy (n <= 50000).
- m: s lng bin i v cu hi (m <= 100000).
+) bin i c dng: 0 x y value
+) cu hi c dng : 1 x y.
Output
Ghi ra tr li cho ln lt tng cu hi.
Example
Input:
63
0133
0464
116

Output:
4
Thut ton:
Bi ny khc bi QMAX trn l cc php bin i v cc cu hi xen k nhau, v vy ta khng
th to trc 1 cy interval c. gii quyt bi ton ny, ta cn phi thc hin cp nht cng
nh ly kt qu xen k nhau. Nhng y th cc cng vic ny khng h n gin.
Va c c kt qu, ta cng cn phi m bo 2 cng vic ny khng c c phc tp vt
qu log(n).
lm bi ny, ta gi F[k] l gi tr ln nht trong on m nt k qun l, trong lc cp nht, mun
m bo th tc ny khng vt qu log(n) th khi i n 1 nt m nm gn trong on x..y th ta
khng c i vo cc nt con ca n na( nu khng s i n tt c cc on c trong on x..y
v phc tp t l vi n). Nu nh vy, ta cn c 1 mng ph T lu li gi tr cn tng ln cho
tt c cc phn t ca on ny, khi ta truy vn n 1 nt k ng thi ta tng T[k] ln cho T[k*2],
T[k*2+1] v F[k]. (do T[k] l gi tr cn tng ln cho tt c nhng phn t ca on nt k qun l,
nn cc nt con ca n cng phi tng ln T[k]). Sau khi cp nht cho mng F v cc nt con, ta
gn li T[k]=0 trnh trng hp cng li nhiu ln. Nu n on nm gn trong on x..y
th ta tng mi bin F[k], T[k*2], T[k*2+1] ln v. Khi mun ly kt qu, ta vn lm nh bi
QMAX, nhng n mi nt con, ta vn cn thc hin tng gi tr T[k] cho T[k*2], T[k*2+1] v
F[k] ly c kt qu. Tc l khi n c 1 nt no ( trong bt k thao tc no, cp nht hay
---------------------------------------------------------------------------------------------------------------------------194

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------ly kt qu) th u thc hin nh vy. iu ny m bo l ta c th ly c gi tr chnh xc,


y l kiu cy IT c thng tin truyn t nt cha xung nt con. Cc bn c th tham kho chng
trnh thy r hn.

Bt n(LITES)
Bc John gi cho n b thng minh bng cch chng chi cc chi pht trin tr tu. Mt
trong cc tr chi l cc ngn n trong chung. Mi trong s N (2 <= N <= 100,000) con b c
nh s t 1..N c treo mt ngn n mu.
Vo u bui ti, tt c n u tt. n b iu khin cc ngn n bng N cng tc; bm cng
tc i i trng thi ca n i t tt sang bt hoc ngc li.
n b c v thc thi mt danh sch gm M (1 <= M <= 100,000) thao tc m t bi mt trong
hai s nguyn (0 <= thao tc <= 1).
Thao tc th nht (m t bi s 0) theo sau bi hai s nguyn S_i v E_i (1 <= S_i <= E_i <= N)
cho bit cng tc u v cng tc cui. n b s bm mi cng tc t S_i n E_i ng mt ln.
Thao tc th hai (m t bi s 1) yu cu n b n xem c bao nhiu ngn n gia S_i v E_i (1
<= S_i <= E_i <= N) ang bt. Hy gip bc John m bo rng n b tr li ng bng cch x
l danh sch v tr v cc kt qu ng.
D liu
* Dng 1: Hai s nguyn cch nhau bi khong trng: N v M
* Dng 2..M+1: Mi dng cha mt thao tc vi ba s nguyn cch nhau bi khong trng: thao
tc, S_i, v E_i
Kt qu
* Dng 1..s truy vn: Vi mi truy vn, in ra kt qu l mt s nguyn trn mt dng.
V d
D liu:
45
012
024
123
024
114
Kt qu:
1
2

---------------------------------------------------------------------------------------------------------------------------195

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Thut ton:
Ta c th s dng INTERVAL TREE lm nh sau:
Bi ny c t tng kh ging vi bi QMAX2, thng tin c truyn t nt cha xung nt con
bt c khi no c th. Ta c 1 mng B kiu logic, B[i]=true ngha l nhng n trong on m nt
th i qun l cn thay i trng thi. Khi n 1 nt, nu b[i]=true th cn thay i trng thi ca
B[i*2] v B[i*2+1] ng thi gn li B[i]=false( thc hin thay i ri th phi gn li false),
nu gi mng sl[i] l s lng n ang bt trong on do nt i qun l th nu gp b[i]=true phi
tin hnh sa sl[i], sl[i] hin ti l gi tr ca s n ang tt( do khi thay i trng thi th bt
chuyn thng tt). Vy ch cn 1 php tr l c th tnh c s lng n ang bt trong on.
Cc cng vic ny cn lm u c 2 th tc cp nht v ly kt qu.
Khi thc hin thao tc cp nht kt qu cho on x..y th nu gp nhng on nm gn trong x..y
th ta li thc hin thay i trng thi nh trn. Phn ly kt qu th khng kh, cc bn ch cn nh
l trong th tc ly kt qu cng cn thc hin truyn thng tin t nt cha cho nt con( bt c khi
no c th).

A Marble Game(MARBLE)
Trong nhng ngy h rnh ri, ktuan thng chi bn bi trn mt bng hnh vung gm NxN
vung nh. Tr chi c thc hin nh sau:
Ban u, ktuan t K vt cn vo K vung ca bng.
Sau , ktuan thc hin ln lt Q lt chi. lt chi th i, ktuan ln lt bn Di vin bi t ngoi

bng vo mt trong 4 ng bin ca bng. Kch thc ca mi vin bi ng bng kch thc ca
mt vung nh. Vin bi s i qua cc thuc cng mt hng / ct cho n khi i ra ngoi bng
hoc gp mt vt cn hay vin bi khc. Nu c vt cn hay vin bi khc ngay u tin th vin
bi khng c a vo bng.

mi lt bn, ktuan ghi li tng s m cc vin bi i qua.

Bn hy vit chng trnh m phng li tr chi v vi mi lt bn, in ra tng s m cc vin bi


ca lt bn i qua.
D liu
Dng u ghi 3 s N, K, Q.
K dng sau, mi dng ghi mt cp s (u,v) th hin to (dng, ct) ca mt vt cn.

---------------------------------------------------------------------------------------------------------------------------196

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------ Q dng sau, mi dng ghi 4 gi tr c, D, u, v. K t c c th l 'L', 'R', 'T', hoc 'B' cho bit vin bi

c a vo t bin tri, phi, trn hoc di ca bng. (u,v) th hin to u tin m vin bi
c a vo. y phi l mt nm trn bin ca bng ng vi k t c. D l s lng vin bi s
bn lt chi ny.
Kt qu

Vi mi lt chi, in ra tng s m cc vin bi ca lt i qua

V d
D liu
513
33

L231
T111
B555
Kt qu
3
2
25
Gii thch
Vin bi u tin ca lt 1 s i qua 2 (3,1) v (3,2) trc ghi gp vt cn (3,3)
Vin bi tip theo ca lt 1 s i qua (3,1) trc khi gp vin bi (3,2). Vy tng s b i qua

lt ny l 3.

Vin bi u tin ca lt 2 s i qua 2 (1,1) v (2,1) trc khi gp vin bi (3,1).


Mi vin bi ca lt cui cng u khng gp vt cn v s i ra ngoi bng sau khi i qua 5 .

Gii hn
N 50000, K 10, Q 100000
Trong 1/3 s test, N v Q khng vt qu 1000.
Thi gian: 3-10s/test.

Thut ton:
-Vi mi ln bn, ta cn phi tm c chng ngi vt u tin. Bi ny cng c t tng tng
t bi QMAX2, thng tin truyn t nt cha xung nt con, nhng 1 iu c bit l chng ta ch
cn thng tin ca nhng on 1 phn t( do bn ch trn 1 ng thng). V vy thng tin ch c
truyn xung m khng truyn ln. Thao tc tm chng ngi vt u tin trn ng bn th khng
c g kh khn.( c i mi cho n nt qun l hng/ct hin ti). Phn cn li l phi cp nht sau

---------------------------------------------------------------------------------------------------------------------------197

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------khi bn, thao tc ny lm nh QMAX2, phi truyn thng tin cho cc nt con bt c khi no c th.
Vy ta cn 4 cy INTERVAL TREE, H1,H2,C1,C2 vi ngha:
H1: Qun l theo hng, gi s nt k qun l t hng i n hng j th H1[k] l ch s ct nh nht
trong cc ch s ct c chng ngi vt t hng i n hng j. H1 dng xc nh chng ngi
vt u tin trong thao tc bn L.
H2: Tng t H1 nhng thay bng ch s ln nht. H2 dng xc nh chng ngi vt u tin
trong thao tc bn R.
C1: Tng t H1 nhng C1 qun l cc ct v C1[k] l ch s hng nh nht c chng ngi vt t
ct i n ct j. C1 dng xc nh chng ngi vt u tin trong thao tc bn T.
C2: Tng t C1 nhng l ch s hng ln nht. C2 dng xc nh chng ngi vt u tin
trong thao tc bn B.
Cc bn cng c th thay 4 cy bng 2 cy(H v C) nhng mi cy c 2 thng tin l ch s nh nht
v ln nht ca ct/hng.
Mi khi c thao tc bn L v R, sau khi xc nh c hng i s thm nhng vin bi t v tr no
n v tr no th thc hin cp nht trn 2 mng H1, H2.Tng t vi 2 thao tc cn lai, lc ny ta
cp nht trn 2 mng C1, C2.Cui cng xin lu cc bn nhng trng hp m khng c chng
ngi vt trn hng hoc ct, khi ta khng cn cp nht, v kt qu chnh l d*n. Cc bn cng
cn ch nhng trng hp m s a vo nhiu hn s ti a c th a vo hng/ct, lc
ny ta ch kt qu cho nhng a c vo bng thi( 1 s b bn ra ngay khi gp chng ngi
vt bin). Bi ny cc bn nn khai bo kt qu kiu int64 trnh b trn s.

---------------------------------------------------------------------------------------------------------------------------198

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

BINARY INDEX TREE( BIT)


C 1 loi cu trc d liu thng c s dng thay th cho INTERVAL TREE trong 1 vi
trng hp, chnh l BINARY INDEX TREE( cy ch s nh phn), thng vit tt l cy BIT.
Tn ca n l cy ch s nh phn, v vy m ta lin tng ngay n s biu din cc s trong my
tnh bng h nh phn, gm cc bt 0 v 1.
Cy BIT c nh ngha 1 ch quy nh sau:
-Nu i l th cha[i]=i+1;
-Nu i chn l th cha[i]:=cha[i div 2]*2;
Sau y l hnh nh ca 1 cy BIT.

Nhn vo nh ngha ny ta c th thy, cha[i] l c nh, ph thuc trc tip vo gi tr ca i. Mi


cy BIT ch cn 1 mng 1 chiu 0(N) lu tr, t hn INTERVAL TREE khong 4 ln.
Ta cn thc hin 2 thao tc c bn sau t nt i.
1: Tnh cha[i]. nh ngha quy l nh vy, nhng d hnh dung, cc bn c th tng tng,
cha[i] s c tnh bng cch thay s 0 trc nhm nhng s 1 k nhau phi nht bng s 1,
ng thi thay nhm nhng s 1 k nhau ny thnh nhm cc s 0.
VD: cha[5]=6 v 5=101, thay s 0 trc s 1 phi nht =1, ng thi s 1 phi nht tr thnh s 0.
Vy ta c 110=6.
---------------------------------------------------------------------------------------------------------------------------199

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Cha[38]=40 v 38=100110, sau khi thc hin thay nh trn, ta c dy bit lc ny l


101000=40.
Tng t nh th ta c cha[6]=8(110->1000).Vn l lm sao thc hin thao tc ny
hiu qu nht, nu lm nh thng thng th ta phi mt log(i) trong mi thao tc tnh cha[i],
nhng ta c th s dng 1 s cng thc ton hc c chng minh. 1 cng thc rt n gin,
hiu qu v d nh thng c s dng l: cha[i]=i+i and(-i);
2: Truy xut n nt j l nt ln nht nh hn i nhng khng phi l nt con chu ca i.
truy xut n j, ta thc hin thay bt 1 phi nht ca i bng bt 0. VD nh nu i=6=110 th
j=100=4. iu ny ta cng c th lm ch bng 1 php tnh. y cng l 1 cng thc rt n gin
v hiu qu: J=i-i and(-i).
Ta thy mi truy xut ta ch s dng cc php ton bit hoc l php +,-. Chnh v th m cy BIT
hot ng rt nhanh.
By gi ta s tm hiu vai tr ca 2 thao tc trn. Trong cy BIT th thng tin c lu tr 1 nt
l ca n v tt c cc nt con. V vy thao tc u tin, truy xut n cha[i] l cp nht thng
tin.
Nh th th thao tc th 2 chc chn l dng ly thng tin. Nhng thng tin c ly trong cy
BIT l thng tin t 1 n i, ch khng phi ly trn on i..j bt k. Mi ln truy xut n nt j, ta
li tng hp nhng thng tin cn thit. C th cho n khi nt j ta tnh c =0.
cc bn d hnh dung, ta s xt bi ton sau y:
Cho 1 dy n phn t, thc hin 2 thao tc sau.
1: Gn gi tr v cho phn t v tr i.(1<=i<=n).
2: Tnh tng t a[i] n a[j] bt k (1<=i<=j<=n).
Gii hn:
N<=100000;
S lng thao tc: M<=100000.
Lc u coi nh cc phn t c gi tr=0.

Hng dn:
Nu lm theo cch thng thng, d dng nhn ra phc tp thut ton trong trng hp xu nht
l 0(n*m), khng th thc hin trong thi gian cho php.
By gi ta s tm hiu cch s dng cy BIT vo cho bi ny.
Gi T l mng cha cy BIT, lu thng tin, A l mng gi tr cc phn t.
---------------------------------------------------------------------------------------------------------------------------200

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------- Vi thao tc 1. Gi s gi tr hin ti ca a[i] l u th ta coi nh thao tc ny tng a[i] ln v-u. Khi
cp nht ta phi cp nht cho nt i v tt c cc t tin ca i, cho n khi vt qu n. Th tc
update nh sau:
Procedure update(i,v:longint);
Begin
While i<=n do
Begin
T[i]:=T[i]+v-a[i];
I:=i+i and(-i);
End;
End;
- Vi thao tc th 2, do cy BIT ch c th ly thng tin ca on 1..i, nn tnh tng ca a[i] n
a[j], ta s tnh tng t 1 n j, sau tr i tng t 1 n i-1. Sau y l th tc tnh tng t 1
n v tr i bt k.
Procedure getsum(i:longint);
Begin
Sum:=0;
While i>0 do
Begin
Sum:=sum+T[i];
I:=i- i and(-i);
End;
End;
Vy l ta c trong tay 2 th tc chnh, phn cn li cc bn c th d dng ci t. phc tp
thut ton l 0(m*log(n)).Qua y ta thy cy BIT rt d ci t, cc th tc nhn rt sng sa,
nhng cng thc tnh cng d nh, v vy m n rt hay c dng trong nhng trng hp c th
thay th cho INTERVAL TREE. Ta cng d dng nhn thy, nhng bi no lm c bng cy
BIT th cng lm c = INTERVAL TREE, nhng iu ngc li th khng ng. V vy phi
cn nhc tht k trc khi cc bn nh la chn 1 trong 2 kiu cu trc d liu ny.

---------------------------------------------------------------------------------------------------------------------------201

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Coder Rating(CRATE)
Cho danh sch N lp trnh vin (1 N 300000), nh s ln lt t 1 n N. Mi ngi
u tham gia c hai gii thi u: Gii THPT v gii M rng. Vi mi lp trnh vin, bn
s c cung cp im s ca gii M rng Ai v im s ca gii THPT Hi (Cc im s
u l s nguyn khng m v khng vt qu 100000). Lp trnh vin i c coi l gii
hn lp trnh vin j khi v ch khi c 2 im s ca lp trnh vin i u ln hn hoc bng
im s tng ng ca lp trnh vin j, trong c t nht 1 im s phi ln hn. Hy tnh
xem vi mi lp trnh vin i th c bao nhiu lp trnh vin m i gii hn.

Input
Dng u tin cha s nguyn N.
N dng tip theo, dng th i+1 cha 2 s nguyn Ai v Hi.

Output
Dng i cha s lng lp trnh vin m lp trnh vin i gii hn.

Example
Input:
8
1798 1832
862 700
1075 1089
1568 1557
2575 1984
1033 950
1656 1649
1014 1473
Output:
6
0
2
4
7
1
5
1

Thut ton:
Bi ny chng ta c th s dng cy BIT gii quyt nh sau:
-Sp xp c mng A v mng H theo chiu tng dn ca mng H.( tc l khi so snh th ch so snh
trn mng A nhng khi i ch th phi i ch c 2 mng m bo A[i] v H[i] lun l im
ca cng 1 ngi). Nu H[i] =H[j] th sp tng theo A[i] v A[j].
---------------------------------------------------------------------------------------------------------------------------202

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------Nhng lp trnh vin no c cng s im ca c 2 mn th ta ch ly 1 ln, tc l ch ly i din


xt, nhng ngi cng s im khc th c kt qu bng kt qu ca i din( do yu cu lp
trnh vin i gii hn lp trnh vin j l phi c t nht 1 mn c im cao hn). Khi ly i din, ta
phi c thm 1 mng D m s lp trnh vin c s im = s im i din ny. Sau khi thc
hin xong, bi ton ca chng ta by gi ch l m s lp trnh vin j t v tr 1 n i-1 c
A[j]<=A[i].( Do B[j]<=B[i] v A[j]<=A[i], hn na khng th xy ra ng thi 2 du =, v vy m
lp trnh vin i s gii hn lp trnh vin j).
Cc bn dng cy BIT cp nht cng nh ly kt qu khng my kh khn. Sau khi ly c kt
qu hin thi, cc bn phi a v kt qu bi ton yu cu, tc l phi a ra theo th t t 1 n
n( do khi sp chng ta thay i th t ca cc lp trnh vin, chng trnh cn dng 1 mng v
vi ngha v[i] l v tr lc u ca lp trnh vin th i, mng v cng c i ch trong qu trnh
sp xp).

Dy nghch th di K(KINV)
Cho dy N s nguyn dng A[1] , A[N] l mt hon v ca 1 , 2 , 3 , N .
Mt dy nghch th di k l 1 dy A[j1] > A[j2] > A[j3] > A[jk] vi j1 < j2 < j3 <
jk . Hy m xem c tt c bao nhiu dy nghch th di k .

Input
Dng 1 : 2 s nguyn dng N v k ( 2 N 10000 , 2 k 10 ) .
Dng 2 : N s nguyn dng A[1] A[N] .

Output
Gi s T l s lng dy nghch th c di k , hy ghi ra T mod 10^9 .

Example
Input:
32
321
Output:
3

Thut ton:
Bi ny c th gii quyt = quy hoch ng kt hp s dng cu trc d liu, y ta s dng cy
BIT. Gi F[i,j] l s lng dy nghch th di i v kt thc v tr j. Vy F[i,j] s c tnh t
cc F[i-1,j1] vi j1 t 1 n j-1 tha mn a[j1]>a[j]. Khi tnh F[i,j] th lm tng t NKINV, nhng
lc cp nht th khng phi l cng thm 1 m cng thm F[i,j].
Kt qu l tng ca cc F[k,i] vi i t 1 n n.
---------------------------------------------------------------------------------------------------------------------------203

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Dy nghch th( NKINV)


Cho mt dy s a1.. aN. Mt nghch th l mt cp s u, v sao cho u < v v au > av. Nhim
v ca bn l m s nghch th.

D liu
Dng u ghi s nguyn dng N.
N dng sau mi dng ghi mt s ai ( 1 i N ).

Kt qa
Ghi trn mt dng s M duy nht l s nghch th.

Gii hn
1 N 60000
1 ai 60000

V d
D liu:
3
3
1
2
Kt qa
2

Thut ton:
Bi ny cc bn c th s dng INTERVAL TREE hoc BINARY INDEX TREE gii quyt
u c, y chng ta tm hiu cch s dng cy BIT.
n 1 v tr i no , ta cn tnh c c bao nhiu v tr j thuc on t i+1 n n m a[j]<a[i].
Cho 1 vng for downto t n v 1, n mi v tr i , u tin ta tnh s v tr bng cch ly thng tin
vi nt ban u l nt th a[i]-1( do ta tm tt c nhng v tr c a[j]<a[i]), cp nht gim dn v 0,
n mi nt li cng vo kt qu gi tr nt . Khi cp nht, ta cp nht vi nt ban u l nt
a[i], tin hnh cp nht n khi no qu gi tr max trong dy( y c th ly max=60000 cng
c), ti mi nt ta cng thm 1 vo gi tr nt .
Bi ny cc bn cng c th va c va x l, vi mi v tr i, tnh s v tr j t 1 n i-1 c
a[j]>a[i]. lm iu ny, vi mi v tr i, cc bn phi lm ngc vi cch u tin, tc l khi ly
kt qu th nt ban u l a[i]+1 v ta truy vn n cha ca n, n khi qu gi tr max, cn khi cp
nht th nt ban u l a[i] v cp nht gim dn v 0.
---------------------------------------------------------------------------------------------------------------------------204

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------Trong c 2 trng hp th b nh 0(60000) v phc tp thut ton l khong 0(n*log(60000))

NKBOBILE
Cc trm di ng th h 4 Tampere hot ng nh sau. C khu vc c chia thnh cc
vung. Cc vung to thnh mt bng SxS vi cc dng v ct nh s t 0 n S-1.
Mi vung cha mt trm di ng. S in thoi di ng hot ng trong mt vung
c th thay i v in thoi c th chuyn sang vung khc hoc thay i trng thi
bt/tt. Khi c thay i, mi trm di ng s thng bo cho trung tm. Ti mt s thi
im, trung tm cn truy vn tng s in thoi ang hot ng trong mt vng din tch
hnh ch nht no .
Hy gip trung tm nhn cc thng bo t trm v tr li cc truy vn.

D liu
Gm nhiu dng, mi dng cha cc ch th cho chng trnh. C 3 loi ch th 0, 1, 2, 3
nhn cc tham s v thc hin cc nhim v tng ng nh sau:

Ch th Tham s ngha
0

Khi to bng SxS cha ton b s 0. Ch th ny ch c cho mt ln duy nht u chng trnh.

XYA

Cng A v s in thoi hot ng vung (X, Y). A c th m hoc dng.

LBRT

Truy vn tng s in thoi hot ng cc vung (X, Y) vi L X R, B Y T

Kt thc chng trnh. Ch th ny ch c cho mt ln duy nht cui chng trnh.


Gi tr ca mt lun khng m ti mi thi im. Cc ch s bt u t 0, ngha l vi
mt bng 4x4, ta c 0 X 3, 0 Y 3.

Kt qa
Vi mi ch th loi 2, in ra mt dng gm mt s nguyn dng tr li cho truy vn tng
ng.

Gii hn
1

S 1024

Gi tr
-32768
S

ca mt ti mi thi im lun thuc phm vi [0, 32767].


A 32767

ch th thuc phm vi [3, 60002].

Tng s

in thoi trn ton b bng khng vt qu 230.

V d
---------------------------------------------------------------------------------------------------------------------------205

Mt s vn ng ch trong mn tin hc

------------------------------------------------------------------------------------------------------------------------------D liu
0 4
1 1 2 3
2 0 0 2 2
1 1 1 2
1 1 2 -1
2 1 1 2 3
3

Kt qa
3
4

Thut ton:
Chng ta s tm hiu thut ton dng BIT2D( dng cy BIT 2 chiu) cho bi ny.
Nu cy BIT thng thng l 1 chiu th BIT2D dng 1 mng 2 chiu, khi cp nht hay ly kt
qu ta thc hin trn c 2 chiu. Lc cp nht hay ly kt qu, u tin ta i n nhng nt thuc
chiu th nht, vi mi nt ny, ta li i n nhng nt thuc chiu th 2. C th hiu n gin l
BIT2D l 1 cy BIT, mi nt ca cy BIT ny qun l 1 cy BIT khc.
Tr li vi bi ton, d dng v thun tin hn, ta s nh s li ch s dng v ct bt u t s
1 ch khng phi s 0.
-Vi mi thao tc cp nht X,Y ta li cp nht 2 chiu v pha S, n mi nt li cng gi tr
nt thm A.
-Ly kt qu: Do c im ca cy BIT l ch ly kt qu bt u t 1. V vy vi mi thao tc ly
kt qu L,B,R,T ta li tnh trung gian nh sau:
Kq[L,B,R,T]:=Kq[1,1,R,T]-Kq[1,1,R,B-1]-Kq[1,1,L-1,T]+Kq[L-1,B-1]( cc bn c th t chng
minh tnh ng n). Vi mi thao tc ly kt qu t 1,1 n X,Y ta cng ly theo 2 chiu i v 0,
n mi nt li cng vo kt qu gi tr nt . Cc bn c th tham kho chng trnh mu
hiu r hn.
Nh vy ta thy, BIT2D khng khc nhiu so vi BIT thng thng, ch khc l cc bn qun l
trn 2 chiu lng nhau.

---------------------------------------------------------------------------------------------------------------------------206

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Team Selection(NKTEAM)
Cc trng on i tuyn tin hc vng Balkan mun chn ra nhng th sinh mnh nht
trong khu vc t N th sinh (3 N 100000). Cc trng on t chc 3 k thi, mi th
sinh s tham d c 3. Bit rng khng c 2 th sinh no c cng im s trong mi k thi.
Ta ni th sinh A gii hn th sinh B nu A c xp hng trc B trong c 3 k thi. Mt
th sinh A c gi l xut sc nu nh khng c th sinh no gii hn A.
Yu cu: Hy gip cc trng on m s th sinh xut sc.

D liu vo
Dng th nht cha 1 s nguyn dng N.
3 dng sau, mi dng cha N s nguyn dng cch nhau bi khong trng, l ch s ca cc th sinh

theo th t xp hng t cao n thp ca k thi tng ng.

Kt qa
Gm 1 s nguyn duy nht cho bit s th sinh xut sc.

V d
D liu mu
3
231
312
123
Kt qa
3

Khng c th sinh no gii hn th sinh khc nn c 3 th sinh u xut sc.


D liu mu
10
2 5 3 8 10 7 1 6 9 4
1 2 3 4 5 6 7 8 9 10
3 8 7 10 5 4 1 2 6 9
Kt qa
4

Th sinh 1, 2, 3, 5 l nhng th sinh xut sc.

---------------------------------------------------------------------------------------------------------------------------207

Mt s vn ng ch trong mn tin hc

-------------------------------------------------------------------------------------------------------------------------------

Thut ton:
Nu tip cn trc tip bi ton vi cc thng s ca cho th rt kh khn. Sau y ta s
chuyn d liu v 1 dng tng ng m ta c th gii quyt bi ton d dng hn:
Gi A,B,C l 3 mng 1 chiu vi ngha nh sau: A[i],B[i],C[i] l th t ca ngi th i
trong 3 k thi tng ng. Ta c th xy dng 3 mng ny rt d, chng hn nh A[i]=j khi
s th j ca hng cha im mn thi u tin l i, cc mng B v C xy dng tng t. Sau
khi xy dng c 3 mng ny, bi ton c pht biu li l tm s th sinh m khng c
th sinh no c gi tr ca c 3 mng nh hn n. T ta c thut ton s dng Binary
Index Tree nh sau:
-Gi mng T l mng lu thng tin ca cy BIT.
-u tin sp xp tng dn 1 mng bt k, 2 mng cn li cng phi i ch theo m
bo A[i],B[i],C[i] lun l th t ca 1 hc sinh trong 3 k thi. y gi s ta sp xp mng
A. Sau khi sp xp mng A, ta ch cn tm s v tr i m khng c v tr j no t 1 n i-1 c
B[j]<B[i] v C[j]<C[i]( Do A[j]<A[i] nn nu c v tr i tha mn iu kin trn th c 1
th sinh xp cao hn th sinh v tr i trong c 3 k thi.
-Lc cp nht, ta cp nht gi tr min ca mng B, nhng li cp nht trn mng C. Ngha
l ta s cp nht vi nt bt u l C[i], cp nht n khi qu n, khi n mi 1 nt no x
m gi tr T[x]>B[i] th gn li T[x]:=B[i]. Vy lc u ta gn T[i]=n+1 vi mi i t 1 n
n.
-Lc ly kt qu, ta s c nt bt u l C[i], bt u i v 0, nu n 1 nt x no m c
T[x]<B[i] th th sinh v tr th i khng l th khoa c. Ta s chng minh i khng phi
l th khoa: Do khi tm c nt x c T[x]<B[i], gi s T[x]=B[j] no th ta c j<i(
th mi cp nht c ln, do ta cho for t 1 n n), v vy A[j]<A[i]. Thm na, C[j]<C[i]
do qu trnh cp nht trn cy BIT ca ta, nu C[j]>C[i] th khi i t C[i] i v pha 0 s
khng bao gi c th n 1 nt x c T[x]=B[j]( do khi cp nht th ta cp nht ln, tc l i
v pha n). Vy c 1 th sinh j c c 3 ch s u nh hn ca th sinh i nn th sinh i khng
phi l th khoa.
-Khi c th tc kim tra xem i c phi th khoa hay khng th bi ton c bn hon
tt, ch c thm 1 lu nh, khi sp xp mng , c th dng thut ton 0(n) sp, do cc
phn t c gi tr khc nhau v u khng vt qu n.

---------------------------------------------------------------------------------------------------------------------------208

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

VN : CC LI TRONG PASCAL (ST)


1. Li c php l nhng li pht sinh do lp trnh vin vit sai nhng quy nh v vn
phm ca h thng hoc ngn ng. Th d cc li sau y l nhng li c php:
- (a + b * 2: thiu du ng ngoc
- BEGIM: nh vit BEGIN, sai N
2. X l li. Li c php c pht hin trong qu trnh dch. Turbo Pascal 5.0 bo li
c php theo nguyn tc "Mi ln ch bo mt li".
Nu gp li ta cn tr v ch son tho, tm v tr xut hin li, sa li li ri
dch li chng trnh.
Sau khi bo li, Turbo Pascal s ch ta bm phm ESC tr v ch son tho.
Con tr ca mn hnh son tho s t cnh v tr xut hin li, thng thng qu i
1 k t.
3. Cc thng bo li thng gp v gi khc phc.
Li 1. Out of memory: vt ra ngoi min nh. Chng trnh dch thiu min nh. Vi
gi khc phc:
a. Nu mc COMPILE/DESTINATION (ni t chng trnh ch tc l chng
trnh c dch ghi trong tp cng tn vi chng trnh ngun nhng c phn m rng
l .EXE) ang t l MEMORY hy i thnh DISK bng cch bm phm
ENTER (cn gi l phm RETURN).
b. Nu mc OPTIONS/COMPILER/LINK ang t l MEMORY hy i thnh
DISK bng cch bm phm ENTER.
c. B cc chng trnh thng tr, chng hn SIDKICK, NC v.v.
d. Th ra khi TURBO.EXE, dch li chng trnh ca bn vi lnh TCP nh
sau:
TCP <tn chng trnh ca bn>
Chng trnh dch TCP ny chim t min nh hn.
Nu c 4 bin php ni trn u khng mang li kt qu tc l chng trnh ca bn qu
ln. Hy chia n thnh cc n th nh hn.
Cc m li v ngha:
2. Identifier expected: mong gp nh danh.
3. Unknown identifier: nh danh cha c khai bo. Hy khai bo nh danh ny
u th tc hoc chng trnh.
4. Duplicate identifier: nh danh c khai bo 2 ln tr ln.
5. Syntax error: Li c php. Gp mt k t sai hoc vit sai mt hng.
6. Error in real constant: Vit sai hng thc.
7. Error in integer constant: Vit sai hng nguyn.
Ch rng khai bo CONST c = 1234 s cho ta mt hng c kiu nguyn. Mun c mt
hng kiu thc, ta vit CONST c = 1234.0. Nhng hng c gi tr nm ngoi khong 2147483648..2147483647 cn c khai bo theo kiu thc, th d:
CONST c = 12345678912.0;
-----------------------------------------------------------------------------------------------------------------------209

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

8. String constant exceeds line: gi tr ca xu k t qu di, xem li c thiu du


ng/m (du nhy n) hng vn bn khng?
9. Too many nested files: qu nhiu tp lng nhau.Chng trnh dch cho php lng
nhau khng qu 5 tp.
10. Unexpected end of file: Cn gp du kt tp. Li 10 c th xut hin trong cc trng
hp sau:
- Trong trng trnh cc cp BIGIN v END khng cn i.
- Tp khc c gi lng ti mt v tr khng hp l.
- Ch thch cha c ng bng du } hoc * ).
11. Line too long: Dng di qu B son tho cho php pht sinh cc dng di ti a 249
k t trong khi khi chng trnh dch ch lm vic vi cc dng di ti a 126 k t.
Li khuyn: Khng nn vit cc dng di qu 60 k t.
12. Type identifier expected: Cn c nh danh kiu
13. Too many open files C th m ti a 20 tp. Mun vy trong tp CONFIG. SYS cn
c dng khai bo FILES = 20 Li khuyn: Nn m chng 15 tp l va nu c nhu
cu. Hy a dng sau y: FILES = 15 vo tp CONFIG.SYS. Khi ng li my
ri gi li TP.
14. Invalid file name: Sai tn tp. Tn tp c t theo quy nh ca DOS.
15. File not found: Khng tm thy tn trong th mc. Trong mt s trng hp TP cn
c cc tp ph tr, th d EGAVGA. BGI cho mn hnh trong ch th. Bn cn
t nhng tp ny vo th mc hin hnh hoc ch r ng dn truy nhp ti
chng.
16. Disk full: a y ht ch ghi. Hy xo i mt s tp khng cn dng na hoc dng
a mm mi (cho A, B).
17. Invalid compiler directive: t sai ch dch Li khuyn: Khng nn lm dng ch
dch. Cc ch ngm nh l cho bn. Hn hu hy t tm thi mt ch
dch, sau hy tr li trng thi c cho n. Th d, mu sau y thng dng
kim tra s tn ti ca mt assign (f, fname); { $ I - } reset (f); { $ I + ) IF
IORESULT = 0 THEN { tp tn ti )... ELSE {tp khng tn ti}... Trong f l bin
tp, fname l xu cha tn tp.
18. Too many files: Qu nhiu tp. Chng trnh i hi qu nhiu tp. S i hi thi
qu ny c th pht sinh ra cc nguyn nhn sau: - t nhiu ch khin chng
trnh dch phi m nhiu tp. - Cc module gi mc ni, lin hon, mi module li
i hi mt s tp. Li khuyn: Ngay t u hy chn cu trnh ti thiu cho chng
trnh . Cn c mt danh sch cc kiu, bin v cc tp tng th m chng trnh gi
ti.
19. Undefined type in pointer definition: Kiu cha nh ngha khi nh ngha con tr.
Th d, khai bo var P: ^ptype; Nu trc ta cha nh ngha kiu ptype th s sinh
li 19.
20. Variable identifier expected: Cn mt nh danh cho bin Th d FOR = 4 TO 20 DO
s sinh li 20.
21. Error in type: Li v kiu. Th d, TYPE * = 3 .. 7
22. Structure too large: Kiu cu trc c kch thc qu ln. C ti a ca cu trc trong
TP l 65520 byts
-----------------------------------------------------------------------------------------------------------------------210

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

23. Set base type of range: Kiu tp c s vt qu gii hn. Gii hn ca kiu on
dng lm tp c s l 0 ... 255, gii hn ca kiu lit k dng lm tp c s l 256
phn t. Th d khai bo sau y s sinh li 23: Var S: set of -8 .. 300;

24. File components may not be files: Thnh phn ca tp khngth l tp. Th d, khai
bo TYPE FTEXT = FILE OF TEXT; Li 24 v TEXT l kiu tp vn bn cho nn
FTEXT s l kiu tp ca tp.
25. Invalid string length: Chiu di xu khng hp l. Chiu di hp l nm trong khong
0 .. 255. Li khuyn: Trong TP mi xu x dng phn t x [0] cha chiu di ca x.
Khng nn thay i tu tin gi tr ca x[0]. on trnh sau y d c li cho bn
cng khng bao gi nn lm dng. ( *Ly 3 k t u ca xu x *) VAR x: string;
BEGIN X: = 'abcdef'; x[0]:= chr(3); writeln (x); readel; END.
26. TYPE mismatch: Kiu khng tng thch. cc nguyn nhn sinh li c th l: - Biu
thc c gn cho bin khng ng kiu. Th d
VAR x: char;
BEGIN
x: = 127 * 8
END.
- Truyn tham tr c th khng ng kiu khi gi th tc v hm. Th d
FUNCTION F ( x: integer ): string;
BEGIN
Writeln (F ('ERROR')) ( * sinh li 26 *)
END.
- S dng ch cn mng sai kiu4
- Dng ton hng khng ng kiu trong biu thc. Th d: x: = 5 + chr ;
27. Invalid subrange base type: Kiu c s cho kiu on khng hp l. Ch c dng
cc biu thc bc hm kiu c s.
28. Lower boundgreater than upper bound: Gii hn di ln hn gii hn trn. Th d a;
ARRAY [5.. -5] of ...
29. Ordinal type expected: Cn mt kiu th bc. Trong trng hp ny khng c
dng cc kiu Real, string, Record, PROCEDURE hoc pointer.
30. Integer constant expected: Cn mt hng nguyn
31. Constant expected: Cn mt hng
32. Integer or rcal constant expected: Cn mt hng nguyn hoc thc
33. Type identifier expected: Cn mt nh danh kiu
34. Invalid function resunt type: Kiu kt qu ca hm khng hp l. Hm ch cho kt
qu v thuc kiu n, string v pointer. Trng hp sau y s l li:
TYPE
Phn s = RECORD
T: integer;
Mu: Integr
END;
FUNCTION Rt gn ( x: phn s): phn s;
-----------------------------------------------------------------------------------------------------------------------211

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

35. Label identifier expected: Cn chn nhn Li khuyn: Tt nht l nn trnh dng ton
t GOTO v do bn khng phi dng n nhn.
36. BEGIN expected: Thiu BEGIN
37. END expected: Thiu END
38. Integer expression expexted: Cn biu thc nguyn
39. Ordinal expression expected: Cn biu thc th bc
40. Boolean expression expected: Cn biu thc kiu BOOLEAN
41. Operand types do not match operator: Kiu ton hng khng ph hp vi ton t
42. Error in expression: Biu thc sai. Thng gp trng hp s dng k t l hoc
qun vit du php ton trong biu thc.
43. Illegal assigment: Gans Gn khng hp l. Khng c gn tr cho bin tp hoc bin
khng nh kiu. Khng c gn tr cho nh danh hm ngoi thn ca hm .
44. Field identifier expected: Cn mt nh danh thng. Li pht sinh khi s dng bn
ghi (RECORD) khng c trng hp i km.
45. Object file too large: Tp ch qu ln. TP khng th ghp cc tp kiu OBJ ln hn
64 KB (1kilo byte = 1024 bytes)
46. . Undsfined external: Cha khai bo cc hm hoc th tc ngoi. Cc hm hoc th
tc ngoi cn c khai bo mc PUBLIC trong cc tp OBJ hoc trong cc tp
hp ng ASM. Trong ch { $ L ... } cn lit k y tn cc tp OBJ.
47. Invalid object file record: Tp OBJ khng c cu trc chun mc theo quy nh ca
TP.
48. Code segment too large: on m qu ln. Cc chng trnh hp thnh phi c kch
thc khng qu 65520 bytes.
49. Data segment too large: on d liu qu ln.
50. Do expected: Thiu Do trong cc cu trc FOR hoc WHILE hoc WITH
51. Invalid PUBLIC definition: Khai bo sai trong mc PUBLIC
52. Invalid EXTRN definition: Qu nhiu khai bo EXTRN. TP khng s l qu 256
khai bo EXTRN trong mi tp OBJ.
53. Too many EXTRN definitions Qu nhiu nh ngha EXTERN
54. OF expected:Thiu OF trong TYPE, CASE, FILE, SET, ARRAY
55. INTERFACE expected: Thiu mc INTERFACE
56. Invalid relocatable reference: Tham chiu khng hp l
57. THEN expected:Thiu THEN trong IF
58. TO or DOWN TO expected: Thiu To hoc DOWN TO trong FOR
59. Undefined forward: cha khai bo trc.
60. Too many procedures: Qu nhiu th tc (hoc hm). TP cho php ti a 512 th tc
(PROCEDURE) v hm (FUNCTION) trong mt module. Nu c qu nhiu bn cn
tch chng trnh thnh hai hoc nhiu module.
61. Invalid typecast: chuyn i kiu khng ng
62. Divion by zero: cha c 0
63. Invalid file type: Kiu tp khng ng. Mi kiu tp lm vic vi mt s th tc dnh
ring cho kiu . Th d tp TEXT lm vic voi th tc readln, tp nh kiu lm
vic vi th tc seek. Nu gi th tc readln cho tp nh kiu hoc gi th tc seek
cho tp text s sinh li 63.
-----------------------------------------------------------------------------------------------------------------------212

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

64. Can not Read or write vaziables of this type: Khng th c hoc ghi bin thuc kiu
ny. Lu rng - Read v Readln c th c t tp vo cc bin kiu char, integer,
real, Boolean hoc string.
65. Pointer variable expected: Cn mt bin con tr.
66. String variable expected: Cn mt bin string.
67. String expression expected; Cn mt biu thc string.
68. Unit not found: Khng tm thy n th (Unit). Cn khai bo chng trong mc USES
v t ng dn trong mc OPTIONS ca mi trng TP.
69. Unit name mismatch: Tn n th khng ng.
70. Unit version mismatch: version n th khng ph hp.
71. Duplicate Unit name: Tn n th trgn lp

-----------------------------------------------------------------------------------------------------------------------213

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

72. LUnit file format error: Tp n th (c ui TPU) khng c dng quy nh.
73. Implementation expected: Thiu phn IMPLEMENTATION trong n th.
74. Constant and case types do not match: Kiu hng v kiu biu thc trong CASE
khng ph hp vi nhau.
75. Record variable expected: Cn mt bin kiu RECORD.
76. Constant out of range: Hng vt qu min. Li c th gp trong cc tnh hung sau:
- Ch dn mng vt ra ngoi gii hn ca mng - Gi th tc v hm vi cc tham tr c
th vt ra ngoi gii hn khai bo.
77. File variable expected: Cn bin tp.
78. Pointer expression expected: Cn mt biu thc kiu con tr.
79. Integer or Real expssion expected: Cn mt biu thc kiu INTEGER hoc REAL.
80. Labelnot within current block: Nhn khng c trong khi ang xt.
81. Label alrealy difined: c nhn.
82. Undefined label in processing statement part: Khng thy nhn hiu trong on x
l. Nhn c khai bo, thy ton t GOTO c tham i l nhn nhng
khng thy nhn trong on vn bn. Mi nhn cn xut hin t nht l 3 ln theo s
sau:
LABEL L; (* 1 *)
... (* 2 *) L: FOR i:= TO ...
GOTO L; (* 3 *)
Nu nhn L khng c mt (* 2 *) s sinh li 82.
83. Invalid @ argument: Dng cc ton t @ vi ton hng khng hp l. Ton hng hp
l cho @ l cc nh danh ca bin, th tc v hm.
84. Unit expected: Cn c t kho UNIT.
85. ";" expected: Cn c du chm phy.
86. ": " expected: Cn c du hai chm.
87. " , " expected: Cn c du phy
88. " ( " expected: Cn c du m ngoc n
89. " ) " expected: Cn c du ng ngoc n
90. " = " expected: Cn c du bng.
91. ":= "expected: Cn du gn
92. " [ " or " (. " expected: Cn m du ngoc vung khi khai bo hoc ch nh phn t
ca mng, tp.
93. " ] " or " .) " expected: Cn du ng ngoc vung khi khai bo hoc ch nh phn t
ca mng hoc tp.
94. " ." expected: Cn du chm khi ch nh mt trng trong bn ghi
95. " .." expected: Cn du nhiu chm khi lit k gii hn mng, tp.
96. Too many variables: Qu nhiu bin. Nguyn nhn xut hin li c th l: - Tng
kch trc ca cc bin ton cc vt qu 64 KB - Tng kch thc ca cc bin cc b
m t trong th tc hoc hm vot qu 64 KB.
97. Invalid FOR control variable: Bin iu khin trong ton t FOR khng ng. Phi
dng bin kiu lit k.
98. Integer variable expected: Cn bin nguyn.
-----------------------------------------------------------------------------------------------------------------------214

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

99. Files are not allowed here: Khng c dng tp y. Hng nh kiu khng th l
tp.
100. String. length, mismatch: Chiu di xu khng ph hp vi s lng cc phn t
ca mng k t.
101. Invalid ordering of gields: Trt t cc trng (trong bn ghi) khng ng.
102. String constant expected: Cn mt hng kiu xu.
103. Integer or real variable expected: Cn bin nguyn hoc thc (bin s).
104. Ordinal variable expected: Cn bin (kiu) th t.
105. INLINE error: Li khi s dng ton t INLINE ( < ). Ton t ny khng c dng
vi cc con tr ti bin. Cc con tr loi ny lun lun c kch thc bng mt t.
106. Character expressionexpected: Cn biu thc kiu k t.
107. Too manyrebocation items: Qu nhiu phn t ng. Kch thc ca bng ng
cho tp. EXE vt qu 64 KB.
108. Not enough memory to run progam:Khng min nh thc hin chng trnh.
109. Can not find EXE file: Khng tm thy tp EXE.
110. Can not run a Unit: Khng c php thc hin mt modul. Modul l mt th vin
cc khai bo (bin, th tc, hm) ghp vi cc chng trnh s dng chng ch
khng dng thc hin c lp.
111. Compilation abozted: Hu vic dch (bng lnh ^ BREAK).
112. CASE constant out of range: Hng ca ton tCASE khng nm trong gii hn. 32768 dn 32767
113. Error in statement: Cu lnh sai. Li khng sy ra khi vit sai k t u tin ca cu
lnh.
114. Can not call an interrupt procedure: Khng th gi th tc ngt.
115. Must have an 8087 to compile this: Cn c b s l 8087 dch chng trnh ny
nu c khai bo ch dch { $ N + }.hy th dng t hp { $ N +, E + }.
116. Must be in8087 mode compile this: Phi dng ch 8087 dch chng trnh
ny. Khng c s dng cc kiu SINGLE, DOUBLE, EXTENDEN, v COMP
trong ch { $ N - }.
117. Target address not found: Khng tm thy a ch cho.
118. Include files are not allwed here: Khng c dng tp hng y.
119. TMP file format error: Li khun dng tp TMP. Tp c ui ng lTMP nhng
ni dung khng ng dng .
120. NIL expected: Cn gi tr bng NIL.
121. Invalid qualifier: nh dabnh khng hp l. C th do cc nguyn nhn sau: -Vit
mt bin n c km ch dn nh bin mng. - Vit mt bin n hoc mng theo
trng nh bin bn ghi. - S dng bin khng thuc kiu con tr nh mt bin con
tr.
122. Invalid variable reference: Tham chiu khng hp l ti bin. Bn thn bin c
khai bo ng kiu con tr nhng ni dung ca n khng phi l a ch. Thng gp
trong khi gi mt hm kiu mt con tr nhng qun dng k hiu ^.
123. Too many symbols: C qu nhiu k hiu. Chng trnh c tng s k hiu ln hn
64 KB. Cn chia thnh nhng module nh hn nu dch trong ch { $ D + }.
124. Statement part too large: Phn lnh ton t qu ln. Turbo Pascal dnh khong 24
KB cho phn ton t. Nu phn ny qu ln th nn ct chng thnh nhiu th tc
-----------------------------------------------------------------------------------------------------------------------215

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

hoc hm. Ni chung mt ngi lp trnh tt thng quan tm n t chc cu trc.


125. Module has no debug information: Trong module khng c thng tin bt li do
khi thc hin chng trnh dch m gp li Turbo bascal s khng ch ra c ton

-----------------------------------------------------------------------------------------------------------------------216

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

t sinh li. Nn dch li chng trnh theo ch { $ D +} hoc s dng mc COMPILER/FIND ERROR
tm li.
126. Files must be var parameters: Tham bin hnh thc kiu tp trong th tc hoc hm
phi c khai bo theo ch truyn theo bin (c tip u VAR).
127. Too many conditional symbols: Khng min nh xc nh cc k hiu iu
kin. Th b bt mt s k hiu hoc gim chiu di ca chng.
128. Misplaced conditional directive: Thiu cc khai bo iu kin, chang hn trong
chng trnh c { $ ELSE }hoc {$ ENDIF} nhng li khng c { $ IFDEF },
{$IFNDEF } hoc {WIFOPT }.
129. ENDIF directive missing: Thiu khai bo $ENDIF}.
130. Error in inital conditonal defines: nh ngha iu kin sai. Cc iu kin ban u
t trong OPTIONS/COMPILER/CONDITIONAL DEFILES khng ng. Nu vit
nhiu iu kin cn ngn chng bng du chm phy.
131. Header does not match previous definitio: Phn u khng ph hp vi khai bo
trc . C th do cc nguyn nhn sau: - u ca th tc v hm ca phn
INTERFACE v phn IMPLEMENTATION khng ph hp vi nhau. - u ca th
tc v hm khai bo trc (bng t ch th FORWARD) khng ph hp vi phn m
t.
132. Criticaldisk error: Li nng v a, th d a cha ng hoc cha c lp
a.
133. Can not evaluate this expression: khng th tnh c g tr ca biu thc, th d
CONTS C = SIN (2); s sinh li v khi khai bo hng dng hm SIN.
134. Exprsseion incorrectly terminated: Biu thc kt thc sai.
135. Invalid format specifier: Dng thc t t sai.
136. Invalid inderect reference: Khng s dng ng phng thc truy nhp trc tip. 137.
Structured variable arenot allowed here: Khng c dng bin cu trc y. Li
pht sinh khi lp trnh vin thc hin cc php ton khng c php dng cho cc
bin cu trc, th d nh nhn hai bn ghi.
138. Can not evaluate withut system unit: Cm tnh ton biu thc khi cha gi module
SYSTEM. Mun lm iu ny ta phi a module SYSTEM vo tp TURBO.TPL.
139. Can not access this symbol: Khng truy nhp c ti k hiu ny.
140. Invalid floating-point operation: S dng sai thao tc vi s thc. C th xy ra
hin tng trn nh (kt qu tnh ton vt qu kh nng biu din ca nh) hoc
php chia cho s 0.
141. Can not compile overlay to memory: Khng th dch overlay trn min nh RAM
(m phi t ch dch ra a (Disk)).
142. Procedure or function variable expected: Cn s dng bin dng th tc hoc hm.
Tham bin hnh thc ca mt th tc hoc hm c th l mt th tc hoc hm.
Cc m li v ngha khi lm vic vi file:
1. File not found: Khng thy tp. Li pht sinh khi s dng cc th tc RESET,
APPEND, RENAME hoc ERASE m khng tm thy tp cn thao tc
3. Path not found: Khng thy ng dn. Li xut hin khi:
-----------------------------------------------------------------------------------------------------------------------217

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

- Cc th tc RESET, APPEND, RENAME hoc ERASE khng tm c ng dn ti


tp cn thao tc.

-----------------------------------------------------------------------------------------------------------------------218

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

- Cc th tc CHDIR, MKDIR, hoc RMDIR nhn c tham tr sai v th mc hoc


ng dn ti th mc con cn s l.
4. Too many open files: m qu nhiu tp. Xut hin khi gi cc th tc RESET,
REWRITE,hoc APPEND. c th tng s lng tp cn m hy sa hoc thm
dng FILES = xx Trong tp CONFIG.SYS ri khi ng li my.xx l khi lng ti a
cc tp cn m, th d 20.
5. File access denied: Khng c php truy nhp tp. Li xut hin khi: Cc th tc
RESET v APPEND nhn c tham bin tp ch ch c c trong khi tham
bin FILEMODE li c php ghi.
- Gi th tc REWRITE khi th mc y hoc khi tham bin tp c khai bo
ch ch c c.
- Gi th tc RENAME vi tn tp l tn th mc hoc tn tp mi c trong th
mc.
- Gi th tc ERASE vi tn tp l tn th mc hoc tham chiu ti tp ch c c.
- Gi th tc MKDIR vi tn th mc c hoc tn th mc y.
- Gi th tc RMDIR vi th mc cha rng hoc sai ng dn.
- Gi cc th tc READ hoc BLOCKREAD khi cha m tp.
- Gi cc th tc WRITE hoc BLOCKWRITE khi cha m tp ghi.
6. Invalid file handle: Knh cho tp cha thng
12. Invalid file access code: M truy nhp tp b sai. Li xut hin khi gi cc th tc
RESET hoc APPEND vi tham bin FILEMODE cha gi tr khng chun.
15. Invalid drive number: S hiu a b sai. Xut hin khi gi GETDIR.
16. Can not remove current directory: Khng c xo th mc hin hnh. Xut hin khi
gi RMDIR vi th mc ang m.
17. Cannot renameacross drives: Khng c i tn vi hai a khc nhau. Xut hin
khi gi RENAME vi hai tp nm hai a khc nhau.
100. Disk read error: Li c a. Xut hin khi gi READ t tp nh kiu c khi
tp c duyt ht.
101. Disk write error: Li vit vo a. Xut hin khi gi close, write, writel hoc flush
vi a y.
102. File not assigned: Cha gn tn cho tp bng th tc ASSIGN m gi cc th
tc RESET, REWRITE, APPEND, RENAME hoc ERASE.
103. File not open: Tp cha m. Xut hin khi gi close, rean, write, seek, eof,
fileposfilesize, flush, blockread, blockwrite vi tp cha c m
104. File not open for input: Tp cha c m c. Xut hin khi gi READ,
READLN, EOF, EOLN. SEEKEOF, hoc SEEKEOLN vi tp vn bn (kiu text) cha
c m c.
105. File not open for output: Tp cha c m ghi. Xut hin khi gi WRITE hoc
WRITEL vi tp vn bn cha c m ghi
106. Invalid numeric format: Dng s sai. Xut hin khi gi READ hoc READLN mt
s t tp vn bn.
-----------------------------------------------------------------------------------------------------------------------219

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.

Disk is write protected: a chng ghi. L chng ghi a b che kn.


Unknown unit: Module l
Drive not ready: a cha sn sng.
Unknown command: Lnh l.
ARC error in data (Cycle Redundant Code -): Li d liu ban u.
Bad drive requiest structure legth: Chiu di cu trc a khng ng.
Disk seek error: u - c ghi ch a b t sai
Unkown media type: Kiu vt mang (tin) khng r
Sector not found: Khng tm c Sector ca a.
Printer out of paper: ht giy in my in
Device write fault: Li khi dng thit b ghi
Device read fault: li khi dng thit b c
Hardware failure: C s c phn cng.

Cc li rt nng:
200. Division by zero: chia cho s 0.
201. Range chek error: Li kim tra gii hn.
202. Stack overflow error: Ngn xp y.Khi chng trnh thc hin cn c vng nh
t chc bin ng v gi cc th tc v hm. Vng nh ny c t chc theo nguyn
tc ngn xp. Nu thiu ch th sinh li 202.
203. Heap overflow error: Chm u. Khi chng trnh thc hin cn cp pht vng nh
ng cho cc th tc new hoc getmem. Cc vng nh ny c qun l theo nguyn
tc chm (nh b r ca mt cy). Nu thiu ch s sinh li 203.
204. Invalid pointer operation: Thao tc con tr khng ng. Li xut hin khi gi
DISPOSE hoc FREEMEM vi gi tr NIL hoc vi a ch nm ngoi gii hn dnh
cho phn b nh thao tc.
205. Floating point overflow: Ton gi tr thc (real)
206. Floating point underflow: Lch hng gi tr thc (Real). Li ny xut hin khi s
dng cc b ng x l loi 8087/80287/80387
207. Invalid floatingpoint operation: Thao tc sai vi cc gi tr thc (Real). Li xut
hin trong cc trng hp:
- Tham tr ca cc hm TRUNC hoc ROUND khng th bin i c trong phm vi
ca kiu LONGINT (t -2147483648 n +2147483647)
- hm ly cn bc 2 SQRT c tham tr m
- Hm logarit LN cha tham tr khng dng
- Ngn xp ca b ng x l b trn.
208. Overlay manager not installed: Cha t phn h iu khin Overlay. Thng l
thiu th tc OVRINIT (khi to - t ch Overlay) hoc th tc ny khng c
thc hin y .
209. Overlay file read error: Li khi c tp overlay.

-----------------------------------------------------------------------------------------------------------------------220

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------221

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

Mt s vn ng ch trong mn tin hc

KINH NGHIM THI C


Cc cuc thi l ni bn chng t trnh v kh nng cu mnh. Cng sc hc tp
by lu ch quyt nh trong 3 ting lm bi thi. Do , kinh nghim l th khng th thiu
nu mun t kt qu tt.
1. Kin thc
Cuc thi no cng i hi kin thc trong mt min gii hn nht nh, v hy m
bo rng bn chun b tt nhng kin thc . Cc cuc thi ln thng c lng kin
thc gii hn khng h nh. Do trc khi thi bn phi to cho mnh mt ci nhn tng qut
v lng kin thc c.
Cn ch rng vic b sung ,tm hiu kin thc trong qu trnh hc tp khc vi
trong qu trnh chun b cho k thi. Vic vi u b sung kin thc mi ngay trc k thi l
hon ton khng nn. V nh th chng ta s b nh hng bi lng kin thc v lm lu
m i mt lng ln kin thc thu thp c by lu.
2. Tm l
Nhiu ngi thng ni no l trc ngy thi khng nn xem nhiu phim, khng
c chi game, nghe nhc Nhng nhng hn ch ny ch lm cho bn cm thy thm
sc p m thi. Trc ngy thi khang 2 ngy, bn c lm nhng g bn thch v i lc
cn phi qun i vic i mt vi k thi trc mt. C gng to mt tm l thoi mi nht.
Bn cng ng qu lo v lng kin thc hao ht khi bn gii tr. i vi mn Tin
hc, chng ta khng hc theo kiu hc thuc lng, v th kin thc khng th mt i
trong ngy mt ngy hai c.
3. Cch lm bi
i vi mn Tin, s c 180 pht lm 3 bi thi. Khi cm mt t , nhng pht
u tin, bt c ai cng s thy hi hp. Hy c bi u tin (v y thng l bi d,
cho hc sinh kim im). Nu vn cha ly li c bnh tnh cn thit th c th code cu
trc form cho chng trnh, ri to trc file input.
Thc hin lm tng bi theo chin thut: bi d lm trc, kh lm sau; nguyn tc
lm bi no chc chn bi .
Vic phn b thi gian gii quyt 3 bi trong 180 pht cng cc k quan trng.
Bi 1 thng l bi cho im nn c gng hon thnh trong thi gian cng ngn cng tt.
Hai bi cn li mi bi thng dnh 10 - 15 pht suy ngh tm ra thut tan tt. Nu
-----------------------------------------------------------------------------------------------------------------------222

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

khng c tm th chuyn sang hng ci t Duyt n 60% s im (i vi mn tin


hc th mi bi c gii hn 60% s test vi d liu nh v cc bn c th n c s test ny
vi thut ton Duyt nu ci t kho). Sau nu cn d thi gian c th quay li ci tin
tip, phi lun lun ci tin chng trnh cho n khi no ht thi gian, c gng n cng
nhiu test, ng cng nhiu trng hp cng tt. Cha cn bit cc test hay trng hp
c mang li nhiu im hay khng.

-----------------------------------------------------------------------------------------------------------------------223

Mt s vn ng ch trong mn tin hc
-----------------------------------------------------------------------------------------------------------------------

c bit ch n vic t tn file chng trnh v file INPUT, OUTPUT. Nn lm nhng


vic ny trc khi tin hnh lp trnh. Nn lp trnh trc tip bng Free Pascal v ch bo
cc li nh trn mng hay trn b nh. Ch cc gii hn ca bi khai bo mng hay bin s.
V khi thi gian thi cn li 10 pht, nn kim tra li mi th m bo khng c sai
st ng tic no v nhng file sp ghi ln a.
Cc bn nn luyn tp cch lm trn vi cc thi th trnh lng tng trong cc k
thi quan trng.
Kinh nghim thi c
Lm bi tht nhanh
Suy ngh th phi cn thn, nhng khi t tay xung lm bi th phi lm bi tht nhanh, khng chn
ch do d. Nn nh y l mt yu t rt quan trng, nu khng nhiu kh nng s b thiu thi
gian! Luyn tp lm bi nhanh mi khi c th n khi i thi s quen.
c k v suy ngh tt c cc bi trc khi lm
Nn dnh mt khong thi gian suy ngh tt c cc bi ton, sau mi quyt nh s lm bi
no trc. C rt nhiu trng hp, mt bi ton tng chng n gin nhng n khi lm gn
xong mi pht hin l bi kh. V vy cn tnh to trnh lng ph thi gian.
Lm bi d trc
Hon thnh bi d trc m bo mt s im cho mnh v to cm gic yn tm khi lm nhng
bi cn li.
Kim tra mi bi sau khi lm xong
Sau khi lm xong mi bi, cn phi kim tra li chng trnh trc khi chuyn sang bi khc.
kim tra chng trnh, cch tt nht l test tht nhiu. C thm mt test ng, xc sut ng n
ca chng trnh s tng ln ng k.
Dng cc test kch thc nh, t sinh ra kim tra tnh ng n ca thut ton; cc test ln, nhn
gi tr ln nht v gi tr ngu nhin kim tra thi gian thc hin ca thut ton, pht hin cc li
nh range check, stack overflow, arithmetic overflow.
C nhng bi ton m c th kim tra kt qu mt cch n gin (v d bi D mn). Khi ng
ngi vit chng trnh to test hoc chng trnh kim tra kt qu nu cn thit.
Vi nhng bi ton m c thut ton ng n rt n gin (tuy nhin thi gian thc hin ln hn),
hy vit mt chng trnh nh vy dng kim tra kt qu. Chng hn, bi ton cp im gn
nht: cho N im trn mt phng, tm hai im c khong cch gn nht. Dng chng trnh O(N2)
so snh vi chng trnh O(NlogN), nu hai chng trnh cho kt qu nh nhau cc b test th
xc sut ng n ca chng trnh O(NlogN) l rt cao. Tng t, nu c hai phng php khc
nhau nhiu gii bi ton m cng cho kt qu nh nhau th xc sut ng ca chng trnh l
tng i cao.
c k bi
c li mt bi nhiu ln, c c trc khi lm, sau khi lm xong, pht hin xem mnh c nhm
ln, thiu st chi tit g khng!
-----------------------------------------------------------------------------------------------------------------------224

Mt s vn ng ch trong mn tin hc
----------------------------------------------------------------------------------------------------------------------Sa li chng trnh
Khi chng trnh chy cho ra kt qu sai, cn sa li (debug) chng trnh. Cn tn dng hiu qu
cc cng c debug ca Free Pascal nh watches, break point, s dng tt cc phm tt F4, F7, F8.
Thng thng chng trnh s b mt vi li nh nh vit sai tn bin trong mt biu thc, thiu
mt on x l,
C th xy ra trng hp pht hin c thut ton sai, nht l i vi nhng bi c thut ton ng
n th iu ny l hon ton c th. Khi ng ht hong! Cn bnh tnh tnh ton xem xc sut
ng n ca chng trnh c cao khng, c nn lm tip bi ton hay khng? ng bao gi
b vng vo mt bi ton qu lu, nu thy lo lng v dnh nhiu thi gian cho mt bi m vn
cho kt qu sai, hy tm thi chuyn sang bi khc.
Trong trng hp cn thay i ton b chng trnh, nh backup chng trnh c vo mt bn
khc, phng khi cn s dng li.
Phong cch vit chng trnh
Phong cch vit chng trnh l iu rt quan trng khi i thi. Vi phong cch vit chng trnh tt
s c li th hn. Nhng iu ny li ch c th c khi luyn tp nhiu. Phong cch vit chng
trnh tt khng c ngha l nhng cch vit cho chng trnh chy nhanh, m l m bo lm
bi nhanh, sa li nhanh, gim xc sut sai ca chng trnh v gim xc sut nhm ln cho ngi
vit.
ng i hi perfect
Trong trng hp khng th ngh ra thut ton ng n cho mt bi ton (hoc bn thn bi ton
cng khng c thut ton ng n, iu ny rt c th xy ra trong k thi quc gia), c gng tm
cch t c mt s im nht nh. Mt chng trnh t 80 hay 90 im hu nh khng khc g
nhiu so vi mt chng trnh perfect. i khi khng ng vit thm mt on chng trnh rt
di ch t thm 10-20 im, nhng i khi ch cn thm mt hai dng cn hay iu kin th
thm ch c th t thm mt s im rt ln. iu quan trng l cn bnh tnh nh gi nhng g
nn lm v khng nn lm.
t c 50% s im
Cc bi ton thng a ra 50% (hoc 30-40%) s test c gii hn nh, c th dng nhng thut
ton n gin hoc duyt. Tt nht nn thm mt iu kin kim tra nu d liu thuc gii hn
ny th dng chng trnh n gin hoc duyt chy.
Sao lu bi lm
Thnh thong hy sao lu bi lm vo nhiu th mc, nhiu a khc nhau phng khi c s c k
thut. Hy to 3 th mc cho 3 bi lm. Lu cc bi s np vo mt ni ring, trnh np nhm bi.
nh gi, quyt nh thng minh
C nhiu th cn nh gi: mc kh ca mi bi, xc sut ng n ca thut ton ngh ra, thi
gian cn thit lm mt bi, kim tra kt qu v to test c kh khng? T quyt nh lm bi
no trc, c nn tip tc ci tin mt bi khng, ci tin nh th no s hiu qu hn, kim tra
chng trnh nh th no chc chn nht. Hy linh hot
-----------------------------------------------------------------------------------------------------------------------225

Mt s vn ng ch trong mn tin hc
----------------------------------------------------------------------------------------------------------------------Khi lp trnh
Khi i thi thng s s dng compiler v IDE Free Pascal.
t ch dn b nh
Trong trng hp chng trnh lp vo th tc quy nhiu ln, cn tng kch thc stack bng
cch t ch dn b nh:
{$M 2000000,0,2000000}
Phong cch vit chng trnh
Nu chng trnh s dng t bin, c th t tn cc bin, mng ngn gn n gin tng tc
lm bi, v d a, b, x, y, mng quy ng l f. Tuy nhin nu chng trnh s dng nhiu bin, cc
bin mang ngha khc nhau th hy t tn cc bin di v mang ngha ca chng trnh nhm
ln. Nn nh vic nhm ln gia cc bin l vn rt kh chu. Nn t tn cc bin bng ting
Vit v vit chng trnh bng ch in thng tng tc lm bi.
Gia cc cu lnh, nn xung dng tn dng cc cng c debug ca Free Pascal nh cc phm
F4, F7, F8.
S dng chui
Nu cn s dng chui c di vt qu 255 k t cn t ch dn {H+} u chng trnh.
Ct dn
s dng cc phm tt Ctrl-C,X,V cho ct dn ch nh Windows, chn Options Keyboard &
mouse nh du Microsoft convention.

Chc cc bn thnh cng!

-----------------------------------------------------------------------------------------------------------------------226

You might also like