Một số vấn đề đáng chú ý trong môn tin học

  • Upload
    tmimotw

  • View
    711

  • Download
    2

Embed Size (px)

Citation preview

  • 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: [email protected]

  • MC LC

    Li ni u 2 Duyt nhnh cn 3 Duyt u tin 8 Tm kim chui 12 X l bit 15 Quy hoch ng trng thi 21 Quy hoch ng v tr cu hnh 26 Quy hoch ng trn cy 35 Sp xp topo v ng dng 44 Pht hin chu trnh 49 Chu trnh Euler 53 Chu trnh m v ng dng 56 T mu th 71 Thut tan Ford Bellman kt hp Queue vng 81 Thut ton Dijtra vi cc nh o 84 Mt s ng dng thut ton Dijtra 92 Lung Mincost 99 Cc cng thc hnh hc 104 Mt dng bi Quy hoch ng 107 Trie Tree v ng dng 117 Duyt bng cch chia i tp hp 123 Mt s bi ton v cy khung 127 Tm kim nh phn v ng dng 133 Xp lch cng vic 137 X l s nguyn ln v Hm Mod 167 Heap v ng dng 173 Interval Tree 181 Binary Index Tree 190 Cc li trong Pascal Kinh nghim thi c

  • 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

    - k*Ai smax

    Trong : - 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

  • 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 1 3 2 2 4 2 3 5 2 4 1 2 5 2 2 1 2 10 2 3 9 3 4 10 4 5 8 5 1 9

    TOUR.OUT 1 10 9 5

    5 3 5 2 4 1

    2

    8 2

    4

    1

    2 2

    2

    10

    10

    2

    9

    3

    Bi ton: 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 QBROBOT.OUT 4 3 0 1 1 0 5 1 2 5 4 1 3 4 3 1 4 9 4 2 4 4 1 3 4 5 2

    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 ROADS.OUT 2 11 5 -1 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 1 4 5 2 1 2 1 0 2 3 1 1 3 4 1 0

    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.

    7

  • 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

  • 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 1 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

    n n

    (x1, y1), (x2, y2), , (xn, yn) l vect (x, y) vi x = xi , y = yi i= 1 i= 1

    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

    O x

    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 FIRE.OUT 3 0.0990 0 0 1 4 0 2 5 5 3

    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). i i+j-1

    A u b 1 j

    X u a 1 j

    X 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. - XjXj

    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 XjXj. S dng Next[j] c ngha Next[j] = j nu:

    - X1..j-1 di nht trng vi phn cui ca X1j-1 - XjXj

    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 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 SUBSTR.OUT aaaaa 1 2 3 4 aa

    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:

    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.

    Php cng bit (OR)

    Php o bit (NOT)

    Php nhn bit (AND)

    Php loi tr bit (XOR)

    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:

    Dch chuyn dy sang phi k bt Php dch phi (Shr k) Vd: x = 13 (00001101)

    x Shr 2 = 3 (00000011)

    16

  • Mt s vn ng ch trong mn tin hc

    Dch chuyn dy sang tri k bt Php dch tri (Shl k) 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 2n - 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

  • 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 CHESSCBG.OUT 1111 4 0000 1110 0010 1010 0101 1010 0101

    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

  • 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 5 4 3 3 1 0

    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 SELECT.OUT 3 32 -1 9 3 -4 5 -6 7 8 9 9 7 2

    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 H5NX.OUT 3 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 5 4 3 3 1 0

    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

  • 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

  • Mt s vn ng ch trong mn tin hc

    V d: COWGIRL.INP COWGIRL.OUT 1 2 1 1

    Gi : cho M*N

  • 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 x1x2xt- 10at+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

  • Mt s vn ng ch trong mn tin hc

    V d: SHHV.INP SHHV.OUT 2 1 3 3 4 2 3 1

    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

  • 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 2 3 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

  • 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 09: 1100100 02: 1000110 10: 1100110 03: 1001000 11: 1101000 04: 1001100 12: 1101100 05: 1001110 13: 1101110 06: 1011000 14: 1110010 07: 1011100 15: 1110100 08: 1100010 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 BARCODE.OUT 7 4 3 16 5 5 5 16 1001110 4 1110110 5 1001100 1 1001110 1000100

    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 CATALAN.OUT 4 12 0 1 2 3 2 1 2 1 0 0 1 2 3 2 1 2 1 0 12

    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 2 1 2 1 0

    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 .

    Input :

    Dng u tin l n , s nt ca cy ( n

  • 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 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

  • 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

    1 1

    1 2

    2 1

    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
  • 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 4

    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 CTREE.OUT 8 11 1 2 3 1 3 1 1 4 1 1 5 1 5 6 2 5 7 1 5 8 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

    2 3 4 5

    6 7

    Cy con gc 5

    8

    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). - F[i,x] =

    Trong

    k

    i ' = 1

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

    - 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:

    Bi ton: Cy P nh (PTREE) 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 PTREE.OUT 3 2 2 3 1 2 3 1 2 2 3

    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 = 1

    T B =A + 1

    A, B t gi tr

    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 6 2 1 2 1 3 1 2 5 3 2 6 1 4 4 4 6 4 4 5 5

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

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

    3 5 6 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 3

    6 5 7

    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 STONE.OUT 7 3 1 2 2 3 2 2 5 4 3 2 6 7

    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 LUBENICA.INP LUBENICA.INP 5 7 9 2 3 100 3 6 4 1 2 2 4 3 200 1 7 1 2 3 1 1 5 150 1 3 2 3 4 5 1 3 50 1 2 6 2 7 4 3 2 5 4 1 5 3 2 4 2 4 4 5 6 1 3 5 5 5 9 2 1 2 6 4 1 8 3

    7 6 5 1 2 6 9 1 3 7 8 3 5 9 4

    1 2 7 3

    LUBENICA.OUT LUBENICA.OUT LUBENICA.OUT 100 200 2 6 1 2 50 150 1 4 2 4 50 100 6 6 1 5

    2 2 2 2 2 6 1 4

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

    u

    v

    t

    s

    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

    Bi ton: Cy nh phn (BTR) 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 BTR.OUT L*R 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

    p dng Quy hoch ng:

    F [n ] = 0 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.

    Khi to F [ q [ t ]] =1 F [ i ] =

    Cng thc QHD:

    0( i q [ t ]) F [ i ] = F [ j ] \ j : i + 1 n ; ( i, j) lcung

    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 BIC.OUT BIC.INP BIC.OUT 8 14 6 2 2 inf 6 7 1 2 6 8 2 1 7 5 5 2 5 3 4 8 1 6 5 2 7 5 6 4 1 4 5 2 7 4 8 3

    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 JUMP.OUT 5 4 1 2 8 3 5

    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 trong qua trinh DFS} visited[u]:=true; {danh dau dinh u da duoc tham} 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 duong di}

    end else if inDFS[v] then begin

    {xuat chu trinh xuat phat tai v 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

    5 3

    1 8 4

    2 12

    14

    7 9

    6 13

    10 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

  • Mt s vn ng ch trong mn tin hc

    4 2

    5 6

    1 3 7

    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

    1 3 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

    4 2

    5 6

    1 3 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 CIRARC.OUT CIRARC.INP CIRARC.OUT 2 2 2 3 3 -1 1 2 1 2 1 2 2 1 2 1 2 3

    1 3

    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, N0, 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 4 1 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 CIRCUIT.OUT 7 1 YES 1 1 2 1 7 6 5 1

    2 5 1 5 1 7 2 3

    3 6 2 4 3 4 4 5 6 7 6 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,

  • 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 GRAPH.OUT 5 5 1 1 2 5 1 2 3 4 2 5 2 3 3 4 2 4 2 5

    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 MSTONE.OUT 7 8 1 2 6 7 6 3 1 2 5 2 5 6 2 4 3 2 3 4 2 1 2 3 4 3 4 1 2 4 2

    6 2 5 5 6 5 6 7 6 2 7

    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 POS.OUT 6 7 7 1 1 5 4 2 1 6 3 1 7 4 10 20 5 2 4 1 5 2 1 4 5 3 6 1 6 1 3

    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 PCYCLE.OUT 3 3 2 1 3 2 1 2 2 1 3 -1 2 3 -1

    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 (uv) and (us) 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,

  • 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 MONEY.OUT 5 YES

    1.00 1.10 0.83 0.81 0.85 1 0.007160 0.83 1.00 0.86 1.09 0.81 1 2 4 0.89 0.84 1.00 0.83 1.02 0.84 0.83 1.01 1.00 0.84 1.09 0.84 0.87 0.90 1.00

    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 > e

    0

    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 TRANS.OUT 3 3 1.00 1 2 1 3 2 3 1 1 2 3 1 3 1 1

    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 (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

  • 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 3 1 3

    6 5 3 2

    7 2 4 3

    1 8 1 3

    th ban u 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 u0 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

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

    2

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

    2 1 2

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

    1

    3 2

    B C D F

    A E

    4 3 1 2

    2 3

    1 2

    1 2

    1 2

    G

    4

    - th phng : l th c th biu th cc nh v cc cnh trn mt mt phng sao cho cc cnh v