You are on page 1of 15

QUY C NH

I: Cc bi ton gii bng quy


Xt bi ton m s i tng (hoc tm i tng tt nht, hoc m s i
tng tt nht, hoc lit k cc i tng) tha mn mt s tnh cht no . Ta gi
mi i tng tha mn cc tnh cht m bi ton a ra l 1 nghim ca bi ton. Gi
s X l mt nghim, khi , nu X gm nhiu thnh phn x1,x2...xk hp thnh th bi
ton c th gii bng quy (xt tt c cc kh nng ca x1,x2...xk)
Ni chung th hu ht cc bi ton u gii c bng quy. V d: Bi ton lit
k cc hon v ca n s (nghim X hp thnh t cc thnh phn l cc s nguyn); bi
ton tm ng i tt nht gia 2 nh ca th (nghim X hp thnh t cc thnh
phn l cc nh);

Bi ton m u: m s lng xu nh phn di n, khng c k bit 1 lin


tip. 1 k n 1000. Do kt qu c th rt ln, ch cn in ra theo mod 109+7

II: quy thun ty


Xem on code sau:

Hm Tinh(i,X) tr v s cch xy dng phn cn li ca X c X l 1


nghim ca bi ton (Tc l s nghim ca bi ton c i-1 thnh phn u tin l
X[1..i-1]). phc tp ca cch ci t trn l O(n*2n)
, ti mi bc ta phi gi hm Check() kim tra c ni c j vo sau X hay
khng. Thay v gi hm Check() mt O(n), ta c th va i va tnh c s: S lng
bit 1 tn cng ca X => Ch mt O(1) check. Ngoi ra, ta cng khng cn lu li X
na, v vic lu ch Check() m ta dng cch khc. on code c vit li:

Vi cch ci trn, phc tp cn O(2n) (B qua c hm Check())


2

III: S trng lp cc bi ton:


Ta thy ngay, vi mi b (i,s) hm Tinh() tr ra 1 gi tr xc nh. Nh vy s
bi ton l khng qu iMax*sMax <=n2. Trong khi s b (i,X) l n*2n => S bi ton
gim xung rt nhiu!!!
Gii thch cho iu ny kh n gin: C rt nhiu cu hnh X cho cng mt s
s. V d: 000000 v 110110 u cho s=0. V cc X cho cng mt s th c th xem nh
nhau v ta ch gii mt X ri p t kt qu cho cc X khc. VD minh ha:
k=5,n=100. Xt 2 ln gi hm: Tinh(10,000000111) v Tinh(10,101100111). R rng
s cch xy dng phn cn li ca X1 v ca X2 l bng nhau. Mi cch xy dng tip
cho X1 u p dng c cho X2 v ngc li, ni cch khc bi ton Tinh(i,X1) v
Tinh(i,X2) c chung li gii. Vic c nhiu bi ton c cng 1 li gii nh th gi l s
trng lp cc bi ton
Nh vy vi mi X, ta ch quan tm n s bit 1 tn cng ca n (s), v th s i
din c cho c xu X (ch cn s, ta s c s xy dng phn cn li ca X). S
(b s) s nh th gi l s i din (b i din).

IV: Mng nh, quy c nh


C 2 cch vit trn u c phc tp l O(2n) (v quy n bc, mi bc c
2 kh nng)
Theo cch vit th 2, s c rt nhiu ln gi n Tinh(i0,s0). Mi ln gi, ta li
phi tnh li; mc d kt qu so vi ln gi trc khng c g thay i! Ta ti u thut
ton bng cch: Vi mi b (i,s), thay v gii chng nhiu ln, ta lu li li gii khi
gi n ln tip theo ta c ngay kt qu m khng cn tnh li. Kt qu cho Tinh(i,s) s
c lu vo mng F[iMax,sMax]; gi l mng nh

Thy ngay s bi ton l n2, mi bi ton gii mt O(2) (gi n 2 bi ton con). V
khng c bi no c gii 2 ln => PT O(2*n2) (PT gim xung ng k )
Cch y mng nh vo quy kh trng lp nh th gi l quy c mng nh
hay quy c nh

V: Cc bc gii bi ton bng quy c nh


1. Tm cu hnh nghim ca bi ton. VD bi ton trn c cu hnh nghim l
X=x1,x2..xn vi xi l cc bit
Nh ni, ta s xy dng nghim X bng cch xy dng tng thnh phn xi
ca n (theo mt th t no ty bi ton)
2. Tm cc rng buc ca nghim. VD bi ton trn rng buc nghim l khng c
k bit 1 lin tip v di l n.
3. Kim sot rng: cc rng buc u c tha mn trong qu trnh xy dng
nghim, bng cch:
o Tm b ch s s m t cc tnh cht (m ta quan tm) ca phn nghim
xy dng (Nh VD trn, ta quan tm 2 tnh cht l di phn nghim
xy dng v s bit 1 tn cng ca n)
o B ch s phi c s m bo vic xy dng cc thnh phn tip
theo ca nghim s tha mn c cc rng buc
o Thng th vi mi rng buc, ta s dng 1 ch s kim sot (Nh VD
trn, s s kim sot rng di mi dy bit 1 lin tip u nh hn k)
4. Vit hm quy xy dng tng thnh phn mt ca nghim. B ch s
tha mn rng buc s c truyn i
5. y mng nh vo

VI: Mt s bi ton minh ha

1. Cu hnh nghim: X x1 x2 ...xn vi

xi ['A',' Z ']

2. Cc rng buc ca nghim:


o Xu S xut hin trong X
3. B ch s m t phn nghim xy dng, gip kim sot rng buc:
o i: V tr m ta ang xy dng
o ok: Boolean: Phn nghim xy dng c cha /cha cha xu S
o Match: Cho bit v tr trn xu S m phn X xy dng khp c
4. 5. (Hy c code v phiu :v )

(VD kh n gin, khng c tip nu cha hiu)

y, ta coi s l mt xu. Gi n l di xu B (n 16). Cho rng A cng c di


n v c th c s 0 ng u
1. Cu hnh nghim: X x1 x2 ...xn vi

xi [0,9]

2. Cc rng buc ca nghim:


o Th t t im xu X ln hn hoc bng xu A
o Th t t im xu X nh hn hoc bng xu B
o X khng cha s 13
3. (B ch s gip) Kim sot rng buc:
o i: V tr m ta ang xy dng
o oka: Boolean. Oka=True cho bit phn nghim xy dng c th t t
in ln hn hn xu A. oka=False cho bit phn nghim xy dng l
tin t ca A (ging ht phn u ca A)
o okb: Boolean. Okb=True cho bit phn nghim xy dng c th t t
in nh hn hn xu B. okb=False cho bit phn nghim xy dng l
tin t ca B
o pre: Boolean cho bit X[i-1] c phi bng 1 hay khng
4. 5.

y, ta coi s l mt xu. Gi n l di xu B (n 19). Cho rng A cng c di


n v c th c s 0 ng u
1. Cu hnh nghim: X x1 x2 ...xn vi xi [0,9]
2. Cc rng buc ca nghim:
o Th t t im xu X ln hn hoc bng xu A
o Th t t im xu X nh hn hoc bng xu B
o Xu X khng cha xu i xng no
3. (B ch s gip) Kim sot rng buc:
o i: V tr m ta ang xy dng
o ok: Boolean cho bit tnh n i-1, s X c ngha cha (hay ch cha
ton s 0)
7

o oka: Boolean. oka=True cho bit phn nghim xy dng c th t t


in ln hn hn xu A. oka=False cho bit phn nghim xy dng l
tin t ca A (ging ht phn u ca A)
o okb: Boolean. okb=True cho bit phn nghim xy dng c th t t
in nh hn hn xu B. okb=False cho bit phn nghim xy dng l
tin t ca B
o V rng buc th 3, ta thy ch cn X khng cha xu i xng di 2
hoc di 3 th s khng cha xu i xng. Tht vy, v nu X cha
xu i xng di 4, th n s cha xu di 2 hoc 3 (bng cch
xa u 2 bn xu cn li 2 hoc 3 k t). => Cch tha rng buc:
pre1,pre2: cho bit 2 k t ngay trc xy dng (pre1 l X[i-2],
pre2 l X[i-1], quy c X[-1]=X[0]=-1)
4. 5.

Gi n l s ch s ca N (n 19). Cho rng A,B cng c n ch s v c th c s 0


ng u.
A a1a2 ...an
vi
B b1b2 ...bn

1. Cu hnh nghim: X

ai , bi [0,9]

2. Rng buc ca nghim:


o A,B khc 0
o Th t t in ca A nh hn hoc bng ca B
o Tng A+B=N
o A hoc B cha 6 hoc 8
3. Cch tha rng buc
o Rng buc 1 c th b qua, khi c th ta s m tha b (0,N)
o Rng buc 2 c th b qua, khi mi nghim (A,B) s c m 2 ln
(tr b A=B) => Sau khi tnh, ta x l kt qu 1 cht
o Ta s xy dng t xn v x1, dng bin nho (nh) kim sot (ai+bi+nho)
mod 10=ni
o Dng bin ok: Boolean: Phn nghim xy dng c cha 6 hoc 8?
9

4. 5.

VII: Mt vi b ch s v th t xy dng gip tha mn rng buc


1. Th t t in ln hn/nh hn 1 xu cho trc: Xy dng nghim theo chiu
xui, s dng bin ok: boolean
2. Tng/hiu/tch bng mt s cho trc: Xy dng nghim theo chiu ngc, s
dng bin nho: LongInt
3. Xu i xng: Xy dng nghim t 2 u li
4. Hp thnh t cc rng buc trn:
o Nu th t xy dng nghim nh nhau, b ch s l b cc b trn
o Nu khc nhau th t xy dng, tm 1 th t hp l, thay i mt s b
VD1: Khi buc phi xy dng nghim theo chiu ngc m phi
kim sot rng buc v th t t in, ta dng bin ok: boolean
(bn c t ngh, bi ton VD: vuive9 c ng)
VD2: Khi xy dng nghim theo chiu xui m phi kim sot
tng / hiu / tch, ta dng bin PhaiNho: LongInt buc bc tnh
tip theo nh mt lng bng PhaiNho
...
Trong thc t s c rt nhiu loi rng buc khc nhau. Cch duy nht l lm
nhiu bi tp quen :3
10

VIII: Bi tp vn dng
Cc bi tp ca Thy c ng
https://www.mediafire.com/?ccp2e11c9ib69m8

FSTR
A gi l xu con ca B nu ta c th thu c A bng cch xa bt 1 s k t
ca B (c th khng xa k t no)
2 k t gi l lin tip nu m Ascii ca chng hn km nhau 1 n v. Mt xu
gi l xu p nu n ch cha cc k t latin thng v khng cha 2 k t gn nhau
no l lin tip nhau
Cho xu S ch cha cc k t latin thng. m s xu p di n nhn S lm
xu con, in ra phn d khi chia cho 109+7
FSTR.inp
Dng u cha s nguyn dng n
Dng th 2 cha xu S
FSTR.out

Mt s nguyn duy nht l kt qu bi ton

FSTR.inp
4
thai
Length(S), n 100

FSTR.out
1

Hng dn: Lin h: Thai9cdb@gmail.com


IX: Bi ton th t t in
Pht biu: Cho mt tp cc i tng so snh c, tm th ca mt phn t X cho
trc / tm phn t c th t k cho trc
Bi ton m u:

11

FSTR
A gi l xu con ca B nu ta c th thu c A bng cch xa bt 1 s k t
ca B (c th khng xa k t no)
2 k t gi l lin tip nu m Ascii ca chng hn km nhau 1 n v. Mt xu
gi l xu p nu n ch cha cc k t latin thng v khng cha 2 k t gn nhau
no l lin tip nhau
Cho xu S ch cha cc k t latin thng. Ta vit cc xu p di n nhn S
lm xu con ln bng theo th t t in, in ra xu th m trn bng
Gii:
Ta ni xu nghim l xu p di n nhn S lm xu con. Gi X l xu cn tm
(xu nghim th m). Ta s xy dng tng v tr ca X v kim sot c c ng m-1
xu nghim nh hn X. Xem m ngun:

Hm Tinh(i,k,Pre) tr v s cch xy dng tip t i thu c xu nghim nu


nh phn nghim xy dng khp n v tr k trn xu S v k t i-1 l Pre

12

Hm Lankq(i,k,Pre) s xy dng v tr th i ca X; k v Pre l 2 c tnh ca


phn X xy dng, n c truyn i m t X m khng cn For li
Gi s X[i]=j0. Khi , ta m tt c xu nghim c dng X[1],X[2]X[i-1],j
vi j<j0 {tj0}. Tt c nhng xu nghim nh th u c th t t in nh hn X, nn
kim sot s lng ca chng nh hn m, ta s tm ra j0 bng cch for j t A n
Z, cho n k t j u tin c tj >= m th j=j0
nh gi phc tp:
o Hm Tinh() mt O( n*Length(S)*26*26 )
o Hm Lankq() mt O(n*26)
X: Bi ton th t t in bi ton m
Bn cht bi ton th t t in chnh l bi ton m: tm th t t in
ca nghim X no , ta m s nghim nh hn X. Nh VD trn, nu bi l cho
xu X, tm th t ca n trn bng th ta gii nh sau:

Kt qu l Res+1
Bi ton th t t in trong bi ton m: Mt lp cc bi ton m c dnh
lu n th t t in, nh cch m ti cp, chng ta thng dng bin ok: Boolean
kim sot. VD: Bi PFNUM ( mc VI), ta dng oka,okb kim sot th t t
in xu X. Thay vo , ta a bi ton v 2 bi ton con: Vit tt c s PFNUM ln
bng, tm th t xu B v xu A-1 (kt qu s l hiu ca chng) => Hm Tinh()
nhanh gp 4 ln !!!
c bit, khi c nhiu truy vn, nh cch lm c ta phi FillChar li mng F ri
tnh li, VD bi N13 ( mc VI). Cn nu dng cch th t t in: Ta vit tt c
cc nghim ln bng, vi mi truy vn [A,B], ta tm th t ca B, ca A-1 (kt qu l
hiu ca chng). phc tp cho hm Tinh() gim i 4 ln, v mi truy vn tr li
trong O(n*10)

13

Bi tp vn dng:

FNUMBER

Hng dn, b test: Thai9cdb@gmail.com

XI: Quy hoch ng v quy c nh


Mi bi ton gii c bng quy hoch ng u gii c bng quy c nh.
VD bi QBMAX c th vit nh sau:
14

iu ngc li khng ng! Trong nhiu trng hp, quy c nh chy nhanh
hn quy hoch ng (v c th n khng gii ht tt c cc bi ton con). Mt s bi
ton, tm ra cng thc quy hoch ng, c s quy hoch ng nhng th t gii cc
bi ton rt kh thit k vng for; khi , quy c nh l 1 gii php tuyt vi!
Cng c 1 s bi ton, s bi ton con rt ln khin mng lu tr li gii khng , do
dng QH l khng kh thi; quy c nh cho php gim bt khng gian mng
lu tr - chu thit mt t trong phc tp tnh ton
Tuy vy, QH cng khng mt i ch ng ca mnh, v n ci t kh n
gin, trc quan, v trong nhiu trng hp c th bn s khng mun truy vt trong
quy c nh! Do cn linh hot trong s dng QH v quy c nh, cn chn cch
lm trc quan d hiu, d ci t!

Thanks!
Question?

15

You might also like