You are on page 1of 54

Collected & Converted by ng Tin Cng

Chng I:

QUY HOCH NG

Cc Bi ton quy hoch ng chim mt v tr kh quan trng trong vic t chc hot ng v sn xut (Nht l vic gii quyt cc bi ton ti u). Chnh v l m trong cc k thi hc sinh gii Quc Gia v Quc T chng ta thng gp loi ton ny. T tng ch o ca phng php ny da trn nguyn l ti u ca BellMan pht biu nh sau : "Nu mt dy cc la chn l ti u th mi dy con ca n cng ti u " Ngoi ra khi thit k cc thut ton quy hoch ng ta thng dng k thut "Phn vng x l", Ngha l gii quyt mt bi ton ln ta chia n thnh nhiu bi ton con c th gii quyt c lp. Trong phng php quy hoch ng, vic th hin nguyn l ny c y n cc . gii quyt cc bi ton quy hoch ng ta c th theo s sau : a.) Lp h thc : Lp h thc biu din tng quan quyt nh ca bc ang x l vi cc bc x l trc . H thc ny thng l cc biu thc quy do d thy hin tng trn b nh. b.) T chc d liu chng trnh : T chc gi liu tnh ton dn theo tng bc. Nn tm cch kh quy. Thng thng, trong cc bi ton tin chng ta hay gp i hi mt vi mng ln. c.) Lm tt : Lm tt thut ton bng cch thu gn h thc quy hoch ng v gim kch thc min nh. Cc thao tc tng qut ca quy hoch ng : 1. Xy dng hm quy hoch ng 2. Lp bng lu li gi tr ca hm 3. Tnh cc gi tr ban u ca bng 4. Tnh cc gi tr cn li theo kch thc tng dn ca bng cho n khi t c gi tr ti u cn tm 5. Dng bng lu truy xut li gii ti u . Trong cc li hng dn cc bi ton, chng ti s a cc bn i theo tng phn nh s gii quyt trn. Chng ta c th phn loi cc bi ton quy hoch ng theo nhiu cch. cc bn tin theo di, ti xin phn loi theo cch lu (tc l t chc chng trnh) l cc mng mt chiu hay nhiu chiu. I. Dng Mt: a Phn dng bi ton thng gp trong loi ny l loi c cng thc truy hi nh sau : Mind[I]:=Min Mind[J] +Gi Tr JI ;J=0..I Hoc l : Maxd[I]:=MaxMaxd[J]+Gi Tr JI ;J=0..I . Chng ta c th thy r rng i vi cc bi ton m chng ta s xt sau y : Bi Ton 1: bi : Bi i tin

-1-

Collected & Converted by ng Tin Cng

"Mt ngn hng c N loi tin mnh gi A[1],A[2],...A[N] vi s lng tin mi loi khng gii hn. Cn chi tr cho khch hng mt s tin M ng. Hy cho bit cn bao nhiu tin mi loi chi tr sao cho s lng t l t nht. D liu vo t File : Tien.Inp nh sau : Dng u tin ghi 2 s N,M . ( N<=100,M<=10000) Dng th hai ghi N S : A[1], A[2],...A[N] Kt qu: ghi ra File : Tien.Out nh Sau : Dng u tin ghi s t cn dng, Nu khng th i c th ghi s 0 v khng cn thc hin tip. Dng tip theo ghi s n s biu hin cho s t cn dng cho mi loi. " Hng Dn : Chng ta gi Mind[I] l s lng t t nht tr s tin I, nh vy bi ton yu cu chng ta xc nh Mind[M]. Ta nhn thy rng c s tin l I th chng ta s c cc cch to thnh s tin khi chng ta dng thm mt t L: I-A[K1],I-A[K2],...I-A[KJ] ,Trong KJ L s Tho mn m A[KJ]<I. Vy s tin ti u nht l chng ta cn tm thy trong cc Mind[I-A[K1]]+1, Mind[I-A[K2]]+1,...Mind[I-A[KJ]]+1 . C Cng thc quy hoch ng nh sau: Mind[I]:=MinMind[I-A[J]]+1, J Tho Mn : A[J]<I T chng ta c th tc quy hoch ng nh sau : Procedure Quy_Hoach_Dong; Begin Mind[0]:=0; For I:=1 To M Do Begin Min:=Maxint; For J:=1 To N Do If (Mind[I-A[J]]+1<Min)And (A[J]<I) Then Begin Min:=Mind[I-A[J]]+1; Luu[I]:=J; End; Mind[I]:=Min; End; End; Trong mng luu l mng cha ng l loi tin no cn dng cui cng n s tin I . nh vy chng ta c cch tm li cc loi tin cn dng bng mng Luu nh sau : J:=Luu[M]; I:=M; While J<>0 Do Begin Write(A[J]);
-2-

Collected & Converted by ng Tin Cng

I:=I-J; J:=Luu[I]; End; nh vy chng ta s gii quyt bi ton trn mt cch ngn gn v n gin. tng tnh t sng to ca cc bn, k t bi ton sau chng ti ch nu qua cc th tc v cng thc quy hoch ng. Nu cc bn khng gii quyt c vn nh th c th tham kho phn li gii ca chng ti. Tip sau y l mt lot bi ton tng t bi ton 1 m thc cht chng ch l mt dng bi c nh, n ch bin dng i v li l nhng u ging nhau v bn cht . Bi ton ni im (Wires) Bi Ton 2: : " Trn hai ung thng song song L1 v L2, Ngi ta nh du trn mi ng N im, Cc im trn ng thng L1 c nh s t 1 n N, t tri qua phi, cn cc im trn ng thng L2 c nh s bi P[1],P[2],...P[N] cng t tri qua phi, trong P[1],P[2],..P[N] l mt hon v ca cc s 1,2,...N Ta gi cc s gn cho cc im l s hiu ca chng. Cho php ni hai im trn 2 ng thng c cng s hiu. Yu Cu : Tm cch ni c nhiu cp im nht vi iu kin cc on ni khng c ct nhau. D Liu : Vo t File BaiToan2.Inp: Dng u tin cha s nguyn dng N(N<=1000) Dng th hai cha cc s P[1],P[2],....P[N] Kt Qu Ghi Ra File : BaiToan2.Out Dng u tin cha K l s lng on ni tm c Dng tip theo cha K s hiu ca cc u mt ca cc on ni c ghi theo th t tng dn. V D : WIRES.INP WIRES.OUT 9 5 253874691 23469 " Hng Dn : Gi Maxd[I] l s on thng ti a ca cc cp ni ca cc im t 1I. Chng ta s c cng thc quy hoch ng nh sau : Maxd[I]:=MaxMaxd[P[J]]+1;J:=0..ViTri(I) Trong ViTri (I) L hm cho bit V tr Ca I Trong Dy P[1],P[2],..P[N] ( Tc l I=P[X] Th ViTri(I)=X); Bng cch phn tch hon ton tng t nh bi ton 1 m ta c cng thc truy hi nh trn . Cc bc gii bi ton c th c ni gn trong hai th tc v hm : Funtion ViTri(I:Integer):Integer; Var J:Integer; Begin
-3-

Collected & Converted by ng Tin Cng

For J:=1 To N Do If P[J]=I Then Begin ViTri:=J; Exit; End; End; Th Tc Quy Hoch ng nh sau : Procedure Quy_Hoach_Dong; Begin Maxd[0]:=0; For I:=1 To N Do Begin Max:=0; For J:=0 To ViTri(I) Do If Maxd[P[J]]>Max Then Begin Luu[I]:=p[J]; Max := Maxd[P[J]]; End; Maxd[I]:=Max; End; End; Mng Luu l mng luu[I] lu li im trc I m tip s ni I. Chnh v iu o chng ta c th ghi ra ngc li mt cch d dng. Hon tng t, chng ta c th gii quyt tng t cho cc bi ton sau : Do Chi Bng Xe But Bi Ton 3: : " Trn mt tuyn ng thnh ph du lch ni ting X c t But cng cng phc v vic i li ca du khch. Bn xe but c tng Km ca tuyn ng. Mi ln i qua bn xe u cho du khch ln xung. Mi bn u c xe xut pht t n, nhng mi xe ch chy khng qu B Km k t bn xut pht ca n. Hnh khch khi i xe s phi tr tin cho di on ng m h ngi trn xe. Cc ph cn tr i on ng di i l Ci (I=1,2,..B). Mt du khch xut pht t mt bn no mun i do L Km trn tuyn ng ni trn. Hi ng ta phi ln xung xe nh th no tng s tin phi tr cho chuyn do chi bng xe but l nh nht. D Liu : Vo T File : Bus.Inp Dng u tin cha 2 s nguyn dng B,L (B<=100,L<=10000) Dng th hai cha B s Nguyn dng C1,C2,..Cn , c ghi cch nhau bi du trng. Kt Qu : Ghi ra File Vn bn : Bus.Out Dng u tien ghi chi ph tm c, v s ln xung xe K .
-4-

Collected & Converted by ng Tin Cng

Dng tip theo ghi K s l di ca cc on ng ca K ln ngi xe. V D: BUS.INP BUS.OUT 147 3 3 6 6

10 15 12 21 31 40 49 58 69 79 90 101 " Hng Dn : Gi Mind[I] L s tin t nht cn tr khi ngi cn i I Km . Chng ta s c cng thc quy hoch ng : Mind[I]:=MinMind[I-J]+C[J]; J: J<=I ; Gi tr Mind[L] l ga tr cn tnh . Dy Con Tng Cc i Bi Ton 4: : " Cho mt dy s nguyn dng A1,A2,.. An. Hy ta bt mt s t nht cc phn t ca dy s nguyn v gi nguyn th t cc phn t cn li sao cho dy s cn li l mt dy tng dn. Ta gi dy s nguyn tng dn cn li sau khi ta bt mt s phn t l dy con ca dy cho. D Liu : Vo t File BaiToan4.Inp : Dng u tin ghi s N l s phn t (N<=10000) Dng tip theo ghi N s l cc s nguyn ca dy Kt Qa : Ghi Ra FIle : BaiToan4.Out Dng u tin ghi s phn t ca dy con ln nht Dng th hai ghi cc s ca dy cn tm . Hng Dn : Gi Maxd[I] l s phn t ln nht ca dy con di nht ca cc phn t t 1I . Chng ta s c cng thc quy hoch ng : Maxd[I]:=MaxMaxd[J]+1; Vi J=1..I-1 , v A[J]<A[I] B Tr Phng Hp Bi Ton 5: bi : C N cuc hp nh s t 1 n N ng k lm vic ti mt phng hi tho. Cuc hp i cn c bt u ti thi im Ai v kt thc ti thi im Bi (i=1,2,...N). Hai cuc hp bt k ch c nhn phc v nu cc khong thi gian lm vic tng ng ch c th c giao nhau ti u mt. Hy tm mt lch cho phng hi tho c th phc v c nhiu cuc hp nht . D Liu: Vo c cho trong file Activity.Inp gm : Dng u tin ghi gi tr N . Dng th i trong s N dng tip ghi 2 s nguyn Ai v Bi cch nhau t nht mt du trng .
-5-

Collected & Converted by ng Tin Cng

Kt Qu : Cn ghi ra file Activity.Out nh sau : Dng u tin ghi gi tr K l s cuc hp ti a c th b tr c K dng tip theo, mi dng ghi s hiu ca cuc hp c phc v theo trnh t lch b tr. Gii Hn kch thc : N khng qu 10000 Cc gi tr Ai, Bi (i=1,2,..N) khng qu 32000. V D: Activity.Inp Activity.Out 5 3 13 1 24 4 16 5 35 79 Hng Dn : Chng ta gi Maxd[i] l s cuc hp nhiu nht c th b tr nu c cuc hp i trong . Ta s c : Maxd[i]:=MaxMaxd[j]+1; j=0..i-1 ; Sau s cuc hp nhiu nht c th b tr l gi tr ln nht trong s cc Maxd[i]. Ch : bi ton trn c th thay i cch ra : coi mt cuc hp l mt ln ghi m chng hn. Chnh v th thc cht bi CDWrite v bi ny l mt (nu cc bn c bi CDWrite, nu cha th cc bn ch cn lm bi ny thi). Bi ton 6: Vng Quanh Th Gii ( Thi Hc Sinh Gii Quc Gia 2000-2001 - Bng A )

- : Trn tuyn ng ca xe ch khch du lch vng quanh th gii xut pht t bn X c N khch sn nh s t 1 n N theo th t xut hin trn tuyn ng, trong khch sn N l a im cui cng ca tuyn ng m ti x bt buc phi dng. Khch sn I cch a im xut pht Ai Km (I=1,2,..N);A1<A2<...<AN m bo sc kho cho khch hng, theo tnh ton ca cc nh chuyn mn, sau khi chy c P (Km) xe nn dng li cho khch ngh khch sn. V th, nu xe dng li cho khch ngh khch sn sau khi i c Q(Km) th li xe phi tr mt lng pht l : ( Q-P)^2. V D : Vi N=4 ,P=300,A1=250, A2=310, A3=550 ,A4=590 . Xe bt buc phi dng li khch sn 4 l a im cui cng ca hnh trnh. Nu trn ng i li xe ch dng li ti khch sn th 2 th lng pht phi tr l : (310-300)^2+((590-310)-300)^2=500 Yu Cu : Hy xc nh xem trn tuyn ng n khch sn N, xe cn dng li ngh nhng khch sn no tng lng pht m li xe phi tr l nh nht.
-6-

Collected & Converted by ng Tin Cng

D Liu : Vo t File vn bn c tn Bai5.Inp : Dng u tin cha s nguyn dng N(N<=10000); Dng th hai cha s nguyn dng P (P<=500); Dng th ba cha cc s nguyn dng A1,A2,A3,..An (hai s lin tip cch nhau t nht bi 1 du cch) (Ai<=2000000 ,i=1,2,..N) Kt Qu : Ghi ra File Vn Bn Bai5.Out: Dng u tin ghi Z l lng pht m li xe phi tr ; Dng th hai ghi K l tng s khch sn m li xe cn dng li cho khch ngh; Dng th ba ch cha ch s ca K khch sn m xe dng li cho khch ngh (Trong nht thit phi c khch sn th N) V D: BAI5.INP BAI5.OUT 4 50 300 2 250 310 550 590 24 Hng dn : Gi Mind[i] l lng pht t nht nu ngi li xe dng li a im i. Chng ta s c cng thc truy hi : Mind[i]:=MinMind[j]+sqr(a[i]-a[j]-p); j=1,..i-1 Tuy nhin bi ton ny cha phi l c gii quyt. Bi v n cn qu nhiu vn cn gii quyt khc : Lng pht c th rt ln, vt qu longint m nu cha trong real th s khng th lu c mng c 10000 phn t. Chnh v th chng ta cn gii quyt tt d liu bi ton ny. Nu N=10000 th chng trnh s phi chy : (9999+1)*9999/2 . Tc l rt lu. Chnh v th cc bn cn phi hon thnh mt cch ng n cc iu kin trn . Hon ton bin dng v ngn ng din t bi ton, nhng c rt nhiu bi ton n r hn v thut ton ny, chng ta xt cc bi ton sau : Car Bi ton 7 : bi : Cho mt on xe h tng c n chic i trn mt ng mt chiu c b tr theo th t t 1 n n. Mi mt xe trong on tren th c mt vn tc l V v trng lng l W. Khi i qua mt chic cu c trng ti khng qu l P th phi chia on xe trn thnh cc nhm sao cho tng trng lng ca mi mt nhm l khng qu P. Thm vo na l cc nhm phi i tun t. Ngha l nhm th i ch i c khi m ton b xe ca nhm th i-1 qua cu. Vn tc ca mi mt nhm l hon ton khc nhau v ph thuc vo xe c tc chm nht c th c. D Liu: vo t file Car.Inp gm : Dng u tin ghi 3 s n( n 1000) v P,L th hin cho s xe, trng lng ti a ca cu v L l di ca cu.
-7-

Collected & Converted by ng Tin Cng

N dng k tip , mi dng gm 2 s W v V th hin cho trng lng v vn tc ca xe Kt Qu : ra file Car.Out nh sau: Dng u tin l tng thi gian nh nht on xe qua cu Dng k tip gm cc s X1,X2,...Xk th hin: Nhm 1l t 1..X1,nhm 2 l t X1+1 .. X2,... V D : car.Inp car.Out 10 100 100 25 40 25 25 1 3 6 8 10 50 20 70 10 12 50 9 70 49 30 38 25 27 50 19 70 Hng Dn : Gi Mind[i] l tng thi gian nh nht cho on xe c s hiu t 1 n i qua cu . Ta c cng thc truy hi : Mind[i]:=MinMind[j]+Time(j,i) ; j = 1,..i-1 Vi time(j,i) l thi gian cho on xe gm t chic th j cho ti chic th i qua cu cng mt lc (c ngha l nu vt qu trng ti th Time(j,i)= . ) Khuyn Mi Bi ton 8 : bi : Vo ngy No-en, N ca hng trong thnh ph tng qu cho cc khch hng. Cc ca hng c tn 1 .. N , N<=100. Mt ln tng qu c th hin bng ba s nguyn dng X , Y , Z vi ngha ca hng X ti thi im Y tng mn qu gi tr Z . Vi mi ln tng qu, ngi mun nhn phi c mt khng mun hn thi im pht qu v cc v hng u rt chu o n mc thi gian nhn qu xem nh bng 0. Khng c hai ln tng qu no din ra ti mt thi im . An mun tn dng ngy hy vng c nhiu mn qu hp dn. An xut pht t nh ti thi im 0 v phi quay v n nh khng mun hn thi im M. Hy lp cho An k hoch i nhn qu sao cho tng s gi tr thu c l ln nht. An bit c thi gian cn i t nh n tng ca hng v gia cc ca hng cng nh chi ph trn tng chng ng tng ng. Thi gian v chi ph trn mi chng ng l ti u, khng nht thit nh nhau theo hai chiu. Trong khi i t mt ca hng ny n m ca hng khc, An khng gh thm qua ca hng no khc. Tng gi tr An thu c bng tng gi tr qu tng c tr i tng chi ph m An phi tr trn cc chng ng t nh n ca hng u tin, t ln lt n cc ca hng khc v quay v n nh .
-8-

Collected & Converted by ng Tin Cng

D liu : vo c cho bi file vn bn : KM.INP trong dng th nht ghi ba s N , M , K m K l s ln pht qu, N<=100 , M<=60000, K <= 5000. Tip theo l K dng, dng th i trong K dng ny ghi ba s X , Y , Z th hin mt ln pht qu v ta quy c gi ln pht qu th i. Sau l N + 1 dng, dng th i ghi N + 1 s m s th j l thi gian i t ca hng i n ca hng j. Cui cng l N + 1 dng, dng th i trong n + 1 dng ghi N + 1 s, m s th j l chi ph i t ca hng th i n ca hng th j. Nh ca An xem nh ca hng rh N + 1. Vi mi ca hng i, thi gian v chi ph t i n i l bng 0. Tng gi tr ln nht AN thu c khng qu 2 t. Kt Qu : ghi ra file : KM.OUT nh sau : Dng th nht ghi s S l tng gi tr An thu c Tip theo l mt s dng, mi dng ghi s hiu mt ln nhn qa m theo trnh t An ln lt n nhn. V D : KM.INP KM.OUT 2 13 5 1 2 10 2 3 20 1 4 25 1 5 10 2 10 10 0 2 2 2 0 3 1 1 0 0 1 1 1 0 1 1 1 0 52 1 3 4 5 Hng Dn : Cc ca hng ny sp xp trn mt con ng thng theo trt t tng dn ca thi gian khuyn mi. Nu ca hng no c nhiu ln khuyn mi th chng ta coi n nh mt ca hng khc mi hn . Bi ton s tr thnh mt bi ton mi : Trn ng i trn con ng th chng ta cn gh thm nhng ca hng no s tin khuyn mi l ln nht. Gi Maxd[i] l s tin khuyn mi ln nht nu ta n nhn khuyn mi ti thi im i (bi v ti mt thi im th ch c mt ca hng khuyn mi , nn coi n nh mt nh x duy nht). Nu khng nhn khuyn mi ti thi im i th s tin s l 0. v ta s tm theo cng thc : Maxd[i]:=Maxmaxd[j]+tin nhn c t i ti j - tin mt i; j=1,..i-1 vi iu kin ti thi im j th phi c mt khuyn mi no ; maxMaxd[i] ;i=1,..k chnh l s tin cn ly . XY THP Bi Ton 9: C N khi hnh hp ch nht. Ngi ta mun xy mt ci thp bng cch chng cc khi ny ln nhau. m bo an ton, cc khi c t theo nguyn tc: + chiu cao ca mi khi l kch thc nh nht trong ba kch thc, + cc mp ca cc khi c t song song vi nhau sao cho khng c phn no ca khi nm trn b cha ra ngoi so vi khi nm di. Hy tm phng n xy dng thp t c cao nht. D liu vo c cho trong file Tower.INP gm: + dng u l s N, + N dng sau, mi dng ghi 3 s nguyn dng l kch thc mt khi . Cc khi c nh s t 1 theo trnh t xut hin trong file. Kt qu ghi ra file Tower.OUT theo quy cch: + dng th nht ghi s M l s lng khi dng xy thp,
-9-

Collected & Converted by ng Tin Cng

+ M dng tip theo ghi cc khi xp t y thp ln nh, mi dng gm 4 s theo th t: K A B C, trong K l s hiu khi , A l kch thc chn lm y nh, B l kch thc chn lm y ln, C l kch thc chn lm chiu cao. Cc s trn cng mt dng trong cc file c ghi cch nhau t nht mt du trng. Gii hn s khi khng qu 5000 v cc kch thc ca cc khi khng qu 255. Th d: Tower.INP Tower.OUT 97 5 54 4 81 1 54 2 25 1 54 2 72 9 21 3 35 5 5 9 5 5 55 5 5 14 2 4 2 41 5 7 5

Hng Dn: Chng ta thy rng mt hnh nu di mt hnh khc th cc kch thc ngang v dc u ln hn hoc bng kch thc trn. Chng ta khng mt tng qut, quy nh chiu ca cc thp theo mt chiu nht nh (v d : di l di c kch thc ln nht trn ba kch thc, rng l ln th hai v cui cng l cao). Sp xp cc thp theo chiu gim dn ca din tch. Sau th Maxd[i] l cao nht nu xp thp th i trn cng (trong dy sau khi sp xp). Maxd[i]:=maxmaxd[j]+cao[i] ; vi j =1,..i-1 v rng [j]>=rng[i],di[j]>=di[i]; Sau ta ly gi tr ln nht ca cc Maxd[i] chnh l cao ca thp cn xp. RenTing Bi ton 10 : Bi: Ti mt thi im 0, ng ch mt my tnh nng sut cao nhn c n t hng thu s dng my ca N khch hng. Cc khch hng I cn s dng my t thi im Di n thi im Ci ( Di,Ci l cc s nguyn v 0<Di<Ci<109) v s tr tin s dng my l Pi ( Pi nguyn , 0<=Pi<=107) Bn cn xc nh xem ng ch cn nhn phc v nhng khch hng no sao cho khong thi gian s dng my ca 2 khch hng c nhn phc v bt k khng uc giao nhau, ng thi tng s tin thu c l nhiu nht. D Liu : Vo T File vn bn RENTING.INP : Dng u tin ghi s N (0<N<=1000) Dng th I+1 trong s n dng tip theo ghi 3 s Di,Ci,Pi cch nhau bi du cch(I=1,..N) Kt qu : Ghi Ra file Vn Bn RENTING.OUT : Dng u tin ghi hai s nguyn dng theo th t l s lng khch hng nhn phc v v tng tin thu c t vic phc v h Dng tip theo ghi ch s ca cc khch hng c nhn phc v . V D: RENTING.INP RENTING.OUT RENTING.INP
- 10 -

RENTING.OUT

Collected & Converted by ng Tin Cng

3 150 500 150 1 200 100 400 800 80 513 500 100 325 200 600 900 600

2 180 2 3 2 1100 2 4

4 400 821 800 200

Hng Dn : Sp xp theo th t tng dn ca Di. Sau gi Maxd[i]laf tng s tin nhn c khi phc v ngi th i ( trong dy sau khi sp ) . Lc ta s c : Maxd[i]:=MaxMaxd[j]+Pi; j=1..i-1; v Di>=Cj; Vy s tin ln nht l = Max maxd[i];i=1..n. II. Dng Hai : Cc Bi ton dng ny thng c chng trnh ging thut ton Ford-Bellman. Repeat Ok:=True ; IF tm c Mind[i] no tho mn Mind[i]>Mind[j]+gi tr t j n i Then Begin Ok:=False ; Mind[i] :=Mind[j]+gi tr t j n i End ; Until Ok ; Tng t cho Maxd [i].V qu trnh j n i l mt qu trnh tho mn iu kin ca bi ton .

Apower Bi Ton 11: Bi : Chng ta nh ngha hm AR(m,n), vi m,n l nhng s t nhin (0<n<10, 0<m<1000) l mt s t nhin sao cho khi chng ta biu din n bng cc php ton : +,,*, / v cc php ton ghp s, th s nh nht cn thit cc ch s n c kt qu l s m l gi tr ca hm AR(m,n) . cho cc bn d hiu chng ta xt hm AR(42,2)=4 v ta c cch biu din : 2*22-2=42 hay chng ta c AR(22,1)= 4 v : 11*(1+1)=22. Bi ton t ra cho chng ta l hy tm AR(m,n) ,vi m,n bit trc . D liu : Vo t file vn bn Apower.Inp gm nhiu b s m,n. Mi dng vit mt b s. Kt Qu: Ghi ra file vn bn Apower.Out gm nhiu dng, mi dng ng vi kt qa ca mi dng ca file input. V D: APOWER.INP APOWER.OUT 42 2 22 1 6 3 4 4 3 Hng Dn : Chng ta s gi Ar[m,n] l gi tr hm Ar(m,n). Ta c th tc quy hoch ng : Fillchar(Ar,Sizeof(Ar),Maxint);
- 11 -

Collected & Converted by ng Tin Cng

Ar[0]:=2 ; Ar[n]:=1; RePeat Ok := True ; For i:=1 to (m+1)*n do if Ar[m,i]<>maxint then For j:=1 to (m+1)*n do Begin If (Ar[i]+Ar[j]<A[i+j])then Begin Ok:=false ; A[i+j]:=a[i]+a[j]; End ; If (Ar[i]+Ar[j]<Ar[i-j])and(i>j)then Begin Ar[i-j]:=Ar[i]+Ar[j]; Ok:=False ; End ; If (Ar[i]+Ar[j]<A[i*j])then Begin Ok:=False ; Ar[i*j]:=Ar[i]+Ar[j]; End ; If (I mod j = 0 ) and (Ar[i]+A[j]<A[i div j]) then Begin Ok:=False ; Ar[i div j]:=Ar[i]+Ar[j]; End ; End ; Until OK ; Nhng trnh nhng trng hp c bit nh :333 vi 3 th Ar(333,3)=3 . Cho nn trc ht chng ta tnh Ar[3..3,3]:=s s 3 c trong n. Ri sau th ta s dng th tc trn . Gi Tr Biu Thc Bi Ton 12: Bi : Gi thit X,Y l hai s nguyn dng. K hiu Sx l tng cc ch s trong dng biu din c s 10 ca X , Dmax_y v Dmin_y l ch s ln nht v nh nht trong dng biu in c s 10 ca Y. Php tnh hai ngi # vi cc ton hng nguyn dng X,Y c nh ngha nh sau: ( X#Y)=Sx*Smax_y+Dmin_y V D : (30#9)=3*9+9=36 hay (9#30)=9*3+0=27 Vi X cho trc ,mt s biu thc hp l l:
- 12 -

Collected & Converted by ng Tin Cng

(X#X) v ((X#X)#X) v (X#(X#X)#(X#X)#X) ... K hiu kt qu biu thc l K. Cho X v K(0<X,K<109-1) cn xc nh s t nht m cc php # t c th xy dng biu thc thuc dng ang xt vi X cho kt qu K v biu thc biu din ca biu thc. D Liu : vo t file vn bn Bai16.Inp dng th nht cha s X , dng th hai cha K Kt Qu : Ghi ra file vn bn Bai16.Out : dng th nht cha s m, dng th hai cha biu thc . V D: BAI16.INP 718 81 BAI16.OUT 3 ((718#(718#718))#718)

Hng Dn : Ta thy 0<X,K<109 nn ta c : 1<SX<=9*9 ; 1<=Dmax_x<=9 ; 0<=Dmin_x<=9 ; Nn 1<=X*X<=9*9*9+9=738 ; Vy gi tr ca mt biu thc hp l bt k phi nm trong on [1,738], y chnh l ct li li gii cho bi ton. Nu K nm ngoi khong ny th chc chn v nghim. Xt biu thc X#X c 1 du #, d thy c 3 cch m rng biu thc 1 du # ny l : - X#(X#X) ; (X#X)#X ; (X#X)#(X#X) ; Gi s B l mt biu thc to bi X v n du # th th c 3 cch m rng biu thc ny : X#B ( n+1 du #) ; B#X ( n +1 du #) ; B#B ( 2 * n+1 du # ) . Ta lp mng mt chiu Mind[1..738] trong Mind[i] cho bit s php # t nht to t X. Ta c cc bc gii quyt bi ton : - Bc 1 : Khi to mng A[1..738]:=0 nh du cc gi tr to c t biu thc X v #, Khi to mng Mind nhn cc gi tr Maxint . Bc 2 : Tm T=X#X ; A[T]:=1 ; Mind[T]:=1 ; Bc 3 : Thc hin cho n khi mng Mind khng b thay i : For i:=1 to 738 do If A[i]=1 then Begin T:=X#i; If Mind[T]>Mind[i]+1 then begin Mind[T]:=Mind[i]+1 ;A[T]:=1 ; end ; T:=i#X ; If Mind[T]>Mind[i]+1 then begin Mind[T]:=Mind[i]+1 ;A[T]:=1 ; end ; T:=i#i ; If Mind[T]>2*Mind[i]+1 then begin Mind[T]:=2*Mind[i]+1 ;A[T]:=1 ; end ; End ;
- 13 -

Collected & Converted by ng Tin Cng

Bi Ton 13 :

c a ( Thi Hc Sinh Gii Quc Gia 2001-2002 - Bng B )

bi : Cc k s ca mt cng ti tin hc ang th nghim ch to a t c dung lng thng tin cc ln . a c nhiu ng ghi v khong cch gia 2 ng ghi lin tip nhau l rt nh. Cc ng ghi c nh s t 0 n N, t ngoi vo trong. i vi loi a ny, vic dch chuyn u c t mt ng ghi sang mt ng ghi k tip l rt kh m bo chnh xc cao cho cc chuyn ng c hc trn khong cch qu b do khng c thi gian khi ng v phanh u c. Ngi ta thit k mch iu khin vi 2 lnh : Lnh T v lnh L . Lnh T- a u c tin ln pha trc P ng ghi ( P>0). V d u c ang ng ghi K. Sau khi thc hin lnh T th n chuyn ti ng ghi s K +P. Lnh T khng p dng c khi K+P>N. Lnh L a u c li Q ng ghi (Q>0). Nu u c ang ng ghi K, sau khi thc hin lnh L th u c s chuyn ti ng ghi K-Q. Lnh L khng p dng khi K-Q<0. di chuyn u c t ng ghi u ti ng ghi V c th phi p dng mt dy cc lnh T,L. Dy m lnh T (L) lin tip nhau c vit gn dng Tm(Lm) , trong m - s nguyn dng , m>=1 . Yu Cu : Vi N,P,Q cho trc (),N<=20000,0<P,Q<N) hy ch ra dy t nht cu lnh L , T a u c t ng ghi U ti ng ghi V (0<=U,V<=N) hoc cho bit khng tn ti dy cu lnh nh vy . D Liu : Vo t file vn bn DISK.INP gm L dng 5 s nguyn N , P , Q , U , V , cc s trn mt dng cch nhau t nht mt du cch . Kt Qu : a ra file vn bn DISK.OUT : Dng u tin l s nguyn K - s cu lnh cn thc hin , K=-1 nu khng tn ti cch a u c v ng ghi V . Dng th 2 cha dy cu lnh cn thc hin , trc tn lnh T(L) phi c mt du cch . V D : DISK.INP 10 5 3 7 6 DISK.OUT 3 L2 T1

Hng dn : Chng ta c Mind[i] l s ln thc hin cc lnh chuyn a t nht khi chuyn t U n i . ta thc hin nh sau : Khi to ton b Mind[i] = maxint ; Mind[u]:=0 ; Repeat Ok:=True ; For i:=0 to n do if mind[i]<>maxint then
- 14 -

Collected & Converted by ng Tin Cng

Begin If (i-q>0)and(mind[i]+1<mind[i-q] then begin mind[i-q]:=mind[i]+1; luu[i-q]:=-q ; ok:=false ; end ; If (i+p<=n)and(mind[i]+1<mind[i+p]) then Begin Mind[i+p]:=mind[i]+1 ; Ok:=False ; Luu[i+p]:=p; End ; End ; Until Ok ; Ta dng mng luu[i] khi ln ngc tr nn d dng hn . Busways Bi Ton 14 : bi : Mt h thng cc xe but c nhim v chuyn ch hnh khch i li gia mt s ga sao cho m bo tnh lin thng hai chiu gia cc ga ny. H thng bao gm mt s tuyn ng, mi tuyn ng bao gm mt s ga khc nhau theo th t m xe but i qua. Xe but thuc tuyn ng no ch chy trn tuyn ng , ln lt qua cc ga thuc tuyn cho n ht, sau li quay li chy theo hng ngc li. C th c mt s ga chung cho mt s tuyn ng. Mt hnh khch mun i t ga u n ga cu , c th i trn mt tuyn hoc phi chuyn tuyn mt s ga cui sao cho s ln phi chuyn tuyn l t nht. Nu tn ti nhiu phng n nh vy, hy tm phng n i qua t nht . D liu : vo trong file : Busways.inp gm : Dng u tin l s tuyn ng Cc dng tip theo, mi dng m t mt tuyn ng, gm mt chui k t vit lin nhau, mi k t m t mt tn ga theo ng th t ca cc ga trn tuyn (ch cc ga trn cng mt tuyn l khc nhau, nhng cc ga trn cc tuyn khc nhau c th trng nhau, tn ga l mt k t bt k hin th c trong bng m ASCII) Dng tip theo l s hnh trnh cn tm Cc dng tip theo , mi dng mt t mt hnh trnh cn tm, gm mt cp k t vit lin nhau, xc nh tn ga u v tn ga cui . Gi thit rng d liu cho l hp l, khng cn kim tra. Gii hn kch thc 100 cho s cc tuyn ng, v 50 cho s cc ga trn mt tuyn ng. Kt qu : Ghi ra file BusWays.Out : Trong hnh trnh c vit trn mt dng, gm cc k t biu din tn ga vit theo th t c i . Cc tn ga ny c vit thnh tng nhm theo tuyn ng : nu thuc cng mt tuyn ng th vit lin nhau,
- 15 -

Collected & Converted by ng Tin Cng

nu sn tuyn ng khc th vit cch nhau mt du trng, tn ga chung c vit lp li . V D : BUSWAYS.INP 3 ABC DBE GAEH 2 HC GB BUSWAYS.OUT HEA ABC GA AB

Hng dn : u tin chng ta coi mt ga l mt nh c s hiu l v tr n trong bng m Ascii. Sau ta to mt th c cc cung m nu cc ga trong mt tuyn th c di 1 nu tri tuyn th di 1000. Sau dng thut gii gi Ford-Bellman (ging cc bi ton trn) . tm ng i ngn nht . Hon ton tng t cc bn c th gii quyt bi ton sau : ( bi 5 - Phn nng cao , bi tp lp trnh pascal - Nguyn Xun My ) Bi ton ph : Bi ton 15 : C M tuyn xe but, M<=20. Mi tuyn xe c cho bi dy tn cc bn lin tip t u n cui ca tuyn , mi tuyn xe u i c hai chiu. Tn bn l cc s nguyn dng. Cc tuyn xe c th c cc bn chung. Nu i t mt bn n mt bn tip theo trn cng tuyn th mt 1 ng cn nu ang i trn mt tuyn m chuyn sang tuyn khc ti cng mt bn i n bn trn tuyn khc th mt thm 3 ng. Cho tn hai bn I v J. Hy tm mt hnh trnh i t I n J sao cho: 1. Chi ph l t nht 2. S ln chuyn tuyn t nht. D liu vo c cho bi file INP.B5 trong dng th nht ghi hai s nguyn dng I, J; trong cc dng tip theo (khng qu 20 dng), mi dng ghi khng qu 20 s nguyn dng khc nhau tng i th hin mt tuyn xe. Cc tuyn xe nhn s hiu t 1, 2, 3, . . . k t trn xung di. Kt qu ghi ra file OUT.B5 nh sau: Cu 1: dng th nht ghi chi ph, dng th hai ghi hnh trnh t I n J bng cch vit cc bn lin tip trn hnh trnh, mi bn ghi nh sau: tn bn/s hiu tuyn. V d bn 25 trn tuyn 6 s ghi 25/6. Cu 2: dng th ba ghi s lng tuyn xe, dng th t ghi hnh trnh t I n J tng t nh cu 1. III. Dng ba : lu d d liu v cch tit kim bin : Bi ton 16 : Palindrome ( thi Quc T nm 2000 )

Bi : Palindrome l mt xu i xng tc l mt xu m c t tri sang phi cng nh c t phi sang tri . Bn cn vit mt chng trnh vi mt xu cho trc , xc nh s t nht cc k t cn chn vo xu nhn c mt palindrome .
- 16 -

Collected & Converted by ng Tin Cng

V d : Bng cch chn 2 k t vo xu Ab3d ta nhn c mt palindrome . Tuy nhin nu chn its hn 2 k t th khng th to c mt palindrome . D liu: Vo file input : PALIN .IN Dng th nht gm mt s nguyn l di N ca xu , 3<=N<=5000. Dng th hai gm mt xu c di N. xu gm cc k t l cc ch ci hoa A..Z, cc ch ci thng : a.. z v cc ch s thp phn 0..9 ,cc ch ci hoa v thng xem nh khc nhau . D liu : Ra file output : PALIN.OUT Dng mt l s lng cc k t cn chn vo V d: PALIN.IN PALIN.OUT 5 Ab3bd 2 Hng Dn : Gi xu d liu vo l s . Ta s tm chiu di ca dy con i xng cc i trch t s l s1 . Khi s k t cn thm s l =Length(s)-Length(s1) .Dy con y c hiu l dy thu c t s bng cch xo i mt s phn t trong s . Gi Maxd[i,j] l chiu di ca dy con di nht thu c t on s[i..j] . Ta s c : Nu S[i]=S[j] th Maxd[i,j]=Maxd[i+1,j-1]+2 ; Nu S[i]<>S[j] th Maxd[i,j]:=Max Maxd[i,j-1] , Maxd[i+1,j] Tc l chng ta cn tnh Maxd[1,n]. Nhn vi d liu N<=5000 th iu ny tr thnh hoang tng . Ta c th nhn nhn r hn th thy rng chng ta c th hon ton tit kim c rt nhiu b nh : Gi Luu[0..N+1] l mng cp nht cc bc thc hin . Ti bc cp nht th j ta c Luu[j]:=Maxd[i,j]. Ta s c li bng truy hi nh sau : Nu S[i]=S[j] th Luu[i]:=Luu[i+1] c + 2 Nu S[i]<>S[j] th Luu[i]:=Max Luu[i] c , Luu[i+1] c Ta tnh t di ln , tc l tnh Luu[i] vi i:=n ..1 th D[i+1] c s b ghi . V lc dng tg lu li . Th tc quy hoch ng nh sau : procedure qhd; begin for j:=1 to n do begin luu[j]:=1; tg:=0; for i:=j-1 downto 1 do begin t:=luu[i]; if s[i]=s[j] then luu[i]:=tg+2 else
- 17 -

Collected & Converted by ng Tin Cng

Luu[i]:=max(Luu[i],Luu[i+1]); tg:=t; end; end; end; Nh vy s k t cn thm vo : N-Luu[1]. Sign Bi ton 17 : Bi : Gim c mt cng ti trch nhim hu hn mun xin ch k ca ng kin trc s trng thnh ph ph duyt d n xy dng tr s lm vic ca cng ty . ng kin trc s trng ch k vo giy php khi b th k ca ng ta k duyt vo giy php . B th k lm vic ti tng th M ca mt to nh c nh s t 1 n M , t thp ln cao . Mi tng ca to nh c N phng c nh s t 1 n N , t tri sang phi . Trong mi phng ch c 1 nhn vin lm vic . Giy php ca b th k k duyt khi c t nht mt nhn vin mi tng ca to nh k xc nhn . Mt nhn vin bt k c th ch k xc nhn vo giy php khi c t nht mt trong cc iu kin sau c tho mn : Nhn vin lm vic tng 1 Giy php c k xc nhn bi mt nhn vin lm vic phng lin k ( hai phng c gi l lin k khi ch s phng sai khc nhau mt n v ) Giy php c k xc nhn bi nhn vin lm vic phng cng s phng tng di . Mi nhn vin khi k xc nhn u phi c mt chi ph nht nh . hy ch ra cch xin ch k sao cho xin c ch k ca ng kin trc s trng m chi ph b ra l t nht . D liu : Vo t file Sign.Inp nh sau : Dng u tin ghi M , N ( 1 <= M <=100 ; 1<=N<=500) ; Dng th i trong s M dng ghi N s biu din chi ph khi phi k phng . ( Cij<=109 ) ( Tng chi ph cn tr l t hn 109 ) Kt qu : Ghi ra file : Sign.Out nh sau : Dng u tin ghi hai s F , K theo th t l chi ph cn tr v s lng phng cn i qua Cc dng tip theo ch ghi s ca cc phng theo th t cn i qua , mi ch s ghi trn mt dng . V D : Sign.Inp Sign.Out 3 4 10 10 1 10 2 2 2 10 1 10 10 10 853321

Hng Dn : Bi Ton thc cht l Bi Ton con gin i t mt no trn trn cng n mt hng cui vi chi ph i l nh nht .
- 18 -

Collected & Converted by ng Tin Cng

Gi Mind[i,j] l s tin t nht i n (i,j) . Ta c : Mind[i,j]:=MinMind[i-1,j];Mind[i,j-1];Mind[i,j+1] +C[i,j]; Nhng ta thy rng trong chng trnh ny th ta c phi lu di dng mt mng [100*500] Of longint , thm vo lu li ng i th ta phi dng cc bin lu to , m nh th th d liu s khng p ng c . Sau y l cch lm chng trnh p ng c iu y : Type tang tru tr Var = Array [0..maxN] of Longint ; = Array [0..maxN] of Integer ; = Array [0..maxM] of ^tru ;

C ,Mind : Array [0..maxM] of ^tang ; try ,trx : tr ; Procedure Quy Hoch ng ; Begin new(d[1]) ; new(trx[1]) ; new(try[1]) ; Fillchar(trx[1]^ ,sizeof(trx[1]^) ,0) ; Fillchar(try[1]^ ,sizeof(try[1]^) ,0) ; For i := 1 to N do Mind[1]^[i] := c[1]^[i] ; For u := 2 to M do Begin new(Mind[u]) ; new(trx[u]); new(try[u]) ; Fillchar(trx[u]^ ,sizeof(trx[u]^) ,0) ; Fillchar(try[u]^ ,sizeof(try[u]^) ,0) ; For i := 1 to N do Begin Mind[u]^[i] := Mind[u-1]^[i]+c[u]^[i]; trx[u]^[i] := u-1 ;try[u]^[i] := i; End ; For i := 1 to N-1 do If Mind[u]^[i]+c[u]^[i+1] < Mind[u]^[i+1] then Begin Mind[u]^[i+1] := Mind[u]^[i] + c[u]^[i+1]; trx[u]^[i+1] := u ;try[u]^[i+1] := i; End ; For i := N downto 2 do If Mind[u]^[i]+c[u]^[i-1] < Mind[u]^[i-1] then Begin Mind[u]^[i-1] := Mind[u]^[i] + c[u]^[i-1] ; trx[u]^[i-1] := u ;try[u]^[i-1] := i; End ; dispose(c[u-1]) ;dispose(Mind[u-1]) ;
- 19 -

Collected & Converted by ng Tin Cng

End ; Chng ta thy d liu c ng m mt cch kho lo m khng tn b nh . Cn ta ch quan tm n kt qu cui cng l Mind[m]^ . Cn ng i th c lu bi hai bng Trx v Try . Chnh v th chng ta c th ng i nhng Mind[i] m khng dng n trong qu trnh quy hoch v sau ( Cng ng lun mng C [i] khng cn thit ) . Vi cch gii quyt thng minh nh trn , cc bn hon ton gii quyt rt nhiu bi ton quy hoch ng i hi nhiu b nh khc . RTicket Bi ton 18 : Bi : Trn tuyn ng st t thnh ph A n thnh ph B i qua mt s ga .Tuyn ng c th biu din bi mt on thng ,cc nh ga l cc im trn n . Tuyn ng bt u t A (c s hiu l 1 ) v B l ga cui cng . Gi v i li gia hai nh ga ch ph thuc vo cc khong cch gia chng . Cch tnh gi v c cho trong bng sau: Khong cch gia hai nh ga -X Gi v 0<X<=L1 C1 L1<X<=L2 C2 L2<X<=L3 C3 V i thng t nh ga ny n nh ga khc ch c th t mua nu khong cch gia chng khng vt qu L3 .V th nhiu khi i t ga ny n ga khc ta phi t mua mt s v. V d , trn tuyn ng st cho bi on thng sau : Ga: 1 2 3 4 L1 L2 L3 i t ga 2 n ga 6 khng th mua v i thng . C nhiu cch t mua v i t ga 2 n ga 6 .Chng hn, t mua v t ga 2 n ga 3 mt chi ph C2 v sau mua v i t ga 3 n ga 6 mt chi ph C3 v chi ph tng cng t mua v i t ga 2 n ga 6 theo cch ny l C2+C3 .Lu rng mc d khong cch t ga 2 n ga 6 l 2*L2 nhng khng th t mua v vi gi v i t ga 2 n ga 6 l 2*C2v mi v ch c gi tr i li gia hai ga no . Yu Cu: Tm cch t mua v i li gia hai nh ga cho trc vi chi ph mua v l nh nht . D Liu: Vo t file vn bn Rticket.Inp : Dng u tin ghi cc s nguyn L1,L2,L,C1,C2,C3 (1 L1< L2<L3 109,1 C1<C2<C3 109 ) theo ng th t va lit k.
- 20 -

5 6

Collected & Converted by ng Tin Cng

Dng th hai cha s lng nh ga N (2 N 10000). Dng th ba ghi hai s nguyn S,T l cc ch s ca hai nh ga cn tm t mua v vi chi ph nh nht i li gia chng Dng th i trong s N-1 dng cn li ghi s nguyn l khong cch t nh ga A (ga 1) n nh ga th i+1 (i=1,2,..N-1) . Chi ph t nh ga A n nh ga cui cng B khng vt qu 109 . Kt Qu : Ghi ra file Rticket.Out l chi ph nh nht tm c. V D: RTICKET.INP 3 6 8 20 30 40 7 26 3 7 8 RTICKET.OUT 13 15 23 70

Hng Dn : Tuy cng thc truy hi ca bi ton ny ht sc n gin , nh cc cng thc truy hi ca cc bi ton trc , nhng d liu bi ton l rt ln . Chnh v th vng lp ca quy hoch ng tr nn phi t hn . p dng trong bi ton ny chng ta ch vic so sch vi cc ga gn nht ca n c khong cch nh hn L1,L2,L3 . cc cng on chnh ca bi ton c th c m ta nh sau : Procedure ReadFile; Begin readln(f1, l1, l2, l3, c1, c2, c3); readln(f1, n); readln(f1, x1, x2); if (x1<x2) then begin i:=x1; j:=x2; end else begin i:=x2; j:=x1; end; x1 := i; x2 := j; A^[1] := 0; for i:=2 to n do begin readln(f1,t); a^[i]:=t; end;
- 21 -

Collected & Converted by ng Tin Cng

End; Procedure Xuli; Begin i1 := x1; i2 := x1; i3 := x1; for i:=x1+1 to x2 do begin while (A^[i]-A^[i1])>l1 do inc(i1); while (A^[i]-A^[i2])>l2 do inc(i2); while (A^[i]-A^[i3])>l3 do inc(i3); B^[i] := B^[i3] + c3; if (i<>i2) then if (B^[i2]+c2)<B^[i] then B^[i] := B^[i2] + c2; if (i<>i1) then if (B^[i1]+c1)<B^[i] then B^[i] := B^[i1] + c1; end; IV. Cc Bi ton Khc : RoBot1 Bi ton 19 : Bi : thm him , kho st cc vng t nguy him ngoi tri t , ngi ta ch to cc RoBt n gin , hoat ng theo chng trnh ci sn hoc theo lnh iu khin pht i t Tri t . Cc lnh iu khin l : L : r tri ( so vi hng ang chuyn ng) ,R: r phi (so vi hng ang chuyn ng ), U: tin thng ,D:quay lui. Vi mi lnh rbt di chuyn mt n v khng cch .Vng cn kho st c k thnh li vung v cc nt li c to nguyn . Ban u rbt c a ti im c to (X0,Y0) v hng theo chiu song song vi mt trc to . Nhim v l phi a rbt ti im c to (X1,Y1) bng ng K lnh di chuyn ( 0<=| X0-X1| ,|Y0Y1|<=16,0<K<=16). Hy xc nh xem tn ti bao nhiu chng trnh khc nhau c th ci t vo b nh ca rbt. D Liu : Vo t file vn bn : Bai18.Inp gm 5 s nguyn K,X0,Y0,X1,Y1 cc s thuc phm vi Integer , cch nhau t nht mt du cch . Kt Qu : Ghi ra file vn bn : Bai18.Out mt s nguyn xc nh s lng chng trnh tm c. V D: BAI18.INP BAI18.OUT 30010 9 Hng Dn :
- 22 -

Collected & Converted by ng Tin Cng

Chng ta thy rng n (i,j) th c 4 t c th n n l : ( i,j+1) , (i,j-1) , (i-1,j) , (i+1,j) . Gi Count[i,j,k] l s cch i c th n (i,j) t xut pht (x0,y0) sau k bc . Ta s c : Count [i,j,k]:= Count[i , j-1 , k-1 ] + Count[i , j+1 , k-1] + Count[i-1 , j , k-1 ] + Count [i +1 , j , k - 1]; Nhng trnh trng lp nn chng ta phi xut pht c bit : cho i , j chy t (xo,yo) v sau k bc , ri sau li cho (i,j) chy t (xo,yo) v trc .

RoBot2 Bi ton 20 : Bi : Mt xng sn xut c mt l mt hnh ch nht kch thc M x N , M , N l cc s nguyn dng khng ln hn 100 . Mt bng c chia thnh cc vung n v gm cc dng nh s t 1 n M t trn xung di v cc ct c nh s t 1 n N nh s t tri sng phi . Cui ca lm vic , thu gom cc sn phm , ngi ta dng mt s con robot phi xut pht t [1,1] . robot ch c th chuyn ng t tri sang phi , trn xung . Khi robot n ni t my no , n c th thu ht mi sn phm ca my . Robot kt thc hnh trnh ti [ M,N] . Yu Cu : Hy b tr mt s t nht robot thu gom sn phm . D Liu : Nhp vo t file Robot.inp trong ng th nht ghi hai s M , N . Tip theo l M dng m t mt bng ca xng ,mi dng ghi N s ch gm cc s 0 / 1 m 0 c ngha l tng ng khng c my , ngc li ghi s 1 . Kt Qu : Xut ra file robot.out trong : dng th nht ghi s r l s ro bot cn dng . R dng tip theo ghi hnh trnh ca cc con robot .ch gm cc k t lin tip : D , R : D c ngha l i xung , R c ngha l sang phi . V d : Robot.Inp Robot.Out 10 12 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 00000000100000000010010000000100001111000 111111 000100 100000000100 100000000100 5 DDDDDDDDDRRRRRRRRRRR RDDDDDDDRRRRRRRRDDRR RRRRRDDDDDDRRRRRRDDD RRRDDDDRRRRRRRRRDDDD RRRRRRRDDDDDDDDDDRRR Hng Dn : Gi cc l s Robot t nht cn dng . Dng mng p[i,j] lu li cc gi tr . Ta s c xt vi cc hng i , th ta c cc bc sau : FillChar(P, SizeOf(P), 0); cc:=0 ; Vi hng i :
- 23 -

Collected & Converted by ng Tin Cng

+ bc i: Ta tm v tr cui cng ca hng ny c cha my cn thu gom ( k hiu mm ) . Nu khng c th quy nh : Ok:=False nu c th Ok:=True ; + bc ii : Xt cc v tr trong hng theo th t gim dn ca ct ( j ) Nu P[i-1,j]>0 th : Nu j <= mm th : P[i,mm]:=P[i-1,j]; Ok:=False ;thc hin tip bc i Nu j>mm th : P[i,j]:=P[i-1,j] Nu cui cng m Ok:=True th cc:=cc+1 ; tc l tng s robot ln mt con . C nh vy thc hin chng ta s ra c s con robot t nht cn dng . Truyn Tin Bi ton 21 : ( Thi hc sinh gii quc gia 2000-2001-bng B ) Bi : Ngi ta cn truyn n gi tin c nh s t 1 n n t mt im pht n mt im thu . thc hin vic truyn tin c th s dng m ng truyn c nh s t 1 n m .Bit rng nu truyn j gi tin theo ng truyn tin j th phi tr l Sij ( Sij l mt s nguyn dng , Sij 32767 , i=1,2...m , j=1,2...n ) Yu Cu : Hy xc nh s lng gi tin cn truyn theo mi ng truyn tin vic truyn tin n gi tin c thc hin vi tng chi ph phi tr l nh nht . D Liu : Vo t file Bl3.Inp nh sau : Dng u tin cha hai s nguyn dng n v m (n,m 100) Dng th i trong s m dng tip theo cha n s nguyn dng Si1,Si2,...Sin ,i=1,2..m Kt Qa : a ra file vn bn Bl3.Out nh sau: Dng u tin cha s S l tng chi ph phi tr theo cch truyn tin tm c Dng th hai cha m s nguyn khng m Q1,Q2...Qm , trong Qi l s gi tin cn truyn theo ng truyn i . V D: Bl3.Inp 3 3 20 20 20 Hng Dn : Gi Mind[i,j] l tng chi ph nh nht cn tr cho vic truyn i gi tin m s dng j ng tin ( 1,,j), Chng ta c cng thc truy hi nh sau : Mind[i,j]:=MinMind[i-1,k]+S[i,j-k]; K=0,..j ; Ca Hng Bn Hoa Bi ton 22 : Bi : Ti 1 ca hng ngi ta mun cm mt s loi hoa vo chu hoa nh , tt c c F loi hoa v V chu hoa (F<=V) . Cc chu hoa c nh s t 1 n V v xp theo th t t tri sang phi . Mi loi hoa cng c nh s tun theo iu kin : vi i<j ,
- 24 -

4 3 10 1 3 20

Bl3.Out 4 021

Collected & Converted by ng Tin Cng

loi hoa i phi pha tri ca loi hoa j , hay ni cch khc hoa i c cm chu Vi v hoa j c cm chu Vj th ta phi c Vi<Vj . Ta c bng h s thm m ca vic cm hoa : 1 7 5 -21 2 23 21 5 Chu Hoa 3 4 -5 -24 -4 10 -4 -20 5 16 23 20

HOA

1 ( quyn ) 2 ( hi ng) 3( cm chng)

bng Ai,j vi 1<=i<=F , 1<=j<=V .c ngha : nu hoa i c cm chu j th t im thm m i . v d ta c bng h s trn . Yu cu bi ton l tm mt phng n cam hoa sao cho t tng s im ln nht . Hn ch k thut : 1<= F<=100 vi F l s cc loi hoa . F<=V <=100 vi V l s cc chu hoa . -50<= Ai,j <=50 vi Ai,j l h s thm m thu c khi loi hoa i cm vo chu hoa j. 5D Liu : Cho t file Bai22.Inp nh sau : Dng u tin ghi 2 s F, V . F dng tip theo : mi dng ghi V s nguyn , nh vy s Ai,j l ghi v tr j ti dng i+1. Kt Qu : Ghi ra file Bai22.Out nh sau : Dng u tin ghi tng s im thm m ca cch xp . Dng th 2 ghi ln lt F s , s th K ghi s chu hoa ca loi hoa th k xp . Yu cu chy khng qu 2 giy. V d : Bai22.Inp Bai22.Out 3 5 7 23 -5 -24 16 5 21 -4 10 23 -21 5 -4 -20 20 53 245 Hng Dn : Chng ta c Maxd[i,j] l gi tr thm m ln nht khi cm cc tranh t 1 n i vo cc v tr 1..j . Ta s c cng thc truy hi nh sau : i<= j then Maxd[i,j]:=MaxMaxd[i-1,j-1]+A[i,j] , Maxd[i,j-1] i>j then Maxd[i,j]:=Maxd[i-1,j] ; Treo Tranh Bi ton 23 : Bi : Cho n bc tranh m s t 1 n n , khng vt qu 50 . Ngi ta cn chn ra 1 bc tranh t ca ra vo phng tranh , s cn li c treo thng hng trong phng treo theo trt t nghim ngt sau y : tranh c s hiu nh phi treo trn tri tranh c s hiu ln . Bit cc thng tin sau v mi tranh : Tranh th i tro ti ca s t gi tr thm m C[i]
- 25 -

Collected & Converted by ng Tin Cng

Tranh th i treo ti v tr th j s t gi tr thm m V[i,j] . Hy xc nh mt phung n treo tranh c gi tr thm m l ln nht . D Liu : Vo t file vn bn : TRANH.INP - Dng th nht : hai tr s : N , M Dng tip theo l n gi tr C . Tip theo l N dng , dng th i gm m s V[i,1], V[i,2],.....V[i,m] Kt Qu Ra tp vn bn : TRANH.OUT - Dng th nht : gi tr thm m ln nht tm c Dng th hai : m hiu bc tranh treo ca phng tranh T dng th ba : N - 1 s t nhin l s hiu v tr c chn treo tranh trong phng V D : TRANH.INP 13 22 Hng Dn : Trc tin chng ta xt bi ton : Cho N tranh , treo vo M v tr , bit cc gi tr A[i,j] l gi tr thm m ca cch treo tranh th i vo v tr th j . Bit quy nh treo nh quy nh bi ton . Chng ta c Maxd[i,j] l gi tr thm m ln nht khi cm cc tranh t 1 n i vo cc v tr 1..j . Ta s c cng thc truy hi nh sau : i<= j then Maxd[i,j]:=MaxMaxd[i-1,j-1]+A[i,j] , Maxd[i,j-1] i>j then Maxd[i,j]:=Maxd[i-1,j] ; p dng vo bi ton : chng ta s th tng tranh mt khi ca , sau chng ta gii quyt cho bi ton N-1 tranh vo M v tr c gi tr thm m ln nht . Trong cc trng hp nh vy chng ta ly trng hp c tng gi tr thm m ln nht . Chnh l cch treo tranh cn t . Project Bi ton 24 : Bi : Gim c iu hnh ca mt cng ti tin hc cn xc nh s lng nhn cng cn s dng trong mi thng thc hin mt d n pht trin tin hc . ng gim c nm c s lng nhn cng ti thiu cho mi thng . Mi ln thu hoc sa thi mt cng nhn lun mt thm mt khon chi ph . Mi khi mt th no c thu , anh ta lun nhn c tin lng ngay c khi anh ta khng phi lm vic . Gim c nm c chi ph thu mt cng nhn mi , chi ph sa thi mt nhn cng , lng mt thng ca mt cng nhn . vn t ra cho gim c l phi xc nh s lng cng nhn cn thu hoc sa thi trong mi thng cho chi ph thc hin d n l ti thiu . D Liu : Vo t file vn bn Project.Inp : Dng th nht ghi thi gian thc hin d n n ( n v thi gian : s thng , n <=12 )
- 26 -

TRANH.OUT 40 1 3 0 10

1 20 1 1 10 2 1 40 2 2 4

Collected & Converted by ng Tin Cng

Dng th hai ghi ba s nguyn dng theo th t l chi ph thu mt cng nhn mi , lng thng ca mt cng nhn , chi ph sa thi mt nhn cng . Dng cui cng ghi n s nguyn dng D1 , D2 ,....Dn trong Di l s lng nhn cng ti thiu cn cho thng i . Kt Qu : Ghi ra file : Project.Out : Dng th nht ghi chi ph ti thiu cn cho cng vic Mi dng trong s N dng tip theo ghi s Si , trong nu Si > 0 th n l s lng nhn cng thu thm thng th i , cn nu Si <0 th |Si| l s lng nhn cng cn sa thi thng th i ca d n , Si = 0 th khong c bin ng v sa thi hay thu thm . V D : PROJECT.INP 3 456 10 9 11 PROJECT.OUT 199 10 0 1

Hng Dn : Gi T_max l s cng nhn ca thng nhiu nht cng nhn . mng Scn[1..T] cho bit s cng nhn ti thiu cn cho thng y . C[T,T_max] ,trong C[i,j]cho bit chi ph ti thiu ca i thng u tin ca d n nu ti thng th i c j cng nhn trong bin ch . C[i,j]:=minc[i-1,k]+chi ph t k ngi thnh j ngi , i =1,..T,j=Scn[i]...T_max , k = scn[i-1]..T_max Bi ton 25 : Bi : Triangle

7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 Hnh trn l m bng tam gic cc s nguyn khng m .Hy vit chng trnh tnh tng ln nht cc s trn ng i t nh tam gic v kt thc ti mt im no trn y tam gic . + Mi nc i ta c quyn i thng xung bn tri hay bn phi ca s + S hng trong tam gic ln hn 1 v 100. + Cc s trong tam gic u l cc s nguyn khng m v nh hn 100. D Liu: cho trong file triangle.Inp nh sau: Dng u tin ghi s lng cc dng trong tam gic ( N ) Dng i+1 ( 1 i N) ghi i s Kt Qu xut ra file triangle.Out l tng ln nht tm c V D:
- 27 -

Collected & Converted by ng Tin Cng

Triangle.Inp triangle.Out Triangle.Inp Triangle.Out 5738810274445265 30 10 7 3 8 8 1 0 2 7 4 4 452653486353515378357178378653145783516743213 58 Hng Dn : Maxd[i,j] l di ln nht khi i t [1,1] n [i,j] . Ta c cng thc truy hi sau : Maxd[i,j]:=MaxMaxd[i-1,j]+a[i,j] , maxd[i-1,j-1]+a[i,j] ; Trong maxd[1,1]:=a[1,1] ; Mua hng Bi ton 26 : bi : N hng nc ngoi ( mt nc c th c gh nhiu ln ) ngi ta quay v nc 1 , bn tt c cc hng v thu c nhiu tin nht . ( Ln mua cui cng ti nc 1 xem nh ln K+1 ). D Liu : Cho trong file vn bn Muahang.Inp gm M+1 dng : Dng 1 gm cc s M,N,S,K Dng th i+1 trong cc hng cng li ghi N s C[i,1],C[i,2],...C[i,n. Kt Qu: ghi ra file vn bn Muahang.Out gm : Dng 1 : tng s tin thu c theo phng n ti u Cc dng cn li biu din cch mua ti u : + Dng u tin ghi tn n v hng mua nc 1, v s lng ca n . + k Dng tip , mi dng ghi 3 s : tn nc bn cn bn hng trc v cn tiu th v mua tip , tn hng mua nc ,s lng mua nc . V D: Muahang.Inp Muahang.Out 5 10 100 4 1 3 5 5 5 5 5 5 5 4 5 1 1 1 5 5 5 5 4 5 4 5 5 5 1 5 5 4 5 5 5 5 5 5 5 1 5 5 5 55555 51555545555 187500 1 100 3 500 1 1 2500 1 3 12500 1 5 62500 1 Hng Dn : Gi Maxd[i,j,k] l s hng i ti a mua ti nc j sau k ln mua bn . ( S0,K0 l s tin ban u , v s ln bn mua ) . Maxd[i,j,k]:= maxMaxd[i , t ,k-1] S tin ti a cc bn c th kim c sau K0 ln mua bn s l MaxMaxd[i,j,k0] ; i=1,..M , j =1,..N Nhng trong cng th truy hi , bi ton s i hi mt b nh kh ln . Chng ta s thc hin nh sau gim ti thiu b nh : Gi S l mng sao cho S[i,j] l s hng i ti a mua ti nc j Gn ton b S = 0 ;
- 28 -

Collected & Converted by ng Tin Cng

S[1,i]:=S0 div C[1,i] ; For k := 1 to K0 do Begin + Gn ton b S2=0 + For i :=1 to m do for j:=1 to n do for i1:=1 to m do if (i1<>i) then for j1:=1 to n do if ( j1<>j) then nu S[i1,j1]*c[i,j1]div c[i,j] >s2[i,j] th S2[i,j]:=S[i1,j1]*c[i,j1] div c[i,j] ; + S := S2 ; End ; Mua Ximng Bi Ton 27 : Bi : Mt tng cng ti xy dng nhn thu mt cng trnh .Ngi ta d kin chia cng trnh thnh N cng on ,mi cng on ko di trong 1 thng . Lng xi mng cn thit cho mi cng on th i l Mi tn ( Mi nguyn dng ) .V xi mng tn kho cn phi tr mt chi ph tn tht nht nh nn ngi ta khng mua lng xi mng cho c cng trnh ngay t u m chia thnh nhiu t ,mua vo cc u thng. Tuy vy ,do gi xi mng thay i theo tng thng nn khng nht thit thng no cng phi mua ng s lng xi mng cho thng . Yu Cu : Hy cho bit s lng xi mng cn mua cho tng thng l bao nhiu ph tn tng cng ( mua v bo qun ) l t nht . Bit rng g xi mng cho thng th i l Ci ( trm ngn ng ) mi tn . Ngoi ra , nu s lng xi mng ti mt thng no cn tha trong kho l d tn th chi ph bo qun trong thng l qd2 ( trm ngn ng ) . n gin ,ta quy c n v mua xi mng nh nht l tn v mi tham s y u l nguyn . D Liu : vo t file vn bn ximang.Inp vi : Dng u tin cha n,q(n 10) . Dng th hai cha n gi tr : m1,m2,..Mn (30 Mi , i); Dng th ba cha n ga tr : C1,C2,..Cn. Kt Qu : ghi ra file vn bn Ximang.Out vi : Dng u tin cha S l ph tn ti u . Dng th hai ghi n ga tr X1,X2,..Xn l lng xi mng cn mua ca tng thng mt. V D: XimangInp 4 2 5 3 10 6 14 20 10 30 Ximang.Out 356 6 2 15 1
- 29 -

Collected & Converted by ng Tin Cng

Hng Dn : Gi A[i,j] l lng chi ph b ra mua v bo qun t thng th i cho ht N thng , vi lng xi mng c hin ti trong kho l j tn . Ta s c cng thc truy hi nh sau ( i vi A[i,j]) : For i := n downto 1 do begin T := M[i]+M[i+1]+...+M[n] . For j:=0 to T do begin if i = n then begin a[i,j]:=c[n]*(m[n]-j) ; k := m[n]-j ; end else if j>=m[i] then begin a[i,j]:=Sqr(j-m[i])+a[i+1,j-m[i]] ; k := 0 ; end else begin a[i,j]:=(m[i]-j)*c[i]+a[i+1,0] ; k:= m[i]-j ; end ; A[i,j]:=Minx*c[i]+sqr(j+x-m[i])*q+a[i+1,j+x-m[i]] ; x := k + 1 , ...T end ; end ; Cung Cp Vt Liu Bi Ton 28: Bi : C N cng trnh cn vt liu thi cng . Cng trng i cn cung cp D[i] n v hng .Hng c cung cp t hai kho A v B .Cc vn chuyn mt n v hng t kho A n cng trng i l A[i] . Cc vn chuyn t mt n v hng t kho B n cng trng i l B[i] .Bit A c r n v hng v tng s hng ca c hai kho va cung cp cho N cng trng . Yu Cu : Hy phn phi hng t hai kho n cc cng trng sao cho tng cc ph vn chuyn l nh nht. D Liu: Cho trong file CungCap.Inp gm 4 dng : Dng th nht ghi N v R (N 100) Dng th hai ghi N s biu din D[1],D[2],....D[n] Dng th ba ghi N s : A[1],A[2],..A[n]. Dng cui cng ghi N s : B[1],B[2],...B[n] Kt Qa : xut ra file Cungcap.Out nh sau : Dng 1: ghi mt s nguyn dng l tng chi ph vn chuyn t nht Dng 2: Ghi N s nguyn dng tng ng s n v hng m khi A cung cp cho tng cng trnh theo th t Dng 3:Ghi N s nguyn dng tng ng s n v hng m khi B cung cp cho tng cng trng theo th t. V D: Cungcap.Inp Cungcap.Out
- 30 -

Collected & Converted by ng Tin Cng

5 100 30 80 80 50 40 3 5 10 4 23 4 6 2 7 4 50 0 0 60 80 0 40 Hng Dn :

1070 30 20 0

Gi Mind[i,j] l cc ph nh nht m kho 1 phi cung cp j n v hng cho cc cng trng 1..i Ta s c cng thc truy hi : Mind [i,j]:=MinA[i]*K+B[i]*(D[i]-K)+Mind[i-1](j-K) Vi K=0..D[i] ; v K<=j ; Mua hng gim gi Bi ton 29 : Bi : Trong mt ca hng ,mi loi hng c mt gi .V d ga mt bng hoa l 2 ng v gi mt ci bnh l 5 ng . thu ht nhiu khch hng ,ca hng ra mt s cch bn c bit Mt cch bn gi c bit lin quan n vic bn mt hay mt s hng vi gi chung c gim. V d : 3 bng hoa bn vi gi 5 ng thay v 6 ng . 2 ci bnh v 1 bng hoa bn vi gi 10 ng thay v 12 ng . Vit chng trnh tnh gi m mt khch hng phi tr cho mt nhu cu mua hng tn dng mt cch ti u cc cch bn c bit ,ngha l phi tr t nht .V d : vi cc gi v cc cch bn c bit , nu trn , gi thp nht mua 3 bng hoa v 2 ci bnh l 14 ng ; 2 bnh v 1 hoa l 10 ng ; 2 hoa vi gi bnh thng l 4 ng. D Liu: cho trong 2 file offer.In1 v Bai24.In2 nh sau: File th nht Bai24.Inp m t nhu cu mua : Dng u tin cha s B l s loi hng cn mua (0 B 5) Mi dng trong B dng tip theo ghi 3 s c,k,p. Gi tr c l m ca loi hng (1 c 999) . Gi tr k l s n v hng cn mua vi m c ( 1k 5). Gi tr p l gi bnh thng ca mt n v hng vi m c (1 p 999) . File th hai offer.In2 m t cc cch mua bn c bit: Dng u tin cha s s l s cch bn c bit (0 s 99) Mi dng trong s tip theo m t mt cch bn c bit . S u tin n ca mi dng nh vy l s loi hng trong cch bn c bit tng ng vi dng (1 n 5); n cp s tip theo (c,k) trong c l m loi hng, k l s n v hng (1 k 5;1 c 999 ) . S p cui cng trong dng l gi c gim trong l hng nay . Gi c gim nh hn tng cc gi tr bnh thng Kt Qa :xut ra file offer.Out l s tin nh nht mua hng Bit rng hng v tin phi nguyn . V D: offer.In1 3 2 5 10 1 4 6 5 3 4 offer.In2 offer.Out 4 2 2 3 1 8 20 3 8 2 9 3 10 2 9 2 7 5 9 8 6 3 2 1 1 1 5 1 10 56
- 31 -

Collected & Converted by ng Tin Cng

Hng Dn : Dng phng php quy hoch ng gii. Gi s ta c mt yu cu mua 5 loi mt hng vi s lng tng ng l SL[1], SL[2], SL[3], SL[4], SL[5]. Ta phi s dng cc cch mua c bit sao cho tng gi mua va ng yu cu mua thp nht. Qu trnh t chc vic mua c hnh dung nh mt qu trnh quy hoch nhiu giai on. Nu k hiu A[i1, i2, i3, i4, i5] l tng gi mua thp nht mua cc loi hng vi cc s lng tng ng l i1, i2, i3, i4, i5 th theo quy hoch ng, n phi l nh nht trong mi gi tr c th c ca A[j1, j2, j3, j4, j5]+gi mua theo gi gc/gi mua theo cch mua c bit ca phn hng ho thm vi mi b j1, j2, j3, j4, j5 <= i1, i2, i3, i4, i5. Mi cch tnh ton th hin bi mt th tc TIM1/TIM2. Sau y l Chng trnh v giai thch chng trnh bng ting vit : Uses crt; Const fn='input.txt'; fn1='offer.txt'; gn='output.txt'; Type mang=array[1..5] of record vat,sl:integer; end; {Kiu d liu ny ghi nhn v loi hng v s lng trong mt cch bn c bit} Var ten,sl,gt:array[1..5] of integer; {Ghi nhn mt yu cu mua} num:array[1..100] of integer; c:array[1..100] of mang; cost:array[1..100] of integer; {Ba mng NUM, C, COST dng ghi nhn cc cch bn c bit} b:array[1..100] of boolean; {Dng ghi nhn cc cch bn c bit c th dng c, mt cch bn c bit khng th dng c nu n c mt hng khng xut hin trong yu cu mua, khi ta cho gi tr b[i] tng ng bng FALSE} a:array[0..5,0..5,0..5,0..5,0..5] of longint; {A[i1, i2, i3, i4, i5] ghi nhn gi thp nht (qua tng bc) thc hin mt yu cu mua hng vi s lng cc mt hng tng ng bng i1, i2, i3, i4, i5} cs,d:array[1..5] of byte; {CS v D dng ghi nhn cc mc trong qu trnh tm cch mua thp nht; qu trnh chn cch mua xem nh mt qu trnh nhiu giai on, tng dng quy hoch ng c th hin qua cc th tc TINH1 v TINH2 sau ny} m,n:byte; {M: s cch bn c bit; N: s mt hng cn mua} procedure nhap; var
- 32 -

Collected & Converted by ng Tin Cng

f:text; i,j:integer; begin assign(f,fn); reset(f); readln(f,n); for i:=1 to n do readln(f,ten[i],sl[i],gt[i]); close(f); assign(f,fn1); reset(f); readln(f,m); for i:=1 to m do begin read(f,num[i]); for j:=1 to num[i] do read(f,c[i,j].vat,c[i,j].sl); readln(f,cost[i]); end; close(f); end; function tim(x:integer):byte; {Hm TIM(X) bng 0 nu mt hng X khng xut hin trong yu cu mua hng, bng i nu mt hng X l mt hng th i trong yu cu mua hng, hm ny dng khi to mng B ni trn trong th tc KHOITAO tip theo} var i:integer; begin for i:=1 to n do if ten[i]=x then begin tim:=i; exit; end; tim:=0; end; procedure khoitao; {Th tc ny gm hai phn, phn th nht nhm lm cho mi yu cu mua c ng 5 mt hng, th php ny lm cho vic vit trnh n gin; phn th hai nhm ghi nhn nhng cch bn c bit c th s dng c thc hin yu cu mua cho} var i,j,k:integer; ab:mang;
- 33 -

Collected & Converted by ng Tin Cng

begin if n<5 then begin for i:=n+1 to 5 do begin ten[i]:=0; sl[i]:=0; gt[i]:=0; end; n:=5; end; for i:=1 to m do begin b[i]:=true; ab:=c[i]; for j:=1 to 5 do begin c[i,j].vat:=0; c[i,j].sl:=0; end; for j:=1 to num[i] do if b[i] then begin k:=tim(ab[j].vat); if k=0 then b[i]:=false else begin c[i,k].vat:=ab[j].vat; c[i,k].sl:=ab[j].sl; end; end; end; end; procedure tinh1; {So snh vic mua theo gi gc vi vic mua theo cc phng n mua thp nht c vi cc b s lng mt hng "t hn" v vic mua thm hng dng gi gc} var s,i,min,j:longint; begin s:=0; for i:=1 to 5 do s:=s+gt[i]*cs[i]; min:=s; for i:=1 to 5 do begin for j:=1 to 5 do d[j]:=0; for j:=1 to cs[i] do
- 34 -

Collected & Converted by ng Tin Cng

begin d[i]:=j; s:=a[cs[1]-d[1],cs[2]-d[2],cs[3]-d[3], cs[4]-d[4],cs[5]-d[5]]+gt[i]*j; if s<min then min:=s; end; end; a[cs[1],cs[2],cs[3],cs[4],cs[5]]:=min; end; procedure tinh2; {So snh vic mua theo gi sau bc TINH1 vi vic mua theo cc phng n mua thp nht c vi cc b s lng mt hng "t hn" v vic mua thm hng dng cc cch bn c bit c th dng c} var min,s,h^dD ]]; for i:=1 to m do if b[i] and (cs[1]>=c[i,1].sl) and (cs[2]>=c[i,2].sl) and (cs[3]>=c[i,3].sl) and (cs[4]>=c[i,4].sl) and (cs[5]>=c[i,5].sl) then begin s:=a[cs[1]-c[i,1].sl,cs[2]-c[i,2].sl,cs[3]-c[i,3].sl, cs[4]-c[i,4].sl,cs[5]-c[i,5].sl]+ cost[i]; if s<min then min:=s; end; a[cs[1],cs[2],cs[3],cs[4],cs[5]]:=min; end; procedure xuly; var g:text; begin khoitao; a[0,0,0,0,0]:=0; for cs[1]:=0 to sl[1] do for cs[2]:=0 to sl[2] do for cs[3]:=0 to sl[3] do for cs[4]:=0 to sl[4] do for cs[5]:=0 to sl[5] do begin tinh1; tinh2; end;
- 35 -

Collected & Converted by ng Tin Cng

assign(g,gn); rewrite(g); writeln(g,a[sl[1],sl[2],sl[3],sl[4],sl[5]]); close(g); end; Begin nhap; xuly; End. Con D Bi Ton 30: Bi : Gi s c mt khi t st hnh lp phng cnh n (n 30) n v c chia thnh cc khi lp phng n v cc mt c cc ng hm vung gc vi mi mt vi chiu su l s nguyn dng . Hnh lp phng ny t trong h trc to vung gc Oxyz sao cho mt nh l gc to O ,cc trc to trng vi ba cnh ca hnh xut pht t O .Hnh lp phng nm trong gc phn tm (X0, Y 0, Z 0) Cu1 : Bit to ca mt im trn mt mt khi t ,t mt con d chui vo , b theo cc ng hm ,ri chui ra ti mt im no trn mt i din .D i theo ng ngn nht .Hy ch ra ng i ca d v di ng i . Cu 2: Trng Hp khng tm c ng i ni trong cu 1 , th d s khoan b sung mt s on ng hm. Mi ln khoan b sung c bt u t nh ca khi lp phng n v no dc theo cnh ca n. Bit rng tng di ng d khoan l ngn nht . Hy cho bit ng m d i ( k c cc on khoan b sung ) D Liu : vo t file vn bn Bai25.Inp c cu trc nh sau: Dng u tin ghi s nguyn dng n, Dng th hai ghi ba s nguyn khng m l to im xut pht Trong cc dng tip theo ,mi dng c bn s nguyn , theo th t l to im ca cc ng hm v su ca n . Kt Qu : ghi ra file Bai25.Out theo cu trc nh sau : Dng u tin ghi ch CAU1 Hoc CAU2 tu theo vic con d khng cn hoc cn khoan thm ng hm. Dng th hai ghi di ng i ngn nht ( nu l kt qu cu 1) hoc tng di cc on cn khoan (nu l cu 2); Tip theo l mt nhm dng ghi ng i ca con d theo quy cch nh sau: dng th nht ghi to im xut pht ,tip theo, trnh t i trn ng i ghi trn mi dng to im ti hnh trnh i hng , dng cui cng ghi to im kt thc. Hng Dn : Ta dng thut ton Dijstra tm ng i ngn nht ca th t nh xut pht n mt nh thuc mt i din. th ny c tp nh l cc nh ca cc khi lp phng n v, nh vy c tt c (N+1)3 nh. Ti mi nh, con d ch c th chn
- 36 -

Collected & Converted by ng Tin Cng

khng qu su di chuyn sang nh k n theo cnh ni hai nh , nu hai nh cng thuc mt l khoan, ta cho di cnh tng ng bng 1, nu khng (tc l d phi khoan), ta cho di cnh tng ng bng 1000. Khi , nu di ng i ngn nht nh hn 1000, ta kt lun d chui c sang mt i din m khng cn khoan thm ng hm. Nu ngc li, ta kt lun d cn khoan thm ng hm v tng di ng hm ngn nht cn khoan chnh l thng (nguyn) ca php chia di ng i ngn nht cho 1000. Li gii xin xem phn gii mu bit thm . Chiu Kho Xng Bi ton 31 : Bi : Khu vc t cc b xng ca mt tng i l Xng du c dng mt hnh ch nht c chia thnh m n vung .Cc vung nh to t trn xung di , t tri qua phi theo th t hng ,ct . Ti k ca li c t cc b xng .Ngi ta cn xy dng mt h thng n pha chiu dc theo hng hoc l ct ca li vung sao cho mi b cha phi c chiu sng bi t nht mt n pha chiu dc theo hng hoc theo ct cha n. Bit: Ai l chi ph xy dng n chiu sng dc theo hng i (i=1,2...m) Bj l chi ph xy dng n chiu sng dc theo ct j (j=1,2,..n) Yu Cu : Tm cch xy dng h thng n chiu vi tng chi ph xy dng l nh nht D Liu: Vo t file Khoxang.Inp : Dng u tin cha ba s nguyn dng m,n,k (m,n< 100) ; Dng th hai cha m s nguyn dng A1,A2,...Am Dng th ba cha n s nguyn dng : B1,B2,..Bn Dng th i trong s k dng cn li cha to ca b xng th i (i=1,2,..k) Kt Qu : ghi ra file Khoxang.Out nh sau : Dng u tin ghi tng chi ph theo cch xy dng tm c Dng th hai ghi hai s P v Q theo th t l s lng n chiu dc theo hng v ct ( ghi s 0 nu khng c ) P+Q dng tip theo ln lt cc to ca cc hng ri n cc ct c t n chiu ,mi dng ghi 1 s . V D: Khoxang.Inp Khoxang.Out 2 3 4 10 5 12 4 2 1 2 1 3 2 1 2 3 222321 12 0 3 1 2 3 Khoxang.Inp 11 1 2 2 2 3 Khoxang.Out 2 3 4 15 17 2 4 6 1 1

Hng Dn : Gi Mind[i,j] l tng s chi ph cn dng khi chiu mt hnh c kch thc : 1..i v 1..j . Ta s c cng thc truy hi : Nu C[i,j]=0 th : + Nu Ct j v hng i cha c chiu th : Mind[i,j]:=Mind[i-1,j-1] + Nu Ct j c chiu , cn hng i cha c chiu th : Mind[i,j]:=Mind[i-1,j]
- 37 -

Collected & Converted by ng Tin Cng

+ Nu Ct j c chiu , hng i c chiu th : Mind[i,j]:=MinMind[i1,j]+a[i],Mind[i,j-1]+b[j] + Nu Ct j cha c chiu , hng i c chiu th : Mind[i,j]:=Mind[i,j-1]; Nu C[i,j]=1 th + Nu Ct j v hng i cha c chiu th : Mind[i,j]:=Mind[i-1,j-1]+MinA[i],B[j] + Nu Khng th Mind[i,j]:=MinMind[i-1,j]+a[i],Mind[i,j-1]+B[j] y l mt bi ton kh hay , ngoi cch gii bng quy hoch ng , bi ton cn c mt cch gii khc m cn l th hn nhiu . tin theo di , cc bn nn xem thm bi ton ny chng II , phn Lung Cc i tm hiu thm . Fish Bi ton 32 : Bi : Cu t c nh i cu c trong vng v anh ta c mt thi gian l H ( tnh theo n v gi) C n ci h (lakes) m cu t c nh cu c nh s t 1 n n theo th t nm trn ng mt chiu v cu t ch c th i t h th i n h th i+1 v thi gian i t h i n h i+1 l Ti ( Ti chia ht cho 5) . Ti mi mt h th cu t khng nht thit phi dng li cu c . Nu ht thi gian cu t ang h no i chng na th cu t cng phi quay v nh . c c mt chuyn i cu hiu qu cu t thu nhp thng tin v cc h . Cho mi h i ,s c m cu t c th cu c trong 5 pht u l Fi (Fi>0) v c sau 5 pht s c i gim mt lng Di . Nu nh s c m cu c 5 pht trc khng ln hn Di th s cc cu c 5 pht sau s l 0 Hy vit mt chng trnh gip cu t cu c nhiu c nht . Thi gian cu t cu c ti mi h hoc bng 0 hoc chia ht cho 5 . D Liu : vo t file Fish.Inp nh sau : Dng u tin l s n v h (n<=20,h<=50). Dng k tip l n-1 s th hin cho T1,T2,...Tn-1 Dng k tip l n s th hin cho F1,F2,...Fn Dng cui cng l n s th hin cho D1, ...Dn Kt Qu : ghi ra file Fish.Out Dng u tin l s c thu c Dng k tip gm n s th hin cho thi gian cu t s dng li cu c cc h 1 n n. Hng Dn : Ta thy rng tng thi gian chy qua cc ao ca cu t s l khng i . nh vy s lng cc ch ph thuc vo thi gian vo tng ao ca cu t m thi .Gi thi gian m cu t gh vo cc ao . Ta coi mi on thi gian l khong m cu t dng ti mt ao ( 5 pht ) . nh vy ti khong 5 pht th h1 no th ta dng hm Find (i : Integer ) l hm cho bit khong thi gian m cu t dng li ti ao th i ( nu s dng khang thi gian cu c ) . Cc bn c th xem chng trnh bi ton sau :
- 38 -

Collected & Converted by ng Tin Cng

Uses Crt; Const Fi='Fish.Inp'; Fo=''; Var Save,A,C,D,M,Sum,T:Array[1..20]Of LongInt; f:Text; n,h,i:LongInt; Procedure ReadF; Begin Assign(f,Fi); Reset(f); Readln(f,n,h); For i:=1 to n-1 do Begin Read(f,T[i]);T[i]:=T[i] Div 5;End; Sum[1]:=0; For i:=2 to n do Sum[i]:=Sum[i-1]+T[i-1]; For i:=1 to n do Read(f,M[i]); For i:=1 to n do Read(f,D[i]); Close(f); End; Function Find(i:LongInt):LongInt; Var k:LongInt; Max,l:LongInt; Begin Max:=0; Find:=0; For k:=1 to i do If M[k]-C[k]*D[k]>Max Then Begin Max:=M[k]-C[k]*D[k];l:=k;End; Find:=l; End; Procedure Solution; Var h1,Max,K,Ca:LongInt; Begin h:=h*12;Max:=0; For i:=1 to n do Begin FillChar(C,SizeOf(C),0); Ca:=0; h1:=h-Sum[i]; Repeat k:=Find(i); If k=0 Then Break; If M[k]-C[k]*D[k]>0 Then Inc(Ca,M[k]-C[k]*D[k]);
- 39 -

Collected & Converted by ng Tin Cng

Inc(C[k]); h1:=h1-1; Until h1=0; If Ca>Max Then Begin Max:=Ca; Save:=C; End; End; Writeln(Max); For i:=1 to n do Write(Save[i]*5:6); End; BEGIN Clrscr; ReadF; Solution; END. Xp hng mua v xem biu din - Ticket Bi ton 33 : Bi : C N ngi sp hng mua v d bui ho nhc . Ta nh s h t 1 n N theo th t ng trong hng . Mi ngi cn mua v , song ngi bn v c php bn cho mi ngi ti a hai v . V th ,mt s ngi c th ri hng v nh ngi ng trc mnh mua v h. Bit Ti l thi gian cn thit ngi i mua xong v cho mnh .Nu ngi i+1 ri khi hng v nh ngi i mua v h th thi gian ngi th i mua c v cho c hai ngi l Ri. Yu Cu : Xch nh xem nhng ngi no cn ri khi hng v nh ngi ng trc mua h v tng thi gian phc v bn v l nh nht . D Liu : vo t file Ticket.Inp : Dng u tin cha s N (1<N<2000) Dng th hai ghi n s nguyn dng T1,T2,..Tn Dng th ba ghi n-1 s nguyn dng R1,R2..Rn . Kt Qu : ghi ra file vn bn Ticket.Out Dng u tin ghi tng thi gian phc v Dng tip theo ghi ch s ca cc khch hng cn ri khi hng ( Nu khng c ai cn ri khi hng th quy c ghi mt s 0 ) V D: Ticket.INP Ticket.OUT 5 2 5 7 8 4 4 9 10 10 18 2 4 Hng Dn :
- 40 -

Ticket.INP Ticket.OUT 4 5 7 8 4 50 50 50 50 24 0

Collected & Converted by ng Tin Cng

Gi Mind[i] l thi gian cn dng t nht mua v cho s ngi t 1 n i ( theo ln lt ) . Ta c cng thc truy hi : Mind[i]:=MinMind[i-1]+T[i] ; Mind[i-2]+T[i-1] ; Bi ton 34 : Monet Bi : Trong cao c N tng l tr s ca mt nh bng ( N <= 150 ) xy ra ho hon . Ho hon lan truyn vi tc 1 tng / pht . Trong cao c c thang my chuyn ng vi vn tc 10 tng / pht . Nu thang my di chuyn qua tn ang c l bc chy th n cng bc chy theo . Ti thi im ban u bt u ho hon thang my tng th 1 . Vi mc ch cu nhng ti sn qu gi ( cc hm vi cc ng tin vng ) c ct gi trn mt s tng ca cao c tt c nhn vin ca nh bng phi di cao c bng cu thang cn thang my c dnh cho nhim v cu ca . Bit v tr tng pht sinh ho hon , cc tng c cha hm ca cng s lng ng tin vng trong chng v thi gian chuyn chng vo thang my l 1,5 pht , bn cn tm cch cu c lng ng tin vn ln nht . D Liu : Vo t file vn bn : MONET.INP Dng u tin cha cc s nguyn dng N , H l s lng tn ca cao c v ch s ca tng chy . Dng th i trong s N - 1 dng tip theo cha s lng ng tin vng c trong hm ca tng th i + 1 ( tng1 khng c ca ) . S lng ng tin vng mi tng gi thit l s nguyn . Kt Qu : ghi ra mt dng ca file vn bn : MONET.OUT s lng tin c th cu c . V D : MONET.INP MONET.OUT 55 100 100 0 300 1000 Hng Dn : Hon ton tng t ni dung nh bi ton Fish . Thc ra bi ton ch i s liu m thi . Hanoitower Bi ton 35 : Bi : Bi ton thp H Ni tr thnh ni ting vo nm 1883 , sau bi bo ca Lucas l mt nh ton hc ngi php . Thp l mt cc a ng knh gim dn t di ln . Bi ton t ra l cn chuyn chng a sang mt cc khc s dng mt cc trung gian sao cho trong qu trnh chuyn a khng c a no c ng knh ln hn li b t trn a c ng knh nh hn .
- 41 -

Collected & Converted by ng Tin Cng

Yu Cu : gii bi ton thp H Ni tng qut : cho M cc v thp gm N a ( 3 <= M , N <= 30 ) , hy xc nh s ln chuyn a ti thiu cn thc hin chuyn chng a t cc xut pht sang mt cc ch s dng M-2 cc cn li nh cc trung gian . D liu : vo t file Hantower.Inp cha hai s nguyn N , M c ghi cch nhau theo th t l s cc a v s cc trong bi ton thp H Ni Kt Qu : ghi ra file Hantower.out s ln ti thiu chuyn a cn thc hin V d : Hng Dn : Gi A[i,j] l s bc chuyn nh nht nu ta c i l ci cc v c j ci a cn chuyn t cc 1 n cc j . Trc tin ta xt cch chuyn : u tin ta s chuyn 1 lng l a ( l<=i ) t cc 1 n coc ( i - 1 ) s dng c i cc Sau chuyn (j-l) ci cn li cc 1 sang cc i v s dng i-1 cc ( tr cc i-l ra ) Sau chuyn l ci cc i-1 sang cc i s dng i cc Do ta c : A[i,j]:=Min2*A[i,j-t]+A[i-1,t]; t=1,..j-1 ; Khong cch hai t Bi ton 36 : Bi : Trong bi ny mi xu k t u ch gm cc ch ci thng. i vi mt xu k t, ta c th tin hnh cc php bin i sau: 1. Thay mt ch ci bt k bi mt ch ci khc, v d: test -> text; 2. B i mt ch ci bt k, v d: text -> ext hoc text -> txt; 3. Thm mt ch ci bt k vo mt v tr bt k, v d: each -> peach, bat -> boat, test > tests; 4. i ch hai ch ci lin k, v d: cat -> act. Vi hai xu S1 v S2, ta nh ngha khong cch t S1 n S2 bng s lng t nht cc php bin i thuc bn loi trn m khi p dng lin tip vo S1 ta s nhn c S2. D liu: Vo c cho bi: - File vn bn TEXT.DAT gm mt s dng, mi dng khng qu 80 k t, trn mi dng ghi mt s xu, hai xu lin tip cch nhau mt k t rng. File vn bn LEX.DAT (t in), dng th nht ghi s nguyn dng M<=4000 (s lng t trong t in), trong M dng tip theo, mi dng ghi mt xu c di khng qu 20, cc xu ny c vit theo th t t in. Chng trnh cn ghi ra file vn bn NEAREST.SOL nh sau: Vi mi xu S c c t file TEXT.DAT, ghi mt nhm dng: dng th nht ghi khong cch H nh nht t S n cc xu trong t in, dng th hai ghi s lng K cc xu trong t in c khong cch n S bng H, trong K dng tip theo, mi dng ghi mt xu trong K xu ni trn. Hng Dn :
- 42 -

Collected & Converted by ng Tin Cng

Theo nh ngha, vi hai xu S1 v S2, khong cch t S1 n S2 cng bng khong cch t S2 n S1. on chng trnh sau gii quyt vic tnh khong cch gia hai xu k t cho di dng hm CheckDistance. Distance[i,j] l s php bin i ca xu con 1..i ca S1 v xu con 1...j ca S2 cn bin i v nhau : Distance[i,j]:=MinDistance[i,j-1]+1 ; Distance[i-1,j]+1 ; Distance[i-t,j-t]+ h Trong t v h l cc gi tr chy xung v tr m hai xu i ch ( ng tc 4 ) . oan trnh sau s trnh by r : const MaxL = 20; MaxN = 4000; type Words = string[MaxL]; matrix = array [0..MaxL,0..MaxL] of word; var Distance : matrix; function Change (a,b: char): word; begin if (a=b) then Change:=0 else Change:=1; end; function CheckDistance (var A: Words; var B: Words): word; var i,j,t : word; nA,nB : byte; m1,m2 : word; begin FillChar(Distance,sizeof(Distance),0); Distance[0,0]:=0; nA:=Length(A); nB:=Length(B); for i:=1 to nA do Distance[i,0]:=Distance[i-1,0]+1; for i:=1 to nB do Distance[0,i]:=Distance[0,i-1]+1; for i:=1 to nA do for j:=1 to nB do begin Distance[i,j]:=Distance[i-1,j-1]+Change(A[i],B[j]); m1:=Distance[i-1,j]+1; m2:=Distance[i,j-1]+1;
- 43 -

Collected & Converted by ng Tin Cng

if (m1<Distance[i,j]) then Distance[i,j]:=m1; if (m2<Distance[i,j]) then Distance[i,j]:=m2; if (i>1) and (j>1) and (A[i]<>B[j]) then begin if (A[i]=B[j-1]) then begin t:=i-1; while (t>0) and (B[j]<>A[t]) do dec(t); if (t>0) and (Distance[i,j]>Distance[t-1,j-2]+(i-t)) then Distance[i,j]:=Distance[t-1,j-2]+(i-t); end; if (A[i-1]=B[j]) then begin t:=j-1; while (t>0) and (B[t]<>A[i]) do dec(t); if (t>0) and (Distance[i,j]>Distance[i-2,t-1]+(j-t)) then Distance[i,j]:=Distance[i-2,t-1]+(j-t); end; end; end; CheckDistance:=Distance[nA,nB]; end; Tr Chi Poli Bi ton 37 : Bi : Polygon l mt tr chi cho mt ngi m bt u bi mt a gic N nh ( 3<=N<=50) , xem hnh 1 vi N=4 . Mi nh c nh nhn vi mt s nguyn . Mi cnh c nh nhn bng hoc l du cng hoc l du * , v c nh s t 1 n N . Hnh 1 : 2 + 1+ * 4 Tr chi nh sau : Bc i u tin , mt trong cc cnh c tch ra Sau , ln lt i theo cc bc sau : + Chn mt cnh E v hai nh V1,V2 l hai u mt ca cnh E .
- 44 -

*3

Collected & Converted by ng Tin Cng

+ Thay th cnh E bi mt nh mi c nh nhn bng s l kt qu ca vic biu din php ton biu th cnh E ca cc s c nh nhn V1,V2 . Tr chi kt thc khi khng cn mt cnh no , v im c tnh l nhn ca mt nh cn li . V D : Xt a gic nh hnh 1 . Ngi chi bt u bng cch tch cnh 3 Hnh 2 : Tch cnh 3 2 + 1+ * 4 Sau chn cnh 1 Hnh 3 : Chn cnh 1 ( -2 = -7 + 5 ) 2 + * 4 Ri n cnh 4 Hnh 4 : Chn cnh 4 ( -4 = (2)*2) 2 +

V cui cng l chn cnh 2 . im thu c trong tr chi theo cch ny l 0 Hnh 5 : Chn cnh 2 ( 0 = 4 + (-4)) Yu cu : Cho a gic , vit chng trnh tnh im cao nht c th v danh sch tt c cc cnh tch u tin ( m nu da vo vic tch cnh u tin th c th dn n im cao nht ) D liu : Vo t file Polygon.Inp Miu t a gic vi N nh , gm 2 dng : Dng u tin l s N ( s nh ca a gic ) Dng th hai l nhn ca cc cnh 1,...N xen ln vi nhn ca cc nh ( u tin l gia hai cnh 1 v 2 , sau l 2 v 3 ,..Cui cng l n v 1 ) . tt c cch nhau 1
- 45 -

Collected & Converted by ng Tin Cng

du cch . Nhn ca mt cnh hoc l t ( tng ng vi du + hoc l x tng ng vi * ) Kt qu : Ghi ra file Polygon.Out : Dng u tin ghi c s im cao nht nhn t d liu vo Dng th hai l danh sch cc cnh c tch u tin m nu da vo vic tch cc cnh u tin th c th cho s im cao nht t c . V D : POLYGON.INP 4 t -7 t 4 x 2 x 5 Hng Dn : In Thng Tin Bi ton 38 : Bi : Mt my in kiu c c cc khun ch c khc trn mt ci vng, mt ch ci c th c khc trn vng ti 0,1 hoc nhiu v tr. Ngi ta c th xoay vng khun ch quanh mt trc c nh. in mt k, ngi ta phi xoay vng khun ch sao cho k t cn in n c v tr nm ngay trn bng mc roi mi n nt I (in). xoay vng ch sang tri mt v tr, ta n nt T (tri). xoay vng ch sang phi mt v tr, ta n nt P (phi). to mt du cch, ta nnt C (cch). Cc nt I v C khng lm xoay vng khun. Tm chui thao tc ngn nht in mt chui k t. D liu: Vo File B2.INP B d liu gm 2 dng. Dng th nht gm cc ch ci c khc trn vng khun in (ch ci u tin l ch ci hin ang nm trn bng mc). Dng th hai l chui vn bn cn in. D liu Ra File B2.OUT Dy ngn nht gm cclnh L, P, I, C m c th c s dng in chui vn bn nhp. Nu khng th in chui vn bn vi vng khun in cho, in dng ch "khng the in uoc" V d: D liu vo D liu ra abaed IPITICTITTIPI aba dac Hng Dn : Gi A[i,j] l gi tr t nht cc thao tc in S[i] ti a im j trn my in . Tc l : Nu S1[i]=#32 then A[i,j]:=A[i-1,j]+1 ; Nu S1[i]<>S2[j] then A[i,j]:=Maxint ; Nu s1[i]=S2[j] then A[i,j]:=MinA[i-1,t]+s bc quay t nht t t n j ; POLYGON.OUT 33 1 2

- 46 -

Collected & Converted by ng Tin Cng

Bi ton39 : Ct Bi : Ta cn ct mt hnh ch nht c kch thc MxN (m,N nguyn dng khng ln hn 100 ) thnh mt s t nht cc hnh ch nht vung c kch thc nguyn dng v c cnh song song vi cnh hnh ch nht ban u . My khi ct hnh ch nht bt k ch ct c mt nht theo phng song song vi mt trong hai cnh ca hnh ch nht . Yu cu : Hy ct cc nht ct sao cho to t nht cc hnh vung . D liu : Vo cho bi file Cut.Inp trong : Dng th nht ghi s M , N Kt qu : Ghi ra file Cut.Out : Dng th nht ghi s hnh vung Dng tip theo ghi cc kch thc ca cc hnh vung V d : Cut.Inp 56 Cut.Out 5 33222 Hng dn : Thut ton : Quy hoch ng Trc tin ta thy tm c chung ln nht ca M v N . dt M1=M div Ucln(M,N) v N1=N div ucln(M,N) th ta ch cn tm hnh ch nht c cnh M1 , N1 phi chia lm bao nhiu hnh (t nht ) . Th s hnh vung t nht ca hnh ch nht c cnh (M,N) s c s hnh vung gp Ucln(M,N)2 hnh vung c cnh (M1,N1) . Gi Shv [i,j] l s hnh vung t nht khi ct hnh ch nht c cnh l i,j . Ta c cng thc truy hi : fillchar(shv,sizeof(shv),0); shv[i,1]:=i; shv[1,i]:=i; If i=j then Shv[i,j]:=1 ; If I<>J then Begin Shv[i,j]:=MinShv[k,j]+Shv[i-K,j] ; K=1,..I div 2; Shv[i,j]:=MinShv[i,k]+Shv[i,j-K] ; K=1,..j div 2; End ; Ghp tam gic. Bi ton 40 : bi : Cho N on thng (N <= 40) c tng chiu di <= 600 . Hy tm cch ghp cc on thng ny thnh cc cnh ca mt tam gic c din tch ln nht vi cc iu kin sau:
- 47 -

Collected & Converted by ng Tin Cng

+ Tt c cc on thng phi c s dng. + Mi cnh ca tam gic phi l ghp nguyn mt s on thng. D liu : Vo t file Ghep.Inp : Dng u tinl s N N dng tip theo, dng th i ghi si l chiu di ong thng th i. Kt qu : Ghi ra file GHep.Out Dng u ghi din tch ln nht tm c, chnh xc n 2 ch s sau du phy. 3 dng tip theo, mi dng ghi danh sch tn cc on thng c chn lm mt cnh ca tam gic. Hng Dn : Ta dng phng php qui hoch ng: Gi C(k,i,j,)l c gi tr cho bit c th phn tch tp cc on thng t 1 n k thnh 3 tp trong tng di l i, j v l. Khi , ta d dng c th tnh cc C(k,i,j,l) t cc C(k-1,x,yz) dn gin bng cc php th ghp on k vo cc tp i , j , l. Khi nghim ca ca bi ton s oc tm thy trn c c duyt qua cc C(n,x,y,z) xem b no xy dng nn 3 cnh tam gic c din tch ln nht. Ch : + Tnh C(k,i,j,l) thc cht l ch cn C(k,i,j) vi i <= j, v i+j+l bng tng di cc on t 1 n k. + R rng C(k,i,j) ch cn tnh t cc C(k-1,x,y) nn khng cn phi lu ton b C(k,i,j) m ch cn lu 2 mng C(i,j) tnh ln nhau. Dy nh phn Bi ton 41 : bi : Mt tp hp S gm cc dy N bit 0, 1 trong khng c hai bit 1 no k nhau. V d vi N = 5 th S gm cc dy 00000, 00001, 000101, . Tp S c sp xp theo chiu tng dn ca s nguyn tng ng m dy bit bieu dien. Cho s N v mt s nguyn M hy cho bit dy bit th M trong S. D liu : Vo t file Nhiphan.Inp Mt dng ghi 2 s N, M (N <= 40, M m bo c nghim) Kt qu : Ghi ra file Nhiphan.Out Dy N s 0, 1 ghi lin nhau m t dy nh phn tm c. Hng Dn : Gi C(i) l s cc phn t ca tp S ng vi N = i. Cng thc tnh truy hi C(i) = C(i-1) + C(i-2) C(0) = 1; C(1) = 1; Thut ton xy dng dy M nh sau: For i := 1 to N do Begin If M > C(N-i) then
- 48 -

Collected & Converted by ng Tin Cng

Begin Bit[i] = 1; M = M - C(N-i); End Else Bit[i] = 0; End; on 1 Bi ton 42 : bi : Cho hai s nguyn dng N v k, tp S gm cc dy nh phn di N tho mn s cc on 1 lin tip bng k. V d N=5, k = 2 tp S gm cc dy 00101, 01011, 11011, . Cc phn t ca S oc sp xp theo th t tng dn ca s nguyn tng ng. Hy cho bit dy nh phn th M ca S. D liu : Cho t file Doan1.Inp Mt dng 3 s nguyn N, k , M (N <= 50). Cc s cho m bo c nghim. Kt qu : Ghi ra file Doan1.Out Mt dng gm cc s 0, 1 ghi lin nhau th hin dy nh phn tm c. Hng Dn : Gi C(i,j) l s cc dy nh phn di i c j on 1 lin tip, ta dng cng thc sau tnh C(i,j) C(i,j) = 0; For u = i downto 1 do C(i,j) := C(i,j) + C(u-2,j-1) + C(u-1,j); Sau khi tnh cc C(i,j), ta xy dng dy th M nh sau: i := 1; for j := k downto 1 do begin if M <= C(N-i,j) then begin Bit[i] := 0; i := i + 1; end else begin M := M - C(N-i,j); repeat Bit[i] := 1; i := i+1; if M > C(N-i,j-1) then M := M-C(N-i,j-1) else Break; until False;
- 49 -

Collected & Converted by ng Tin Cng

end; end; for j := i to N do Bit[j] := 0; Bi ton 43 : Chi ph ng i bi : Mt Cng ty vn ti ng b mun xc nh chi ph nh nht di chuyn t mt thnh ph ny n mt thnh ph khc. Cng ty c danh sch nhng trm xng trn on ng di chuyn gia hai thnh ph. Danh sch bao gm v tr ca cc trm xng v gi bn mi lt xng cc trm. n gin cho cch tnh chi ph, Cng ty s dng cc quy tc v hnh vi ca ngi li xe: Li xe khng dng li trm xng np xng cho xe chng no xng tng bnh xng ca xe vn cn nhiu hn mt na dung tch ca bnh v vn t trm xng tip theo. Mi khi dng xe np xng, li xe lun np y bnh xng. Mi khi dng xe np xng trm xng li xe lun ung nc mt 2 USD. im xut pht bnh xng lun c y. Cn vit chng trnh tnh chi ph ti thiu li xe mua xng v ung nc trn dc ng i. D liu: Vo t file vn bn MINBT.INP: Thng tin v on ng cu i bao gm cc dng sau: Dng 1: Cha mt s thc l khong cch (km) gia im xut pht v ch. Dng 2: Gm 3 s thc v mt s nguyn: V - dung tch ca bnh xng (lt); C - khong cch xe c th i nh s dng 1 lt xng (km); P - chi ph y xng im xut pht (USD); n - s lng trm xng trn tuyn ng (n < 101). Mi dng th i trong s n dng tip theo cha hai s thc. di - khong cch t im xut pht n trm xng th i pi - gi mt lt xng (n v tnh: cent = 0,01 USD), i = 1,2,...n Gi thit rng cc trm xng c sp xp theo th t tng dn ca khong cch t im xut pht n chng v cc trm xng c phn b cc v tr thch hp xe c th t ch m khng thiu nhin liu. Kt qu: Ghi ra file MINBT.OUT tng chi ph (USD) (c tnh c chi ph xng im xut pht). Quy c lm trn chi ph mi ln chi trm xng n cent. V d: File MINBT.INP v MINBT.OUT c th MINBT.INP 475,6 11,9 27,4 14,98 6 102.0 99.9 220.0 132.9
- 50 -

Collected & Converted by ng Tin Cng

256.3 147.9 275.0 102.9 277.6 112.9 381.8 100.9 MINBT.OUT 27.31 USD Hng Dn : Gi Mind[i] l s tin t nht khi dng i . Ta c : Mind[i]:=MinMind[j]+Tin j n i Bi ton ny ging bi ton 6 dng 1 trn . Qun c min. Bi ton 44 : bi : Trong bi ton ny, mt qun c min l hnh c kch thc 2*1, mi ghi mt s nguyn dng khng qu 10. C N qun c min xp thnh hng ngang nh hnh v di y. 1 6 6 10 6 2 8 8 6 5 4 2 4 1 3 6 8 9 9 5

Yu cu : Cho hin trng ca cc qun min hy tm cch lt cc qun min(i ch trn vi di) sao cho chch lch ca tng cc s hng trn vi hng di l nh nht vi mt s t nht cc php lt. D liu : Cho t file Domino.Inp Dng u tin ghi s nguyn dng N (N <= 50) Dng th hai ghi cc s hng trn. Dng th ba ghi cc s hng di. Kt qu : Ghi ra file Domino.Out Dng u ghi chch lch nh nht tm c v s cc min cn chuyn. Dng th hai ghi danh sch th t cc qun min cn chuyn. Hng Dn : Ta gii bi ton bng phng php qui hoch ng. Gi C(i,j) l s cc php lt nh nht vi cc qun t 1 n i, hng trn c tng l j C(i,j) = min{ C(i-1,j-Tren(i)) , C(i-1,j-Duoi(i)) + 1} T cc C(i,j) ta d dng tm ra chch lch ti thiu v s lt nh nht. Lp rp linh kin Bi ton 45 : bi : Trong dy chuyn lp rp, mt rbt phi lp rp ln lt N linh kin theo th t t 1 n N . Rbt c M cng c lp rp. Bit C(i,j) l thi gian rbt lp linh kin i bng cng c j (1 <= i <= N ; 1 <= j <= M), ng thi nu i, j l hai cng c c dng trong lp rp hai linh kin lin tip nhau th rbt phi mt thm D(i,j) thi gian (1 <=
- 51 -

Collected & Converted by ng Tin Cng

i,j <= N). Hy ch ra cho rbt lch trnh thc hin lp rp cc linh kin sao cho tng thi gian l nh nht. D liu : Cho t file laprap.Inp Dng du ghi hai s N, M ( N, M <= 100 ) N dng tip theo m t ma trn C. M dng cui mi dng M s m t ma trn D (Cc s cho trong input u l cc s nguyn dng <= 32000 ) Kt qu : Ghi ra file Laprap.Out Dng u ghi T l thi gian nh nht tm c. Dng hai ghi N s, trong s th i l cng c thc hin lp rp linh kin i. Hng Dn : Ta gii bi ton trn bng phng php Qui hoch ng: Gi F(i,j) l thi gian ti thiu cn lp rp i linh kin u tin trong s dng cng c j thc hin lp rp linh kin i. Ta tnh F(i,j) theo cng th sau : F(i,j) = Min {F(i-1,k) + D(k,j) + C(i,j)} 1 <= k <= M ng cho a gic li Bi ton 46 : bi : Cho mt a gic li N nh trn mt phng, cc nh theo th t vng quanh c tn l 1, 2, ...., N, N 20. 1) Hy chia a gic ny thnh N-2 tam gic bi cc ng cho khng ct nhau ti cc im khc nh sao cho tng di cc ng cho dng chia nh nht. 2) Hy chia a gic ny thnh N-2 tam gic bi cc ng cho khng ct nhau ti cc im khc nh sao cho ng cho di nht trong cc ng cho dng c di nh nht. Ch rng ni chung hai cch chia hai cu khng ging nhau. D liu : Vi 1 i N, nh i c cho bi to (l cc s thc) Ai, Bi ghi dng th i ca file DG.INP. D liu ng nh m t (l cc nh lin tip ca mt a gic li). Kt qu : Ghi ra file DG.OUT, dng th nht ghi gi tr tng cc ng cho, trong N-2 dng tip theo ghi mi dng mt ng cho bng cch ghi tn hai nh u mt. Sau l dng ghi di ng cho di nht, trong N-2 dng tip theo ghi mi dng mt ng cho theo quy cch nh cu 1. Hai s lin tip trn mt dng cch nhau t nht mt du trng. S thc vit vi 3 s l sau du phy. V d: DG.INP DG.OUT 0 0 1.412 1 0 1 3 1 1 1.412
- 52 -

Collected & Converted by ng Tin Cng

0 1 Hng Dn : Cu1 - Cc nh c tn K=0,1,2, . . ., N-1 s lun hiu l K mod N. - Vi L = 1, 2, . . , N-2, xt a gic gm L nh lin tip P, P+1, . ., P+L-1 xem cnh (P,P+L-1) cng l mt ng cho. K hiu S(P,P+L-1) l tng nh nht ca cc ng cho khi chia L thnh cc tam gic. Ta c S(P,P)=S(P,P+1)=0; S(P,P+2)=d(P,P+2) ( di cnh (P,P+2). - Gi s ta bi(P,P+L-1) vi P=0, . ., N-1 v L=1,2, . ., K. Ta s c h thc quy S(P,P+K) = d(P,P+K) + Min {S(P,i)+S(i,K)} (*) trong Min ly theo mi i m P+1<=i<=P+K-1. Cu 2 Tng t vi S(P,P+L-1) hiu l Min ca Max ca di cc ng cho v (*) tr thnh h thc sau: S(P,P+K) = Min Max{d(P,P+K), S(P,i), S(i,K)} (**) Cp in Bi ton 47 : bi : Trong mt t cm tri , c N tri c cm . V tr ca mi tri , coi nh mt im trn mt phng , ln lt l cc nh ca mt a gic li. Ngi ta cn tin hnh cp in cho cc tri. My pht in phi t ti tri 1 ( tri ch huy ), c mt ng dy in i qua tt c N tri , bt u t tri 1 c my pht . Yu cu : tm cch mc in cho cc tri sao cho dy in cn mc qua tt c N tri c di nh nht. D liu : N ( N <= 200) N dng tip theo , dng th i ghi hai s x , y cho bit to trn mt phng ca tri th i Kt Qu : Dng u l di dy tm c . Dng 2 ghi N s l th t ca cc tri trn ng dy , bt u t tri 1. Hng Dn : Ta gii bi ton trn bng qui hoch ng : Nu gi A(i,j) l di dy ngn nht cn mc cho cc tri i , i+1 , j ( cc nh theo chiu nh s tc l sau n l 1 ) , v bt u t i B(i,j) cng nh ngha tng t nhng thay v bt u t i phi bt u t j. Gi s ta tnh c ht cc A(i,j) , B(i,j) m j-i <k , ta s tip tc tnh trong trng hp j-i=k. Ta ch rng v a gic l li nn tp nh i , j cng to thnh a gic li , do ng i ngn nht phi c dng : Hoc i dn i+1 : di ngn nht = di(i,i+1) + A(i+1,j) Hoc i n j : = di(i,j) + B(i+1,j)
- 53 -

Collected & Converted by ng Tin Cng

Ch phi l B(i+1,j) v khi ng i tip bt u t j. A(i,j) = min ca hai di trn . Tng t ta tnh B(i,j) cng vi A(i,j) Nh vy cui cng di dy nh nht chnh l A(1,n)

- 54 -

You might also like