You are on page 1of 14

MT S BI TON QUY HOCH NG IN HNH.

I . Dy con n iu di nht

1. M hnh
Cho dy a1,a2,..an. Hy tm mt dy con tng c nhiu phn t nht ca dy.
c trng: i) Cc phn t trong dy kt qu ch xut hin 1 ln. V vy phng php lm l
ta s dng vng For duyt qua cc phn t aitrong dy, khc vi cc bi ton ca m hnh
4(c trng l bi ton i tin), cc phn t trong dy c th c chn nhiu ln nn ta thc
hin bng phng php cho gi tr cn quy i tng dn tng n v.
ii) Th t ca cc phn t c chn phi c gi nguyn so vi dy ban u.
c trng ny c th mt i trong mt s bi ton khc ty vo yu cu c th. Chng hn bi
Tam gic bao nhau.

2. Cng thc QH
Hm mc tiu : f = di dy con.
V di dy con ch ph thuc vo 1 yu t l dy ban u nn bng phng n l bng mt
chiu. Gi L(i) l di dy con tng di nht, cc phn t ly trong min t a1 n ai v
phn t cui cng l ai.
Nhn xt vi cch lm ny ta chia 1 bi ton ln (dy con ca n s) thnh cc bi ton con
cng kiu c kch thc nh hn (dy con ca dy i s). Vn l cng thc truy hi phi
hp kt qu ca cc bi ton con.
Ta c cng thc QH tnh L(i) nh sau:
L(1) = 1. (Hin nhin)
L(i) = max(1, L(j)+1 vi mi phn t j: 0<j<i v ajai).
Tnh L(i) : phn t ang c xt l ai .Ta tm n phn t aj <ai c L(j) ln nht. Khi nu
b sung ai vo sau dy con ...aj ta s c dy con tng dn di nht xt t a1...ai.






3. Ci t
Bng phng n l mt mng mt chiu L lu tr cc gi tr ca hm QH L(i). on
chng trnh tnh cc gi tr ca mng L nh sau:
for i := 1 to n do begin
L[i] := 1;
for j:=1 to i1 do
if (a[j]<=a[i]) and (L[i]<L[j]+1) then
L[i]:=L[j]+1;
end;
Nh vy chi ph khng gian ca bi ton l O(n), chi ph thi gian l O(n
2
). C mt phng
php ci t tt hn so vi phng php trn, cho chi ph thi gian l O(nlogn

4. Mt s bi ton khc
Bi ton dy con n iu tng di nht c bin th n gin nht l bi ton dy con n
iu gim di nht, tuy nhin chng ta c th coi chng nh l mt. Sau y l mt s bi ton
khc.

a) B tr phng hp( mt tnh th t so vi dy ban u)
C n cuc hp, cuc hp th i bt u vo thi im ai v kt thc thi im bi. Do ch c
mt phng hi tho nn 2 cuc hp bt k s c cng b tr phc v nu khong thi gian
lm vic ca chng ch giao nhau ti u mt. Hy b tr phng hp phc v c nhiu
cuc hp nht.
Hng dn: Sp xp cc cuc hp tng dn theo thi im kt thc (bi). Th th cuc hp i s
b tr c sau cuc hp j nu v ch nu j<i v bj<=ai. Yu cu b tr c nhiu cuc hp
nht c th a v vic tm dy cc cuc hp di nht tho mn iu kin trn.

b) Cho thu my
Trung tm tnh ton hiu nng cao nhn c n t hng ca n khch hng. Khch hng i
mun s dng my trong khong thi gian t ai n bi v tr tin thu l ci. Hy b tr lch
thu my tng s tin thu c l ln nht m thi gian s dng my ca 2 khch hng bt
k c phc v u khng giao nhau (c trung tm ch c mt my cho thu).
Hng dn: Tng t nh bi ton a), nu sp xp cc n t hng theo thi im kt thc,
ta s a c bi ton b) v bi ton tm dy con c tng ln nht. Bi ton ny l bin th
ca bi ton tm dy con tng di nht, ta c th ci t bng on chng trnh nh sau:
for i:=1 to n do begin
L[i]:=c[i];
for j:=1 to i1 do
if (b[j]<=a[i]) and (L[i]<L[j]+c[i]) then
L[i]:=L[j]+c[i];
end;

c) Dy tam gic bao nhau
Cho n tam gic trn mt phng. Tam gic i bao tam gic j nu 3 nh ca tam gic j u nm
trong tam gic i (c th nm trn cnh). Hy tm dy tam gic bao nhau c nhiu tam gic
nht.
Hng dn: Sp xp cc tam gic tng dn v din tch. Khi tam gic i s bao tam gic j
nu j<i v 3 nh ca j nm trong i. T c th a v bi ton tm dy tng di nht.


Trang 2

Vic kim tra im M c nm trong tam gic ABC khng c th da trn phng php tnh
din tch: im M nm trong nu S(ABC) = S(ABM) + S(ACM) + S(BCM).
Bi ton c mt s bin th khc nh tm dy hnh tam gic, hnh ch nht bao nhau c
tng din tch ln nht.

d) Dy i du
Cho dy a1, a2,an. Hy dy con i du di nht ca dy . Dy con con i du
ai1,ai2,aik phi tho mn cc iu kin sau:
ai1<ai2>ai3< hoc ai1>ai2<ai3>
cc ch s phi cch nhau t nht L: i2i1L, i3i2L.
chnh lch gia 2 phn t lin tip nh hn U: |ai1ai2|U, |ai2ai3|U
Hng dn: Gi L(i) l s phn t ca dy con i du c phn t cui cng l ai v phn t
cui cng ln hn phn t ng trc. Tng t, P(i) l s phn t ca dy con i du c
phn t cui cng l ai v phn t cui cng nh hn phn t ng trc.
Ta d dng suy ra:
L(i) = max(1, P(j)+1): jiL v aiUaj<ai.
P(i) = max(1, L(j)+1): jiL v ai<ajai+U.
f) Dy s WAVIO:
Dy s Wavio l dy s nguyn tha mn cc tnh cht : cc phn t u sp xp thnh 1 dy
tng dn n 1 phn t nh sau gim dn. V d dy s 1 2 3 4 5 2 1 l 1 dy Wavio
di 7. Cho 1 dy gm N s nguyn, hy ch ra mt dy con Wavio c di ln nht trch ra
t dy .
Hng dn: L1[i] l mng ghi di ln nht ca 1 dy con tng dn trch ra t dy N phn
t k t phn t 1 n phn t ai. L2[i] : mng ghi di ln nht ca dy con gim dn trch
ra t dy N phn t k t phn t aN n ai. Ta tm phn t j trong 2 mng L1, L2 tha mn
L1[j]+L2[j] ln nht.
g) Thp Babilon ( Tnh cht duy nht ca cc phn t trong phng n ti u b vi phm)
h) Xp cc khi :
Cho N khi (N5000) Cc khi u c dng hnh hp ch nht v c c trng bi 3
kch thc: di, rng, cao. Mt cch xy dng thp l mt cch t mt s cc khi trong
cc khi cho chng ln nhau theo quy tc:
Chiu cao mi khi l kch thc nh nht trong 3 kch thc.
Cc mp ca khi c t song song vi nhau sao cho khng c phn no ca khi
trn nm cha ra ngoi khi di.
a) Hy ch ra cch xy dng c mt ci thp sao cho s khi c dng l nhiu
nht.
b) Hy ch ra cch xy dng c mt ci thp sao cho chiu cao ca ci thp l cao nht
D liu vo TOWER.INP c cu trc nh sau :
Dng u l s N.
N dng sau dng i ghi 3 s nguyn 255 l 3 kch thc ca khi i .
D liu ra : TOWER1.OUT, TOWER2.OUT ghi theo quy cch :
Dng u ghi s cc khi c chn theo th t dng xy thp t chn ln nh.



Trang 3

Cc dng sau ghi cc khi c chn, mi khi ghi 4 s T, D, R, C trong T l s th
t ca mi khi . D, R, C l kch thc ca khi tng ng.

I I . Vali (B)

1. M hnh
C n vt, vt th i c trng lng a[i] v gi tr b[i]. Hy chn ra mt s cc vt, mi
vt mt ci xp vo 1 vali c trng lng ti a W sao cho tng gi tr ca vali l ln nht.
2. Cng thc
Hm mc tiu : f: tng gi tr ca vali.
Nhn xt : gi tr ca vali ph thuc vo 2 yu t: c bao nhiu vt ang c xt v trng
lng ca cc vt. Do bng phng n s l bng 2 chiu.
L[i,j] : tng gi tr ln nht ca vali khi xt t vt 1..vt i v trng lng ca vali cha vt
qu j. Ch rng khi xt n L[i,j] th cc gi tr trn bng phng n u c ti u.
Tnh L[i,j] : vt ang xt l ai vi trng lng ca vali khng c qu j. C 2 kh nng
xy ra :
Nu chn aia vo vali, trng lng vali trc phi j-a[i]. V mi vt ch c
chn 1 ln nn gi tr ln nht ca vali lc l L[i-1,j-a[i]) + b[i]
Nu khng chn ai , trng lng ca vali l nh c (nh lc trc khi chn ai ): L[i-1,j].
Tm li ta c L[i,j]=max(L(i-1,j-a[i]) + b[i], L[i-1,j]).
3. Ci t
For i:=1 to n do
For j:=1 to W do
If b[i]<=j then
L[i,j]:=max(L(i-1,j-a[i]) + b[i], L[i-1,j])
else L[i,j]:=L[i-1,j];

4. Mt s bi ton khc
a) Dy con c tng bng S:
Cho dy a1,a2,..an. Tm mt dy con ca dy c tng bng S.
Hng dn
t L[i,t)=1 nu c th to ra tng t t mt dy con ca dy gm cc phn t a1,a2,..ai. Ngc
li th L[i,t)=0. Nu L[n,S)=1 th p n ca bi ton trn l c.
Ta c th tnh L[i,t] theo cng thc: L[i,t]=1 nu L[i1,t]=1 hoc L[i1,ta[i]]=1.
Ci t
Nu p dng lun cng thc trn th ta cn dng bng phng n hai chiu. Ta c th nhn
xt rng tnh dng th i, ta ch cn dng i1. Bng phng n khi ch cn 1 mng 1
chiu L[0..S] v c tnh nh sau:
L[t]:=0; L[0]:=1;
for i := 1 to n do
for t := S downto a[i] do
if (L[t]=0) and (L[ta[i]]=1) then L[t]:=1;




Trang 4

D thy chi ph khng gian ca cch ci t trn l O(m), chi ph thi gian l O(nm), vi m l
tng ca n s. Hy t kim tra xem ti sao vng for th 2 li l for downto ch khng phi l
for to.

b) Chia ko
Cho n gi ko, gi th i c ai vin. Hy chia cc gi thnh 2 phn sao cho chnh lch gia 2
phn l t nht.
Hng dn: Gi T l tng s ko ca n gi. Chng ta cn tm s S ln nht tho mn:
ST/2.
C mt dy con ca dy a c tng bng S.
Khi s c cch chia vi chnh lch 2 phn l T2S l nh nht v dy con c tng bng S
trn gm cc phn t l cc gi ko thuc phn th nht. Phn th hai l cc gi ko cn li.

c) Market (Olympic Balkan 2000)
Ngi nh c Clement bt c n con c, khi lng mi con l ai, em bn ngoi ch.
ch c, ngi ta khng mua c theo tng con m mua theo mt lng no . Chng hn 3
kg, 5kg
V d: c 3 con c, khi lng ln lt l: 3, 2, 4. Mua lng 6 kg s phi ly con c th 2 v
v th 3. Mua lng 3 kg th ly con th nht. Khng th mua lng 8 kg.
Nu bn l ngi u tin mua c, c bao nhiu lng bn c th chn?
Hng dn: Thc cht bi ton l tm cc s S m c mt dy con ca dy a c tng bng S.
Ta c th dng phng php nh du ca bi chia ko trn ri m cc gi tr t m L[t]=1.

d) in du
Cho n s t nhin a1,a2, ...,an. Ban u cc s c t lin tip theo ng th t cch nhau
bi du "?": a1?a2?...?an. Cho trc s nguyn S, c cch no thay cc du "?" bng du + hay
du c mt biu thc s hc cho gi tr l S khng?
Hng dn: t L(i,t)=1 nu c th in du vo i s u tin v cho kt qu bng t. Ta c
cng thc sau tnh L:
L(1,a[1]) =1.
L(i,t)=1 nu L(i1,t+a[i])=1 hoc L(i1,ta[i])=1.
Nu L(n,S)=1 th cu tr li ca bi ton l c. Khi ci t, c th dng mt mng 2 chiu (lu
ton b bng phng n) hoc 2 mng mt chiu ( lu dng i v dng i1). Ch l ch s
theo t ca cc mng phi c c phn m (tc l t T n T, vi T l tng ca n s), v trong
bi ny chng ta dng c du nn c th to ra cc tng m.
Bi ny c mt bin th l t du sao cho kt qu l mt s chia ht cho k. Ta c thut gii
tng t bi ton trn bng cch thay cc php cng, tr bng cc php cng v tr theo
mun k v dng mng nh du vi cc gi tr t 0 n k1 (l cc s d c th c khi chia
cho k). p s ca bi ton l L(n,0).

e) Expression (ACM 10690)
Cho n s nguyn. Hy chia chng thnh 2 nhm sao cho tch ca tng 2 nhm l ln nht.



Trang 5

Hng dn: Gi T l tng n s nguyn . Gi s ta chia dy thnh 2 nhm, gi S l tng ca
mt nhm, tng nhm cn li l TS v tch ca tng 2 nhm l S*(TS). Bng phng php
nh du ta xc nh c mi s S l tng ca mt nhm (nh bi Market) v tm s S sao
cho S*(TS) t max.

I I I . Bin i xu:

1. M hnh
Cho 2 xu X,F. Xu ngun c n k t X1X2...Xn , xu ch c m k t F1F2...Fm .C 3 php
bin i :
Chn 1 k t vo sau k t th i :I i C
Thay th k t v tr th i bng k t C : R i C.
Xo k t v tr th i. D i
Hy tm s t nht cc php bin i bin xu X thnh xu F.
Hng dn:
Hm mc tiu : f: s php bin i.
D thy s php bin i ph thuc vo v tr i ang xt ca xu X v v tr j ang xt cu xu
F. Do vy ci t cho bang phng n ta s dng mng 2 chiu
Gi L(i,j) l s php bin i t nht bin xu X(i) gm i k t phn u ca X (X(i)=
X[1..i]) thnh xu F(j) gm j k t phn u ca F(F(j) =F[1..j]). D thy F(0,j)=j v F(i,0)=i.
C 2 trng hp xy ra:
Nu X[i]=F[j] :
X1X2...Xi-1
X
i
F1F2...Fj-1
X
i
th ta ch phi bin i xu X(i-1) thnh xu Y(j-1). Do F(i,j)=F(i-1,j-1).
Ngc li, ta c 3 cch bin i:
Xo k t X[i]: X1X2...Xi-1
X
i
F1F2...Fj-1
Fj

Xu X(i-1) thnh F(j). Khi F(i,j)=F(i-1,j)+1.(Cng 1 l do ta dng 1 php xa)
Thay th X[i] bi F[j] : X1X2...Xi-1
Fj

F1F2...Fj-1
Fj

Xu X(i-1) thnh F(j-1). Khi F(i,j)=F(i-1,j-1)+1.
Chn F[j] vo X(i): X1X2...Xi-1XiFj
F1F2...Fj-1
Fj

Xu X(i) thnh Y(j-1). Khi F(i,j)=F(i,j-1)+1.
Tng kt li, ta c cng thc QH:
F(0,j)=j
F(i,0)=i


Trang 6

F(i,j) =F(i1,j1) nu X[i] = Y[j].
F(i,j) = min(F(i1,j),F(i,j1),F(i1,j1))+1 nu X[i]Y[j].

Bi ny ta c th tit kim bin hn bng cch dng 2 mng 1 chiu tnh ln nhau v mt
mng nh du 2 chiu truy vt.

4. Mt s bi ton khc
a) Xu con chung di nht
Cho 2 xu X,Y. Hy tm xu con ca X v ca Y c di ln nht.
Cng thc QH
Gi L(i,j) l di xu con chung di nht ca xu X(i) gm i k t phn u ca X (X(i)=
X[1..i]) v xu Y(j) gm j k t phn u ca Y (Y(j) =Y[1..j]).
Ta c cng thc quy hoch ng nh sau:
L(0,j)=L(i,0)=0.
L(i,j) = L(i1,j1)+1 nu X[i] = Y[j].
L(i,j) = max(L(i1,j), L(i,j1)) nu X[i]Y[j].
Ci t
Bng phng n l mt mng 2 chiu L[0..m,0..n] lu cc gi tr ca hm QH L(i,j).
on chng trnh ci t cng thc QH trn nh sau:
for i:=0 to m do L[i,0]:=0;
for j:=0 to n do L[0,j]:=0;
for i:=1 to m do
for j:=1 to n do
if X[i]=Y[j] then
L[i,j]:=L[i1,j1]+1
else
L[i,j]:=max(L[i1,j],L[i,j1]]);
Nh vy chi ph khng gian ca bi ton l O(n
2
), chi ph thi gian l O(n
2
). C mt phng
php ci t tt hn, ch vi chi ph khng gian O(n) da trn nhn xt sau: tnh L[i,j]
ca bng phng n, ta ch cn 3 L[i1,j1],L[i1,j] v L[i,j1]. Tc l tnh dng L[i]
th ch cn dng L[i1]. Do ta ch cn 2 mng 1 chiu lu dng va tnh (P) v dng
ang tnh (L) m thi. Cch ci t mi nh sau:
for j:=0 to n do P[j]:=0;
for i:=1 to m do begin
L[0] := 0;
for j:=1 to n do
if X[i]=Y[j] then
L[i,j]:=P[j1]+1
else L[i,j]:=max(P[j], L[j1]);
P := L;
end;

c) Bc cu
Hai nc Anpha v Beta nm hai bn b sng Omega, Anpha nm b bc v c M thnh
ph c nh s t 1 n m, Beta nm b nam v c N thnh ph c nh s t 1 n n
(theo v tr t ng sang ty). Mi thnh ph ca nc ny thng c quan h kt ngha vi
mt s thnh ph ca nc kia. tng cng tnh hu ngh, hai nc mun xy cc cy cu
bc qua sng, mi cy cu s l nhp cu ni 2 thnh ph kt ngha. Vi yu cu l cc cy


Trang 7

cu khng c ct nhau v mi thnh ph ch l u cu cho nhiu nht l mt cy cu, hy
ch ra cch bc cu c nhiu cu nht.
Hng dn: Gi cc thnh ph ca Anpha ln lt l a1,a2,am; cc thnh ph ca Beta l
b1,b2,...bn. Nu thnh ph ai v bj kt ngha vi nhau th coi ai bng bj. cc cy cu
khng ct nhau, nu ta chn cp thnh ph (ai,bj) xy cu th cp tip theo phi l cp
(au,bv) sao cho u>i v v>j. Nh vy cc cp thnh ph c chn xy cu c th coi l mt
dy con chung ca hai dy a v b.
Bi ton ca chng ta tr thnh bi ton tm dy con chung di nht, y hai phn t
bng nhau nu chng c quan h kt ngha.

d) Palindrom (IOI 2000)
Mt xu gi l xu i xng (palindrom) nu xu c t tri sang phi hay t phi sang
tri u nh nhau. Cho mt xu S, hy tm s k t t nht cn thm vo S S tr thnh xu
i xng.
Hng dn: Bi ton ny c mt cng thc QH nh sau:
Gi L(i,j) l s k t t nht cn thm vo xu con S[i..j] ca S xu tr thnh i xng.
p s ca bi ton s l L(1,n) vi n l s k t ca S. Ta c cng thc sau tnh L(i,j):
L(i,i)=0.
L(i,j)=L(i+1,j1) nu S[i]=S[j]
L(i,j)=max(L(i+1,j), L(i,j1)) nu S[i]S[j]
Bn c d dng c th kim chng cng thc . Ta c th ci t trc tip cng thc
bng phng php quy c nh. Tuy nhin khi chi ph khng gian l O(n
2
). C mt
phng php ci t tit kim hn (bn c c th tham kho bi bo trn ca thy Trn
Hng), tuy nhin phng php kh phc tp.
Ta c thut ton n gin hn nh sau:
Gi P l xu o ca S v T l xu con chung di nht ca S v P. Khi cc k t ca S
khng thuc T cng l cc k t cn thm vo S tr thnh i xng. p s ca bi ton s
l nk, vi k l di ca T.
V d: S=edbabcd, xu o ca S l P=dcbabde. Xu con chung di nht ca S v P l
T=dbabd. Nh vy cn thm 2 k t l e v c vo S tr thnh xu i xng.

I V. Vali (A)

1. M hnh
Cho n vt, vt i nng ai v c gi tr bi. Hy chn ra mt s vt cho vo bal sao cho tng
khi lng khng vt qu W v tng gi tr l ln nht. Ch rng mi vt c th c chn
nhiu ln.

2. Cng thc
Gi L(i,j) l tng gi tr ln nht khi c chn i vt t 1 n i cho vo bal vi tng khi
lng khng vt qu j. L(n,W) s l p s ca bi ton (l gi tr ln nht c c nu chn
n vt v tng khi lng khng vt qu W).
Cng thc tnh L(i,t) nh sau:


Trang 8

L(i,0)=0; L(0,j)=0.
L(i,j)=L(i,j) nu t<ai.
L(i,t)=max(L(i-1,j), L(i,jai)+bi) nu t ai.
Trong : L(i1,j) l gi tr c c nu khng a vt i vo bal, L(i,jai)+bi l gi tr c
c nu chn vt i.

3. Ci t
Ta c th dng mt mng 2 chiu lu bng phng n, tuy nhin da trn nhn xt rng
tnh dng i ca bng phng n ch cn dng i1, ta ch cn dng 2 mng mt chiu P v L c
ch s t 0 n m lu 2 dng . on chng trnh con tnh bng phng n nh sau.
L[t] := 0; {vi mi t}
for i := 1 to n do begin
P:=L;
for t := 0 to m do
if t<a[i] then L[t]:=P[t]
else L[t] := max(P[t],P[ta[i]]);
end;
Nu k bn s thy rng on trnh trn ch vit ging cng thc QH ch cha ti u.
Chng hn c lnh gn P:=L, sau li c gn L[t]:=P[t] vi cc gi tr t<a[i] l khng cn
thit. Bn c c th t ci tin chng trnh ti u hn.
Chi ph khng gian ca cch ci t trn l O(m) v chi ph thi gian l O(n.m).

4. Mt s bi ton khc

a) Farmer (IOI 2004)
Mt ngi c N mnh t v M di t. Cc mnh t c th coi l mt t gic v cc di t
th coi nh mt ng thng. Dc theo cc di t ng ta trng cc cy bch, di t th i c
ai cy bch. ng ta cng trng cc cy bch trn vin ca cc mnh t, mnh t th j c bj
cy bch. C trn cc mnh t v di t, xen gia 2 cy bch ng ta trng mt cy liu.
ng ta cho con trai c chn cc mnh t v di t tu vi iu kin tng s cy bch
khng vt qu Q. Ngi con trai phi chn th no c nhiu cy liu (loi cy m anh ta
thch) nht.
Hng dn: D thy mnh t th i c ai cy liu v di t th j c bj1 cy liu. Coi cc
mnh t v di t l cc vt, vt th k c khi lng wk v gi tr vk (nu k l mnh
t i th wk=vk=ai, nu k l di t j th wk=bj, vk=bj1). Ta cn chn cc vt, sao cho
tng khi lng ca chng khng vt Q v tng gi tr l ln nht. y chnh l bi ton
xp bal trnh by trn.

b) i tin
t nc Omega ngi ta ch tiu tin xu. C N loi tin xu, loi th i c mnh gi l ai
ng. Mt ngi khch du lch n Omega du lch vi s tin M ng. ng ta mun i s
tin ra tin xu Omega tin tiu dng. ng ta cng mun s ng tin i c l t nht
(cho ti tin nng khi i y i ). Bn hy gip ng ta tm cch i tin.
Hng dn: Bi ton ny kh ging bi ton xp bal (khi lng l mnh gi, gi tr l
1), ch c mt s thay i nh: s ng xu mi loi c chn tu (trong bi ton xp bal
mi vt ch c chn 1 ln) v tng gi tr yu cu l nh nht.



Trang 9

Do ta cng xy dng hm QH mt cch tng t: Gi L(i,t) l s ng xu t nht nu i
t ng ra i loi tin xu (t 1 n i). Cng thc tnh L(i,t) nh sau:
L(i,0)=0;
L(0,t)= vi t>0.
L(i,t)=L(i1,t) nu t<ai.
L(i,t)=min(L(i1,t), L(i,tai)+1) nu t ai.
Cng thc ny khc cng thc ca bi xp bal ch: dng hm min ch khng phi hm
max (v cn tm cch chn t hn) v nu chn ng xu th i th L(i,t)=L(i,tai)+1 (v ta vn
cn c chn ng xu th i na), khc vi khi xp bal l: nu chn vt th i th
L(i,t)=L(i1,tai)+bi v vt i ch c chn mt ln.

V. Nhn ma trn

1. M hnh
Nhn mt ma trn kch thc mn vi mt ma trn np, s php nhn phi thc hin l
m.n.p. Mt khc php nhn cc ma trn c tnh kt hp, tc l:
(A.B).C = A.(B.C)
Do khi tnh tch nhiu ma trn, ta c th thc hin theo cc trnh t khc nhau, mi trnh t
tnh s quyt nh s php nhn cn thc hin.
Cho N ma trn A1,A2An, ma trn Ai c kch thc l di1

di. Hy xc nh trnh t nhn ma


trn A1.A2An sao cho s php nhn cn thc hin l t nht.

2. Cng thc
Gi F(i,j) l s php nhn tnh tch cc ma trn t Ain Aj (Ai.Ai+1....Aj).
F(i,i)=0.
F(i,i+1)=di1
.d
i
.d
i+1
F(i,j) = min(F(i,k)+F(k+1,j)+di1
.d
k
.d
j
v
i k=i+1,i+2,...j1)
Cng thc hi phc tp nn ti xin gii thch nh sau:
F(i,i)=0 l hin nhin.
F(i,i+1) l s php nhn khi nhn Ai v Ai+1. Ai c kch thc di1

di, Ai+1 c kch thc


didi+1, do F(i,i+1)=di1
.d
i
.d
i+1
.

Vi j>i+1 th ta thy c th tnh Ai.Ai+1....Aj bng cch chn mt v tr k no t
ngoc theo trnh t:
Ai.Ai+1....Aj = (Ai..Ak).(Ak+1..Aj)
Ma trn kt qu ca php nhn (Ai..Ak) c kch thc di1

dk, ma trn kt qu ca php nhn


(Ak+1..Aj) c kch thc dk

dj. Vi cch t ta s mt F(i,k) php nhn c kt qu trong


du ngoc th nht, mt thm F(k+1,j) php nhn c kt qu trong du ngoc th hai, v
cui cng mt di1.dk.dj nhn 2 ma trn kt qu . T tng s php nhn ca cch t
l: F(i,k)+F(k+1,j)+di1
.d
k
.d
j
.

Ta chn v tr k cho s php nhn t nht.


Trang10

3. Ci t
Bng phng n l mt mng 2 chiu F lu F(i,j). Ch khi ci t l tnh c F(i,j),
ta phi tnh F(i,k) v F(k+1,j) trc. Phng php n gin lm iu l phng php
quy c nh.
Tuy nhin da vo nhn xt l trong cng thc QH: ji ln hn ki v jk, ta c th tnh
theo trnh t khc: tnh cc phn t F(i,j) vi ji t nh n ln (khng phi l tnh cc gi
tr F(i,j) vi i,j t nh n ln nh vn lm). Vi cch , khi tnh n F(i,j) th ta c F(i,k)
v F(k+1,j).
on chng trnh tnh bng phng n nh sau:
for i:=1 to n do F[i,i]:=0;
for i:=1 to n1 do
F[i,i+1] := d[i1]*d[i]*d[i+1];
for m:=2 to n1 do begin
for i:=1 to nm do begin
j:=i+m; F[i,j]:=oo;
for k:=i+1 to j1 do
F[i,j]:=min(F[i,j],
F[i,k]+F[k+1,j]+d[i1]*d[k]*d[j]);
end;
end;
Vi cch ci t trn,chi ph khng gian l O(n
2
), chi ph thi gian l O(n
3
) (y l bi ton c
chi ph ln nht trong tt c cc bi ton QH thng gp).

4. Mt s bi ton khc

a) Chia a gic
Cho mt a gic li N nh. Bng cc ng cho khng ct nhau, ta c th chia a gic thnh
N2 tam gic. Hy xc nh cch chia c tng cc ng cho ngn nht.
Hng dn: n gin ta coi mi on thng ni 2 nh u l ng cho (nu ni 2
nh trng nhau hoc 2 nh lin tip th c di bng 0).
Gi F(i,j) l tng di cc ng cho khi chia a gic gm cc nh t i n j thnh cc
tam gic. Nu j<i+3 th a gic c t hn 4 nh, khng cn phi chia nn F(i,j)=0. Ngc
li ta xt cch chia a gic bng cch chn mt nh k nm gia i,j v ni i,j vi k. Khi
F(i,j)=F(i,k)+F(k,j)+d(i,k)+d(k,j); d(i,k) l di ng cho (i,k).
Tm li cng thc QH nh sau:
F(i,j)=0 vi j<i+3.
F(i,j)=min(F(i,k)+F(k,j)+d(i,k)+d(k,j) vi k=i+1,...j1).
F(1,n) l tng ng cho ca cch chia ti u.

b) Biu thc s hc (IOI 1999)
Cho biu thc a1a2an, trong ai l cc s thc khng m v l mt php ton + hoc
cho trc. Hy t cc du ngoc biu thc thu c c kt qu ln nht.
Hng dn: Gi F(i,j) l gi tr ln nht c th c ca biu thc aiai+1aj. D thy nu i=j
th F(i,j)=ai, nu j=i+1 th F(i,j)=aiaj. Nu j>i+1 th c th tnh biu thc aiai+1aj bng
cch chia thnh 2 nhm: (aiai+1ak)(ak+1aj), Khi F(i,j)=F(i,k)F(k+1,j).
Tm li, cng thc QH l:


Trang11

F(i,i)=ai
F(i,i+1)=aiai+1
F(i,j)=max(F(i,k)F(k+1,j) vi k=i+1,i+2,..j1).
(Ch l l cc hng t ca dy u khng m v cc php ton l + hoc nn F(i,k) v
F(k+1,j) t max th F(i,k)F(k+1,j) cng t max).

VI . Ghp cp
1.M hnh
C n l hoa sp thng hng v k b hoa c nh s th t t nh n ln. Cn cm k b hoa trn
vo n l sao cho hoa c s th t nh phi ng trc hoa c s th t ln. Gi tr thm m tng ng
khi cm hoa i vo l th j l v(i,j) Hy tm 1 cch cm sao cho tng gi tr thm m l ln nht. Ch
rng mi b hoa ch c cm vo 1 l v mi l cng ch cm c 1 b hoa. (IOI 1999)
2. Cng thc :
Nhn xt rng bi ton nu trn l mt bi ton ghp cp c yu cu v th t nn ta c th
gii quyt bng phng php QH.
Hm mc tiu : f: tng gi tr thm m ca cch cm.
Gi tr thm m ph thuc vo cc hoa v cc l ang c xt nn ta s dng mng 2 chiu
lu bng phng n.
L(i,j): tng gi tr thm m ln nht khi xt n hoa i v l j. Khi tnh L(i,j) hoa ang xt s l
hoa i v l j.
Nu i = j. Ch c mt cch cm L(i,i):= v[1,1]+v[2,2]+...v[i,i]
Nu i>j . Khng c cch cm hp l
Nu i<j : C 2 trng hp xy ra:
Cm hoa i vo l j. Tng gi tr thm m l L(i-1,j-1)+v(i,j). (Bng tng gi tr trc khi
cm cng vi gi tr thm m khi cm hoa i vo l j)
Khng cm hoa i vo l j (c th cm vo l trc j), gi tr thm m ca cch cm l nh
c : L(i,j-1)

3. Ci t :
L[i,j]:= -maxint;
For i:=1 to k do
For j:=i to n do
If i = j then L[i,j]:=sum(i)
else
if i<j then L[i,j]:=max(L[i-1,j-1]+v[i,j],L[i,j-1]);

4. Mt s bi ton khc
a) Cu lc b:( thi chn HSG Tin H Ni nm 2000)
C n phng hc chuyn v k nhm hc c nh s th t t nh n ln. Cn xp k
nhm trn vo n phng hc sao cho nhm c s hiu nh c xp vo phng c s hiu nh,
nhm c s hiu ln phi c xp vo phng c s hiu ln.Vi mi phng c ch hc sinh,
cc gh tha phi c chuyn ra ht, nu thiu gh th ly vo cho gh .Bit phng i c



Trang12

a(i) gh ,nhm j c b(j) hc sinh. Hy chn 1 phng n b tr sao cho tng s ln chuyn gh
ra v vo l t nht.
Hng dn : Khi xp nhm i vo phng j th s ln chuyn gh chnh l chnh lch gia
s gh trong phng i v s hc sinh trong nhm. t v[i,j]:=|a(i)-b(j)|
b) Mua giy ( QG bng B nm 2003)
Trong hiu c n i giy, i giy i c kch thc hi. C k ngi cn mua giy, ngi i cn
mua i giy kch thc si . Khi ngi i chn mua i giy j th lch s l |h(i)-s(j)|. Hy
tm cch chn mua giy cho k ngi trn sao cho tng lch l t nht. Bit rng mi ngi
ch mua 1 i giy v 1 i giy cng ch c mt ngi mua.
Hng dn : Lp cng thc gii nh bi Cu lc b. Ch chng minh tnh ng n ca b
heuristic sau :Cho 2 dy tng dn cc s dng a1a2...an , b1b2...bn. Gi c1c2...cn l mt
hon v ca dy {bn}. Khi : |a(1)-b(1)|+ |a(2)-b(2)|+...+ |a(n)-b(n)|< |a(1)-c(1)|+ |a(2)-
c(2)|+...+ |a(n)-c(n)|

VI I . Di chuyn

1. M hnh
Cho bng A gm MxN . T (i,j) c th di chuyn sang 3 (i+1,j), (i+1,j1) v (i+1,j+1).
Hy xc nh mt l trnh i t hng 1 n hng M sao cho tng cc i qua l ln nht.

2. Cng thc
Gi F(i,j) l gi tr ln nht c c khi di chuyn n (i,j). C 3 c th i n (i,j) l (i
1,j), (i1,j1) v (i1,j+1). Do ta c cng thc QH nh sau:
F(1,j)=A[1,j]
F(i,j)=max(F(i1,j),F(i1,j1),F(i1,j+1))+A[i,j] vi i>1

3. Ci t
Bng phng n l bng 2 chiu F[0..m,0..n]. (Tt c cc trn bin u cho gi tr bng 0).
Qu trnh tnh nh sau:
for i:=1 to m do
for j := 1 to n do
F[i,j]=max[F[i1,j],F[i1,j1],F[i1,j+1]]+A[i,j];
Cch ci t ny cho chi ph khng gian v thi gian u l O(n
2
). Ta c th tit kim khng
gian nh bng cch tnh trc tip trn mng A.

4. Mt s bi ton khc

a) Tam gic (IOI 1994)
Cho mt tam gic gm cc s nguyn khng m. Hy tnh tng ln nht cc s trn ng i
t nh tam gic xung mt im no y tam gic no . Ti mi ta ch c i thng
xung, sang bn tri hoc bn phi.
Hng dn: M t cc phn t ca tam gic s nh mt ma trn, A[i,j] l phn t th j trn
dng i (vi 1iN v 1ji). C 2 c th di chyn n (i,j) l (i1,j1) v (i1,j). Gi
F(i,j) l tng ln nht c th c khi i n (i,j) ta c:


Trang13

F(1,1)=A[1,1]
F(i,1)=F(i1,1)+A[i,1]
F(i,j)=max(F(i1,j1),F(i1,j))+A[i,j]

b) Con kin
C mt ng hnh tr, khi tri phng ra c th l mt bng MxN . Gi tr A[i,j] l lng thc
n c dng i ct j. Mt con kin xut pht t mt mp bn tri ca hnh tr v b
sang mp bn phi. T (i,j) kin c th b sang 1 trong 3 (i1,j+1), (i,j+1) hoc (i+1,j+1).
(Ch : v ng hnh tr nn kin ang dng 1 c th b xung dng M v ngc li). B qua
no th kin mang theo ton b lng thc n . Hy tm ng i m kin kim c
nhiu thc n nht.
Hng dn: x l tnh hung hnh tr, ta lu dng 0 l dng M v dng M+1 l dng 1.
Khi tng t nh bi ton ban u, gi F(i,j) l lng thc n kin c c khi b n
(i,j), ta thit lp c cng thc QH sau:
F(i,1)=A[i,1]
F(i,j)=max(F(i1,j1),F(i,j1),F(i+1,j+1))+A[i,j] vi j>1






































Trang14

You might also like