Download - Tài liệu giáo viên tin học
-
1
CHUYN 1
NH HNG TRANG B KIN THC C S TIN HC
Trong trng PTTH mn Tin hc c trin khi ging dy cho mi hc sinh.
Vi c th ca trng chuyn, nu xt ta trn cc gc :
Trnh tip thu, Yu cu ca chuyn ngnh i vi Tin hc,
hc sinh c th c chia thnh ba lp i
tng khc nhau:
Hc sinh cc lp khng chuyn tin, Hc sinh lp chuyn tin nm ngoi danh sch d tuyn hoc i tuyn,
Hc sinh i d tuyn hoc i tuyn.
Mi loi i tng c yu cu ring v kin
thc cn trang b v ko theo l ni dung v
phng php truyn t.
Vi hc sinh chuyn tin (khng thuc din
bi dng i tuyn) v hc sinh khng
chuyn tin trong phm nh trng ph
thng ch cn dng li vic trang b kin
thc c s, nhng kin thc m trong mt
chng mc no sau khi tt nghip ph
thng hc sinh cn nh c v c tc dng
h tr trong vic hc tp tip theo cng nh trong cng vic sau ny. Mi i
tng cn c mt khi lng kin thc c s ring.
1.1. KHI KHNG CHUYN
Khng chuyn tin l nhm hc sinh ng o nht. i vi hc sinh khng
chuyn tin, k nng lp trnh khng phi l iu quan trng nht. Hc sinh
thuc nhm ny ch cn nm c:
Tin hc cung cp dch v c hiu qu trong mi lnh vc ca cuc sng
hng ngy,
Cc dch v c cung cp trn nguyn l v c s no?
Ti sao cc dch v mang li hiu qu lao ng cao cho con ngi?
Mi trng tin hc ha cao tc ng n suy ngh v hnh ng ca
chng ta nh th no?
Hnh 1
-
2
Khi trnh by mi vn , khng nn i qu su vo chi tit k thut, khng bt
hc sinh phi nh cc thao tc c th cho tng loi cng vic. iu ch cht l
nguyn nhn ti sao nng sut lao ng li tng ln, ta c cung cp nhng
dch v no, nu cha bit hoc qun th tm kim cch tc ng ln h thng
nh th no t c mc ch c th ca mnh.
V d, vi chng Son tho vn bn, nhng iu m hc sinh phi nh sau khi
hc l:
Cc h thng son tho vn bn cho php ta tch ring 2 phn c lp:
ni dung vn bn v hnh thc trnh by vn bn,
C nhiu kh nng tc ng vo hnh thc trnh by: t l cho trang vn
bn, kiu ch, khong cch dng, . . .
Cc h thng son tho vn bn khc nhau kh nng cung cp cc dch
v trnh by, kh nng lm vic vi cc dng ni dung (bng, hnh nh,
biu , cng thc, v.v. . .),
H thng cng hin i th cc kh nng ny cng nhiu v cng d s
dng.
Trong s cc tnh nng trn, tnh nng quan trng nht v mang li thay i v
cht lng l vic tch ring ni dung vi hnh thc. Chnh iu ny lm cho
vic son tho vn bn trn my tnh khc hn vic vit tay trn giy hoc nh
my ch.
i su hn na, c th trnh by v c ch hot ng ca h son tho. Vi mi
vn bn h thng to mt c s d liu qun l. C s d liu cng phong
ph th kh nng ca h thng cng ln.
Trm nghe khng bng mt thy, cn phi nu rt nhiu v d minh ha hc
sinh thy c cc kh nng l c thc.
Gi thc hnh l lc hc sinh tri nghim li nhng iu nghe, thy, hiu v
nh. y cng l lc rn luyn k nng tm kim v kch hot cc chc nng c
th trong trng hp c th.
Vic so snh cc h thng son tho vn bn khc nhau s cung cp cho hc
sinh kin thc v l gic tin ha, pht trin ca h thng.
-
3
T y ta c th cung cp cho hc sinh kh nng t on nhn v d bo kh
nng pht trin ca cc loi h thng son tho ni chung nh son tho hnh v
(photoshop, Microsoft Visio, . . .), son tho nh v videoclip (Movie Maker,
PowerPoint, . . .), cc h son tho chuyn dng bin tp ti hiu chuyn
ngnh (ton, l, ha, . . .).
Nh vy, ch cn thng qua h thng son tho vn bn ta cung cp cho hc
sinh kin thc v mi loi h thng son tho cho mi loi i tng!
Ton b chng trnh lp 12 l xem xt li mt cch tng qut ha phn ln cc
kin thc c.
Nh vy, kin thc c s khng nhiu. Vi i tng hc sinh ph thng ta,
phi i t c th n tng qut ha, phi c cc v d c th, nhng phi ht sc
trnh:
Ch dn qu nhiu cc thao tc c th,
Ch dn mt cch ri rc, khng phn loi v h thng ha,
Yu cu hc sinh nh, thuc qu nhiu cc chi tit c th ca h thng c
th.
H SON THO
Vn bn
Bng
Hnh nh
m thanh
Kch thc
Mu
Cc khun dng b tr
Hnh ng
NI DUNG HNH THC
Ngi dng ch ng
H thng h tr
Hnh 2
-
4
Tt c cc loi h thng u lun lun hot ng ca theo s :
Vic dy Exel, Access cng hon ton tng t nh dy h son tho vn bn.
Tuy nhin mi h thng cn nhn mnh cho hc sinh thy r nhng mt mnh
v yu ca h thng ang xt, cho hc sinh nh c kh nng v phm vi
ng dng ca loi h thng ny. l nhng iu ta cn v ch cn t c i
vi i b phn hc sinh ph thng. Nhng iu ny khng lc hu trong sut
phn cuc i tip theo ca hc sinh.
K nng lp trnh khng phi l trng tm i vi cc hc sinh ca nhm ny.
Tuyt i b phn hc sinh thuc nhm ny s khng c nhu cu t lp trnh
gii quyt cc vn ca mnh trong tng lai.
1.2. KHI CHUYN TIN
c trng c bn ca lp i tng ny:
Nhiu hc sinh bit v s dng kh thng xuyn cc dch v tin hc,
C kin thc c s ton tt,
C kh nng v nhu cu lp trnh.
Kin thc cn trang b bao gm 2 phn: cc Kin thc chung v Tin hc v C
s lp trnh. Kin thc chung v Tin hc vn rt cn thit vi loi i tng ny
CSDL
H Qun tr CSDL
Npd liu
Truy vn
Kt qu
Hnh 3
-
5
v n s tc ng rt ln ti phn C s lp trnh, lm cho vic lp trnh d dy
hn v dy c su hn. Cc im mu cht trong phn ny vn l:
Cc dch v c cung cp trn nguyn l v c s no?
Ti sao cc dch v mang li hiu qu lao ng cao cho con ngi?
Mi trng tin hc ha cao tc ng n suy ngh v hnh ng ca
chng ta nh th no?
Vi i tng ny cn gii thch su hn v c ch trong hin thc ha cc
nguyn l v c s . Hc sinh khng cn phi nh, phi thuc nhng kin
thc ny nhng phi bit ti sao my tnh p ng c yu cu ca ta v p
ng bng cch no.
V d, khi ta nhy chut vo mt biu tng no trn mn hnh nn
(Desktop) ti sao h thng bo i tng c chn hoc h thng kch hot
cng vic tng ng vi biu tng?
Nn gii thch cho hc sinh v c ch hot ng ca h thng: mi biu tng c
biu din di dng mt bc tranh hnh vung. H thng c c s d liu qun l v
tr cc hnh vung ny trn mn hnh nn v cng vic (chng trnh) tng ng vi
hnh ny. Khi ta nhy chut, da vo v tr ca chut h thng s xc nh c biu
tng m ta chn (hoc khng c biu tng no c). Ph thuc vo cch nhy chut
h thng s bit ta mun chn hay mun kch hot cng vic c chn v c hnh
ng tng ng: i mu nn ca biu tng hoc kch hot cu ln gi chng trnh
tng ng. Nu ta ko biu tng sang v tr mi, h thng s cp nht li c s d
liu qun l Desktop.
Tt c mi gii thch u hng suy ngh ca hc sinh ti hai :
Mi cng vic u c c s d liu tng ng (c th rt n gin hoc
phc tp),
Vic lp trnh quyt nh tt c!
Nu hc sinh, c th ngc nhin, nhng khng cn thy b him hay ng ngng
trc mt dch v no ca h thng th c ngha chng ta thnh cng
trong vic chun b bc sang phn lp trnh.
iu ny rt quan trng v:
Hc sinh thy c l gic ca vn ,
Thy c vai tr, v tr ca khu lp trnh,
Thy c vai tr, v tr ca d liu v t chc d liu.
Vic chuyn sang dy lp trnh s bt kh khan, nhm chn v ri rc. i vi
hc sinh trong i tuyn tng lai iu ny l ht sc cn thit v hc sinh thy
-
6
c tm quan trng ca d liu, t ngang hng vic thit k, t chc d liu
vi gii thut. Thng thng, hc sinh ch quan tm n gii thut trn quan
im ton hc thun ty. iu ny l cn thit, nhng ch l mt khu nh trong
qu trnh gii bi ton.
Chnh v vy, cc ngn ng lp trnh pht trin hin nay cung cp rt nhiu cng
c h tr t chc d liu v cc cng c thao tc chun vi cc d liu .
1.3. HC SINH NNG KHIU
Kt qu hot ng bi dng hc sinh nng khiu l mt trong s cc ch tiu
quan trng nh gi hiu qu ca mt trng chuyn.
Nu xem xt trn quan im cng ngh, qu trnh tc ng ln hc sinh nng
khiu c 3 khu:
Pht hin,
o to,
Bi dng.
Pht hin: Tm ra cc hc sinh c tim nng tr thnh hc sinh gii Tin hc.
o to: Xt ring v mt chuyn mn l trang b cc kin thc c s cn thit
vi mt hc sinh nng khiu.
Bi dng: Trang b thm cc kin thc chuyn su, rn luyn v nng cao k
nng t duy linh hot, sng to.
Trong phn ny ta ch xem xt cc vn lin quan ti khu o to v cng
ch xem xt gc trang b cc kin thc c s. y l cng vic kh nhm
chn , bun t. Khi lng kin thc thuc din c s kh ln, t thay i trong
mt khong thi gian di, s v trnh t truyn t tng i n nh, mt
bng kin thc ca hc sinh cha ng u. Vi thc t hin nay ta c khng
qu 4 thng cho vic trang b kin thc c s v phi lm vic ny an xen vi
vic bi dng, nng cao k nng ng dng sng to i vi cc kin thc c s
trang b trc . Nh vy, cn phi xc nh r, nhng kin thc g thuc
loi c s, tc l nhng th phi trang b n tn rng cho mi hc sinh (trong
i tuyn hoc d tuyn). Vi mi m hnh ton hc cho mt gii thut c s
cn chun b nhiu bi ton tng ng vi ni dung pht biu khc nhau
trnh s nhm chn xut hin trong hc sinh, c bit l nhng i tng
qua khu o to ca nm trc.
-
7
1.3.1 NH HNG
Cc cuc thi Olympic Tin hc c trin khai rng ri gn ht cc nc trn
th gii hng ti cc mc ch:
y mnh phong tro dy v hc Tin hc nhm p ng cc yu cu ca
cuc sng ang c tin hc ha su rng v vi tc cao trong mi
lnh vc,
Pht hin cc nhn t ni bt o to v khai thc ngun nhn lc nh
cao, c tri thc v c tay ngh theo kp s pht trin ca l thuyt v yu
cu ca thc t.
Vic o to, bi dng hc sinh gii Tin hc chu tc ng rt nhiu ca hai
yu t:
S pht trin ca l thuyt,
S pht trin ca cng c Tin hc.
C th thy r xu hng dy v hc Tin hc cho n nay chia thnh ba giai
on:
Giai on I: nhng nm cui ca th k XX,
Giai on II: Thp k u tin ca th k XXI,
Giai on III: Thp k th 2 ca th k XXI, tc l nhng nm hin ti.
giai on I, ngnh Tin hc mi tch ra v pht trin thnh mt ngnh khoa
hc c lp. Ngi ta tp trung mi sc lc vo vic xy dng nn mng cho
mt ngnh khoa hc mi, c gng tm cch gii quyt c cc lp bi ton
truyn thng xut hin khi tip cn bi ton trn quan im ton hc. Vic
nm vng cc kin thc ton hc l iu kin ch yu gii quyt cc bi ton
tin hc. Ngoi ra cn phi lu ti cc rng buc t nhin v b nh nh v tc
tng i thp ca my tnh lc by gi. l s tip tc ca t duy nhng
nm 70 80 ca th k 20.
V d, mt vi trong nhng bi kh ca nhng nm 90:
Bi 6. IOI 1990 Belarus
Cho cc s nguyn a v n (n < 100). Gi thit ta c mt ngn ng lp trnh ch c th
thc hin php gn v php nhn. Hy khi to chng trnh tnh b = an vi s php
nhn cn thc hin l t nht.
V d, vi n = 13, chng trnh c dng nh sau (trong cp ngoc {} l thng tin ch
thch):
X1 := a; {= a}
-
8
X2 := X1*X1; {= a2}
X3 := X2*X2; {= a4}
X4 := X3*X1; {= a5}
X5 := X3*X3; {= a8}
X6 := X5*X4; {= a13
}
B := X6;
Phn tch: Xt n dng biu din nh phn, n = 1310 = 11012. Gi m l s ch s
c ngha trong dng biu din nh phn ca n, k l s lng bt bng 1, s php
nhn phi thc hin l (m-1)+(k-1).
C th d dng xc nh s lng bin trung gian cn s dng v cch tnh gi
tr cc bin trung gian .
Nhn xt: Kch thc bi ton rt nh, ph hp b x l 8 bt ph bin thi k
(PC XT).
Vo na sau ca nhng nm 90 kh ca bi ton bt u thay i:
Bi 6. IOI 1996 Hungary HNH VUNG K DIU
Tip theo s thnh cng ca khi lp phng ni ting ng Rubik xut phng n
phng ca tr chi ny. l mt tm nha c ghp t 8 hnh vung thnh 2 hng,
mi hnh vung c mt mu, nh s t 1 n 8 theo chiu kim ng h, bt u t hnh
vung trn tri (Xem phn bn tri ca hnh 1). Cu hnh ny c gi l cu hnh ban
u.
C 3 php bin i c s vi tm
nay:
A i ch 2 hng trn v
di,
B Chuyn dch vng trn
cc ct sang phi mt v tr,
C - Chuyn dch vng trn 4
hnh vung gia theo chiu kim ng h.
Tt c cc cu hnh khc nhau ca
tm nha u c th nhn c t
cu hnh ban u bng cch p dng
cc php bin i c s.
Hy vit chng trnh xc nh xc nh dy bin i c s a tm nha t cu hnh
ban u v cu hnh ch cho trc (Yu cu A). Bn s nhn thm 2 im thng nu
s php bin i tm c khng vt qu 300 (Yu cu B).
D liu: Vo t file vn bn INPUT.TXT gm mt dng cha 8 s nguyn xc nh cu
hnh ch.
4
1
1 2 3
5
1
8 7 6
4
1
1 2 3
5
1
8 7 6
4
1
1 2 3
5
1
8 7 6
5
1
8
7
6
4
1
1 2
3
B
A
Hnh 4
-
9
Kt qu: a ra file vn bn OUTPUT.TXT, dng u tin cha s nguyn m s php
bin i ca dy tm c, mi dng trong m dng sau cha mt k t xc nh tn php
bin i. Cc php bin i a ra theo trnh t thc hin.
V d:
INPUT.TXT OUTPUT.TXT
2 6 8 4 5 7 3 1 7
B
C
A
B
C
C
B
Phn tch: Gi R = (r1, r2, r3, r4, r5, r6, r7, r8) l vc t m t trng thi ca Rubic
phng. R l mt hon v ca cc s t nhin t 1 n 8. Bng vic p dng cc
php bin i cho ta c th lm cho R nhn gi tr l hon v bt k. Nh
vy, s trng thi khc nhau ca Rubic l 8! = 40320.
Ngy nay, vi cc cng c phn cng v phn mm hin i, y l mt bi
ton loang n gin.
Nhng thi k cui nhng nm 90, cc cng c ch cho php s dng b nh
64KB tnh + 64KB ng, tc my tnh ph bin 33MHz y l mt bi ton
kh. Cn phi kho st, tm cc php bin i macro c s, m t li gii qua
cc php macro ny, khai trin macro v rt gn, tuy khng nhn c dy php
bin i ngn nht, nhng dy bin i cng ngn hn nhiu so vi gii hn
thng 300.
Chng ta t c nhng kt qu rc r trong thi k ny v i ng gio
vin tin hc phn ln xut thn t gio vin chuyn ngnh ton. Hc sinh ca
chng ta c trang b kin thc c s v ton kh tt.
Giai on II t nhng nm 2001 n 2007, s tin b v cng ngh v s ph
cp ca cc h thng phn mm tin tin a n nhng s chuyn dch
trong vic o to chuyn gia trong lnh vc tin hc. iu ny dn n nhng
thay i trong cng tc pht hin, o to v bi dng hc sinh gii tin hc.
Do ni dung thi Tin hc Quc t cng c nhiu thay i. Cc kin thc gii
thut c coi l nh cao trc y by gi tr thnh bng cu chng
m ai cng phi bit v phi thuc. Nhng gii thut phc tp, t dng th khng
-
10
nht thit phi thuc, nhng bt c ai v lc no cng c th tra cu, tm kim
chng trn Internet khi cn thit. S thng minh v tnh sng to by gi phi
th hin khng phi ch bn thuc nhiu hay t cc gii thut khc nhau, cng
khng phi bn ci t chng nhanh ti mc no. Th thch by gi l ch
bn c th tm ra nhng gii php hu hiu gii quyt mt cch c hiu qu cc
bi ton cc vn c m hnh ton hc n gin nhng c kch thc ln hay
khng?
t c mc ch ngi lp trnh phi bit tn dng ti a kh nng m
phn cng v h iu hnh cung cp. Cc h thng lp trnh mi nh Free
Pascal, Dev C++ (nhng phin bn u tin) to iu kin ngi dng
khai thc c ti a kh nng ca phn cng.
giai on ny, gii mt bi ton olympic thc cht ta phi xy dng mt c
s d liu (CSDL) nh, t chc qun l v truy vn ti CSDL tm ra li
gii cn thit.
c im c bn ca s trn l qu trnh gii bi ton c chia thnh 2 giai
on phn bit:
Ghi nhn d liu,
Khai khong d liu (Data Mining).
Vic ghi nhn d liu khc vi vic nhp thun ty l thng thng d liu
c lu li sau khi qua mt s php bin i n gin. Trong rt nhiu
Hnh 5
D liu vo
Np d liu
Kt
qu
Ghi nhn d liu
CSDLTruy vn
Khai khong d liu
-
11
trng hp d liu c n v lu tr theo cm, bao gm gi tr v cc thuc
tnh. Cm d liu ph bin hn c l gi tr v th t xut hin.
Phn khai khong d liu i hi s linh hot v sng to cao ca ngi lm.
m bo hiu qu cao trong khai khong v truy vn nhiu lp bi ton i
hi phi s dng cc cu trc d liu nh cc loi cy nh phn, cy qun l
interval, cy tin t, v.v. . ., ngi lp trnh phi bit t chc v qun l stack,
heap, hng i, hng i hai u, hng i u tin , . . .
Tt c nhng iu ny lm thay i mt cch ng k n ni dung v
phng php trang b kin thc c s cho hc sinh.
ng tic l ti tn nm 2007 khi th gii i ht chng ng quan trng ny
th chng ta mi c php chnh thc t chn ln mnh t in y du
chn ca nhng ngi tin phong, i vo con ng vn by gi tr thnh k
nim p ca nhng ngi i trc.
giai on III, tc l nhng nm gn y, trong danh mc yu cu i vi
ngi lp trnh c thm cc i hi mi:
Khng nhng bn phi ng vng trn nn tng ca phn cng v h
thng m cn phi bit khai thc ti a kh nng ca cng c lp trnh.
C th, bn phi khai thc c trit mt mnh ca cc th vin ca
h thng lp trnh c trong tay,
C kin thc c s ton hc vng v su,
Trin khai ng dng gii thut kp: kt hp nhiu gii thut c s n
trong vic t chc d liu,
Nng cao tnh hon thin ca chng trnh: chng trnh phi cho kt qu
ng v x l c hiu qu vi tng lp d liu (ca bi ton).
on nhn hng gii v tm c gii thut c hiu qu hc sinh cn c
trang b:
C s ton hc su v rng hn,
C k nng trin khai mt gii thut vi vic ng dng cc loi cu trc
d liu khc nhau v phm vi hiu qu ca cc cch trin khai ,
K thut lm vic vi mt s lp d liu c th nh hon v cc s t 1
n n, tp hu hn cc s nguyn khc nhau tng i mt . . .
Trong nhiu trng hp chng trnh gii bi ton khng n thun l mt h
qun tr CSDL m l mt h qun l c s tri thc. Nh vy i tng cn
chun b khng n thun l mt CSDL m l mt CSDL cng vi mt c s tri
-
12
thc. Nh vy chng trnh gii trn thc t l mt h chuyn gia nh. Phn ln
cc bi ton loi ny thuc lp bi ton giao tip ngi my (interactive task).
Trn th gii, loi bi ton ny c a vo ngy cng nhiu trong cc k thi
quc t, quc gia v khu vc. bt u xut hin cc bi ton khng thuc
loi giao tip ngi my nhng vn i hi chin lc tm kim ng.
Hc sinh khng nhng phi bit cc gii thut khc nhau cho tng lp bi ton
m ngoi vic nh gi phc tp cn phi hiu su v cc thuc tnh lin quan
ti gii thut hoc cc tnh cht ton hc ca nhng i lng s dng trong gii
thut. V d, v s Fibonacci, ngoi cch tnh theo nh ngha Fn = Fn-1 + Fn-2 (n
2) hc sinh cn bit cc cch tnh khc, bit c tc tng ca cc s trong
dy l xp x 1.618.
Qu thi gian ging dy khng nhiu, v vy cn cn nhc k khi la chn ni
dung, phng php v trnh t truyn t kin thc c s cho hc sinh. y l
khi lng kin thc cn trang b trong qu trnh ging dy chung v ch yu l
trong giai on lm vic vi i d tuyn. Khi lng kin thc phn ny rt
ln, nhng n nh trong khong thi gian di v quyt nh cht lng, hiu
qu ca vic bi dng i tuyn sau ny. Chnh v vy n cn phi c chun
b ht sc chu o v chi tit.
i vi i d tuyn, mi chuyn s l tng trnh by bao gm cc ni
dung:
M hnh ton hc: pht biu bi ton di dng ton hc thun ty,
C s ton hc ca gii thut,
Cc cch hin thc ha gii thut:
Hnh 6
-
13
Cu trc d liu,
S x l,
Chng trnh,
phc tp,
Cc loi bi ton c cng m hnh ton hc,
Mt s bi ton ng dng.
Trnh t truyn t khng quan trng, su chuyn mn trong tng mc ph
thuc vo thi lng cho php, vo kh nng tip thu ca nhm hc sinh c th.
Phn S x l l trng tm ca ton b ni dung trnh by. Ni chung, mi
s x l i hi mt cch t chc d liu ring. N ph thuc nhiu vo
cng c lp trnh, ph thuc vo cng c x l m h thng lp trnh cung cp
i vi loi d liu chn. y gii thut c trnh by li trn ngn ng
ca d liu. K nng trnh by gii thut trn ngn ng ca d liu l im yu
ca phn ln hc sinh. Vic rn luyn k nng ny cn quan trng hn lp
trnh! Nu hc sinh trnh by tt mt gii thut no trn ngn ng d liu th
thm ch khng nht thit phi lp trnh.
To thi quen v k nng trnh by gii thut trn ngn ng d liu l mt qu
trnh. to c thi quen th phi tun th nguyn tc Vn n v luyn:
thng xuyn, lin tc yu cu hc sinh tp trnh by. Bn cnh vic trnh by
gii thut vi cc bi mi cn n li cch trnh by cc bi lm. Mt trong
nhng im mu cht c th trnh by c gii thut trn ngn ng d liu
l ni c mt cch r rng, ngn gn v tuyt i chnh xc vai tr, ngha
ca cc d liu dng trong gii thut. Vic trnh by ny c thc trn ngn
ng t nhin v ton hc, v vy tuyt i trnh vic c cu lnh ca chng
trnh!
V d: Chuyn v s Catalan.
Bi ton:
Xt dy s nguyn A = (a0, a1, a2, . . ., a2n) tha mn cc iu kin:
ai 0, i = 0 2n,
|ai ai-1| = 1, i =1 2n.
Yu cu: Cho s nguyn n (0 n 50). Hy tnh s lng dy s A khc
nhau tha mn cc iu kin nu.
-
14
D liu: Vo t file vn bn CAT.INP gm nhiu dng, mi dng cha
mt s nguyn n.
Kt qu: a ra file vn bn CAT.OUT, mi kt qu a ra trn mt
dng di dng s nguyn.
V d:
CAT.INP CAT.OUT
2
6
4
2
132
14
C s ton hc:
Vi n cho trc, gi s lng dy A tm c l cn. Dy s C = (c0, c1, c2, . . .)
c gi l dy s Catalan (theo tn nh ton hc B Eugne Charles Catalan).
S ci c gi l s Catalan.
S Catalan thng gp trong mt lot cc bi ton t hp khc nhau.
Nhng s u tin ca dy s Catalan l:
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, . . .
Cc cch tnh s Catalan cn:
i. , trong l t hp chp k ca n,
ii.
iii.
iv.
n
k
nk
knC
2
v. S lp:
C0 = 1, Cn =2(2n-1)
n+1Cn-1
-
15
vi. Tnh gn ng:
S tnh ton:
Mi cch tnh ph hp vi mt s loi bi ton khi lm vic vi s Catalan. Cc
cch tnh th 2 v th nm ch i hi dng cc php cng v nhn. iu ny
thch hp vi n ln v Cn tng rt nhanh theo n (cng thc 6).
Cch tnh th 5 c phc tp cao nht, nhng li cung cp y thng tin
nht v dy s catalan cng nh vic phn b cc cu hnh to ra mt s ca
dy.
Mt s bi ton t hp c kt qu l Cn:
- S lng biu thc ngoc ng c th xy dng t n cp ngoc trn ( v ),
v d, vi n = 3 ta c 5 biu thc:
((())) (()()) (())() ()(()) ()()()
- S cy nh phn y khng ng cu c n+1 nt l (cy nh phn m mi
nt nu khng phi l l th c ng 2 nt con):
- S ng i t im ta (0, 0) ti im ta (n, n), qua cc im nguyn
ca li vung kch thc nn, ch sang phi v ln trn, khng vt qua
ng cho ni 2 im (0, 0) v (n, n):
p0 = 1, pi=0, i =1, 2, . . ., n
i = 1 n
j =1 i
pi=pi+pi-1cn=pn
Hnh 7
Hnh 8
-
16
- S cch chia mt a gic li n+2 nh thnh cc tam gic bng cc ng cho
khng c im chung bn trong a gic:
- S cch ph ci bc hnh bc thang cao n bng n hnh ch nht, cc hnh
ch nht khng c din tch chung khc khng:
- S lng cc hon v t 1 n n sp xp c bng stack (c th chng minh
c rng mt hon v A = (a1, a2, . . ., an) cc s t nhin t 1 n n c th sp
xp c bng stack khi v ch khi khng tn ti i < j < k sao cho ak < ai < aj).
Bi tp ng dng:
Hnh 9
Hnh 10
Hnh 11
-
17
Bi 1. Xt tp cc biu thc ngoc ng cha n cp ngoc trn. Cc biu thc
c sp xp theo th t t in thnh mt danh sch, trong k t ) c
quy nh c th t t in nh hn (. Cc biu thc c nh s t 1 tr i.
V d, vi n = 5 ta c:
S th t Biu thc
1 ()()()
2 ()(())
3 (())()
4 (()())
5 ((()))
Cho S biu thc ngoc ng c n cp ngoc.
Hy xc nh biu thc th k sau biu thc S trong danh sch.
D liu: Vo t file vn bn BR_LIST.INP:
Dng u tin cha 2 s nguyn n v k (1 n 100, 1 k 1018),
Dng th 2 cha biu thc S.
D liu m bo tn ti li gii.
Kt qu: a ra file vn bn BR_LIST.OUT gm mt dng cha biu thc tm
c.
V d:
BR_LIST.INP BR_LIST.OUT
3 2
(())() ((()))
Bi 2. n v tn binh c n ngi. Ton n v khng ai ging ai, mi ngi c
mt chiu cao ring. Vin thng s ph trch hun luyn c mt thi quen kh
c o: c 9 gi sng, sau lc ngh gii lao gi bui tp, ra lnh tp hp n v
thnh mt hng dc, ai mun ng ch no trong hng cng c! Vin
thng s s i t u hng n cui hng, ch nh 3 ngi i gip nh bp nu
n. Nhng ngi c ch nh s bc sang phi mt bc. Nu 3 ngi c
ch nh ny lm thnh mt hng c chiu cao tng dn nu nhn t u ca
hng, thng s s rt hi lng. Hm n v s c ngh i n tra ng
gi. Nu thng s khng chn c 3 ngi va theo tiu chun trn th thi
ri, kh nng c ngh v n n cm ng gi ng bng kh nng bn b mt
con c mp mc vi rt cm g H5N1 tn cng gia Xa ha ra! M d nu c
c v ng gi th chc g cn c sc m n.
-
18
Tuy vy, nu cn thn mt cht th kh nng thot c con thnh n ca
thng s l rt ln.
Hy tnh s kh nng xp hng bao gi cng tm c 3 ngi theo yu cu
v a ra theo m un m.
D liu: Vo t file vn bn LINE_UP.INP gm mt dng cha 2 s nguyn n
v m (3 n 25 000, 1 m 2109).
Kt qu: a ra file vn bn LINE_UP.OUT mt s nguyn s kh nng tm
c theo m un m.
V d:
LINE_UP.INP LINE_UP.OUT
5 1000 78
Cc gii thut c s
Ngay mc i d tuyn hc sinh vn cn phi c trang b cc gii thut c
bn nh gii thut Dijsktra tm ng i ngn nht, gii thut Kruskal xc nh
cy khung, gii thut so khp KMP, . . .
Cc gii thut cn c trang b 2 mc:
C s ton hc,
C s lp trnh.
Mc c s ton hc cung cp cho hc sinh cc kin thc v bn cht ca s
x l d liu, cch hin thc ha trc tip cc s , cc cu trc d liu
cn t chc. Ni chung, gii thut mc c s ton hc d hiu, d lp trnh,
nhng c phc tp kh cao (thng thng l O(n2) hoc O(nlogn)).
Mc d l c s ton hc nhng sau phn ny hc sinh vn phi bit v nh cc
hm, th tc hin thc ha gii thut. Cc hm, th tc ny nn gii thiu
trc tip cho hc sinh cng vi cc tiu xo t chc d liu v x l (nu c).
C s lp trnh l phn quan trng nht. Cc vn chnh trong trang b c s
lp trnh:
Cc loi cu trc d liu m h thng lp trnh h tr,
L gic nng cao hiu qu ca cc gii thut,
Cc gii thut c hiu nng cao.
Cc kin thc ny cn c trang b cho hc sinh d tuyn v i tuyn hc
sinh c th:
-
19
Khai thc ht sc mnh ca cng c mnh c,
Nm bt c t duy sng to trong vic tm kim v thit k gii thut,
Khng mt nhiu thi gian v cng sc i vi cc kin thc tr thnh
kinh in.
Vic cung cp cc kin thc v cu trc d liu m h thng lp trnh h tr
khng n thun hc sinh trc tip s dng trong bi ca mnh m quan
trng hn l m rng th gii quan ca hc sinh v cu trc d liu, to hnh
mu hc sinh c nh hng trong vic thit k, t chc d liu v xc nh
b cng c x l d liu . Trn thc t, trong phn ln cc trng hp, khi
gii bi ton olympic ngi lp trnh thng t thit k cc cu trc d liu
tng ng ph hp ti a vi nhu cu x l ca mnh. V vy kin thc
phn ny mang tnh cht nh hng, gip cho hc sinh c tm nhn chin lc
trong qu trnh on nhn v thit k gii thut.
Cc h thng lp trnh hin nay nh Free Pascal 2.6, Dev C++ 4.9.9 u cung
cp nhng th vin khng l h tr ngi dng v u c th mang li nhng
hiu qu tng ng trong lp trnh.
Cc h lp trnh trn C++ u cung cp cc cng c chun ha khi to v x l
cc cu trc d liu thng dng nh stack, heap, vector, deque, dng xp hng
u tin v. v. . . V d, vi cu trc d liu c kiu bt k (c m bo bi h
thng) php c.push() lun lun l np d liu vo cui cu trc, c.pop()
xa phn t cui cng khi cu trc, c.front() ly gi tr ca phn t u
cu trc ra x l, . . . Ty tng loi cu trc, c th c cc php x l chun
khc (np vo u/cui cu trc, xa phn t u/cui cu trc, c phn t
u/cui cu trc, truy nhp vo phn t bn trong, v. v. . .
c.push_back() c.pop_front()
c.back() c.front()
Cu trc c
c.pop()
c.push()
Hnh 12
-
20
Ngoi ra h thng cn cung cp mt b cc php x l phong ph tc ng ln
cu d liu khai bo.
Do tnh chun ha cao, vic gii thiu v nm bt cc cng c ny khng i
hi qu nhiu thi gian v cng sc trong ging dy cng nh hc tp.
Vn quan trng l nm c vai tr, v tr cc cu trc c th p dng
ng lc, ng ch v ng mc, m bo hiu qu lp trnh cao.
Trong CSDL cho cc bi ton olympic (v nhiu bi ton thc t khc) nhng
thuc tnh c dng nhiu nht l gi tr v s th t. C++ cung cp kiu d
liu pair (cp) mt cng c ht sc thun tin v hiu qu lu tr v x
l cp d liu c lin quan l gic ti nhau.
Mt s gii thut c s:
Bn cht v s tip cn trong ging dy cng nh hc tp v trin khai ng
dng khng thay i, nhng cht lng gii thut thay i ph thuc vo cu
trc d liu c la chn v cch gii quyt cc bc bt buc c tnh cht
tin nh ca gii thut hoc lp gii thut . Thng thng mt s bc tr
thnh nhng bi ton con thuc lp gii thut khc. Nh vy, yu t gii thut
kp xut hin ngay c trong vic xy dng c s.
Ni dung ca phn trang b kin thc c s:
Bn cht ca vn ,
Cc cch gii quyt,
Gii thut hiu qu nht.
Bn cht ca vn : Xt cc vn n gin, thng gp trong vic gii quyt
cc bi ton, gii thiu vai tr, v tr ca bi ton trong l thuyt gii thut. Vn
c th c xem xt trc tip t m hnh ton hc.
Cc cch gii quyt: Nu ngn gn cc gii thut n gin, hin nhin, d lp
trnh nhng c phc tp cao (O(n3), O(n2)). Phn ny h tr cho hc sinh
hiu su hn bn cht ca bi ton, thy c l gic pht trin, t :
Nhanh chng nm bt c t tng ca gii thut hiu qu nht s xt,
Trang b cho hc sinh phng php t duy sng to, ng li ci tin,
pht trin gii thut.
Cc cch gii quyt hin nhin, tm thng ny vn c tc dng nht nh
trong lp trnh, c bit khi cc bi ton (hoc bi ton con) c kch thc nh.
-
21
Do tnh n gin ca vn , vic lp trnh cho cc gii thut c th giao cho
hc sinh nh cc bi tp ph, b sung.
Gii thut c hiu qu nht: Ni dung ca phn ny l gii thiu cc gii thut
phc tp O(nlogn) hoc O(n) gii quyt bi ton c s nu.
Hc sinh cn nm c:
tng ci tin: Khu no ca qu trnh x l cn ci tin,
Cu trc d liu v s x l,
Lp trnh thnh tho gii thut ang xt.
Vic nm c tng ci tin l iu quan trng v n l kim ch nam hc
sinh c cch tip cn sng to, linh hot vi cc bi tp, bi thi v cc bi ton
thc t sau ny. l mt trong s cc mc tiu quan trng trong vic o to,
bi dng hc sinh nng khiu.
Quy hoch ng:
Vi mi bi ton ng dng gii thut quy hoch ng, ta vn phi tr li r
rng, chnh xc 6 cu hi:
Tn v ngha cc bin phc v s lp,
Cch khai bo cc bin ,
S (cng thc) lp chuyn t mt bc sang bc tip theo,
Gi tr u ca cc bin tham gia tnh lp,
Tham s iu khin lp: thay i t u n u,
Kt qu: u v lm th no dn xut ra.
Cc cch tr li khc nhau s dn n nhng gii thut khc nhau c v cch
thc hin ln phc tp.
V d, bi ton tm dy con tng dn di nht:
Cho dy s nguyn a1, a2, . . ., an. Hy tm dy con nhiu phn t nht ca dy
cho to thnh mt dy tng dn nu gi nguyn trnh t trc sau nh
trong dy ban u.
y l bi ton quan trng thng gp trong nhiu lnh vc khoa hc khc nhau
v trong thc t.
Gii thut I: Quy hoch ng cu phng.
c im gii thut:
phc tp O(n2),
-
22
n gin, ph hp vi vic gii thiu t tng quy hoach ng,
D lp trnh,
Thch hp vi cc bi ton kch thc nh.
D liu: dng 2 mng p1, p2, . . ., pn v d1, d2, . . ., dn, trong :
pi ch s ca phn t trc phn t ai trong dy con tng dn di nht
cha phn t ai trong dy a1, a2, . . ., ai,
di di dy con tng dn di nht cha phn t ai trong dy a1, a2, . . .,
ai.
Khai bo: cc mng p v d c th khai bo tnh v kch thc nh v gii thut
s s dng ht cc phn t trong mng, t 1 n n. Mng d nn khai bo t 0.
S lp: Gi thit tnh c pj v dj, j = 1 i-1.
Tm k tha mn dk = max{dj| aj < ai, j = 1 i-1}. Nu khng tn ti aj< ai
th k = 0.
Gn pi = k v di = dk + 1.
Gi tr u: p1 = 0, d0 = 0, d1 =1.
Phm vi lp: Cng thc lp c tnh vi i thay i t 2 ti n.
Kt qu:
Gi m l di dy con tng dn di nht, m = dk = max{di, i = 1 n}.
Dn xut dy con tm c: cc phn t ca dy con, theo th t t ln
n nh l a[k], a[p[k]], a[p[p[k]]], . . .
dn xut cc phn t theo gi tr tng dn ta c th:
Np cc gi tr vo stack (khi cn khai bo thm mng mi) sau
a t stack ra,
Dng mng d nh du cc phn t thuc dy con v sau duyt t 1
n n a ra cc phn t ai tng ng vi di c nh du:
Hnh 13
-
23
Lu : thun tin cho vic dn xut dy con, trnh phi nh du ta c th
duyt t n v 1 v thay i mt cch thch hp cch tnh dk.
on chng trnh tng ng vi phn chnh ca gii thut:
Gii thut II. Quy hoch ng v tm lim nh phn.
c im gii thut:
phc tp O(nlogn),
Lp trnh tng i phc tp,
L m hnh mu cho gim phc tp cho rt nhiu bi ton quy
hoch ng.
D liu: dng 2 mng P= (p1, p2, . . ., pn) v M = (m1, m2, . . ., mn), trong :
pi ch s ca phn t trc phn t ai trong dy con tng dn di nht
cha phn t ai trong dy a1, a2, . . ., ai,
mj v tr ca phn t ak nh nht dy con tng dn c di ng
bng j trong dy a1, a2, . . ., ai.
Nu cn dn xut dy con: cn thm mng B = (b1, b2, . . ., bn). Tn ti
cch vng trnh vic s dng mng ny!
Khai bo: mng p c th khai bo tnh v gii thut s s dng tt c cc phn t
t p1 n pn, mng m c th khai bo ng (v d, kiu vector) v s phn t
c s dng ng bng di ca dy con tm c. Mng B c th khai bo
di dng mng ng hoc stack.
S lp: Gi thit tnh c pj v mj, j = 1 i-1. di dy con tng dn
di nht hin ti l L.
Hnh 14
-
24
Trng tm ca gii thut l cp nht M: tm kim nh phn j dng ln nht: j L v am[j]
-
25
Hnh 15
-
26
Hnh 16
-
27
Ghi ch: vi cc b d liu ngu nhin c n = 400 000, thi gian thc hin
chng trnh xp x c:
Chng trnh PASCAL: 0.117 giy (Processor Core i7 1.80GHz ),
Chng trnh C++: 0.201 giy (Processor Core i7 1.80GHz).
Hm tin t
Xt dy s nguyn A = (a1, a2, . . ., an). Dy con cc phn t lin tip nhau B =
(ai, ai+1, . . ., aj) c gi l tin t ca A nu ai = a1, ai+1 = a2, . . ., aj = aj-i+1 (i >
1).
V d, vi dy A = (5, 3, 5, 5, 3, 4, 5, 3, 5, 5, 3, 6) ta c cc dy tin t nu
hnh bn.
Dy s P = (p1, p2, . . ., pn) gi l hm tin
t ca A nu pi l di ca dy tin t di
nht kt thc bi phn t ai-1, p1 = 0.
Vi v d trn ta c P = (0, 0, 0, 1, 1, 2, 0,
1, 2, 3, 4, 5).
Yu cu: Cho n v dy s A. Hy xc nh
hm tin t P.
D liu: Vo t file vn bn FPRE.INP:
Dng u tin cha s nguyn n (1
n 106),
Dng th 2 cha n s nguyn a1, a2, . . ., an (|ai| 109).
Kt qu: a ra file vn bn FPRE.OUT n s nguyn xc nh hm P.
V d:
FPRE.INP FPRE.OUT
12
5 3 5 5 3 4 5 3 5 5 3 6
0 0 0 1 1 2 0 1 2 3 4 5
5, 3, 5, 5, 3, 4, 5, 3, 5, 5, 3, 6
Cc dy tin t
Hnh 17
-
28
Gii thut phc tp O(n)
Program P7_50;
Uses SysUtils,DateUtils;
const tfi='FPRE.INP';
tfo='FPRE.OUT';
Var fi,fo:text;
a,p:array[0..1000000]of longint;
n,i,j:longint;
x1,x2,x3,x4,x5,mm1,mm2,ss1,ss2:word;
BEGIN
DecodeDateTime(Now,x1,x2,x3,x4,x5,ss1,mm1);
assign(fi,tfi); reset(fi);
readln(fi,n);
for i:=1 to n do read(fi,a[i]);
close(fi); fillchar(p,sizeof(p),0);
i:=3;j:=0;
while i0 then j:=p[j]
else begin p[i]:=0; inc(i) end;
Hnh 18. S khi ca gii thut. Cc phn t nh s bt u t 0.
-
29
Hnh 19. Chng trnh C++. Cc phn t nh s bt u t 0.
assign(fo,tfo); rewrite(fo);
for i:=1 to n do write(fo,p[i],' ');
DecodeDateTime(Now,x1,x2,x3,x4,x5,ss2,mm2);
writeln(fo);
i:=ss2-ss1; j:=mm2; j:=j-mm1;
if j>n;
for(int i=0;i>a[i];
get_p();
for(int i=0;i
-
30
Min {ai}i=1 n
Max {ai}i=1 n
Tm Min Max
Tm Min (hoc Max) ca mt dy s l bi ton kinh in trong c s lp trnh.
Khi gii thiu v k thut lp trnh v ngn ng lp trnh bao gi ngi ta cng
phi xt bi ton tm hoc
Vic tm cc tr ch thc hin mt ln trn i tng cho.
Trong cc bi ton Olympic v bi ton thc t vn thng gp l tm cc tr
trong khong con cc phn t lin tip t i n i+m hoc tm gi tr ln hn
(nh hn) tip theo v vic tm kim ny cn thc hin nhiu ln. Cc quy lut
ca trit hc th hin rt trc gic trong tin hc. Mt trong nhng quy lut l
Khi s lng thay i n mt mc no th s dn n nhng thay i v
cht lng. Chnh v vy khi chng ta c my tnh mnh hn, c h thng hon
thin hn, c cng c lp trnh cho php khai thc ti a kh nng ca h thng
th ngi ta i hi chng ta phi gii quyt nhng bi ton c kch thc ln
hn v nhng iu ny buc chng ta phi c cch tip cn khc trong mi vn
, k c xc nh v gii quyt cc vn c s.
gii quyt vn ny ngi ta t chc mt hng i u tin q lu tr cc
phn t tim nng. C nhiu cch khai bo q. Cch tit kim b nh nht l
dng hng i vng trn kch thc m. Cch n gin nht v ph hp vi mi
loi ngn ng l khai bo mng mt chiu t 0 ti n.
Xt A = (a1, a2, . . ., an) vi 0 ai 109, 1 m n 106. Yu cu xc nh B
= (b1, b2, . . ., bn), trong
Cn gi thiu cc gii thut phc tp O(n2) trc khi chuyn sang gii thut
ti u nh sau:
Khai bo:
Var q:array[0..1000000]of longint; hoc int q[1000001];
bi =
min {aj} ,j=1 i
vi i
-
31
Hnh 20
Chun b:
a[0]:=-1; a[0]=-1;
q[0]:=0; q[0]=0;
ie:=0;ib:=1; ie=0;ib=1;
X l: Vi i = 1 n:
Chng no a[qie]a[i] dec(ie),
inc(ie); qie:=i;
if ie
-
32
Hnh 21
Kt qu: a ra file vn bn OIL.OUT mt s thc vi 4 ch s sau du chm
thp phn gi trung bnh mt tn du m nh my mua.
V d:
OIL.INP OIL.OUT
10 5 3
3 1 2 3 4 5 2 4 1 3
1.7000
Program OIL_P;
Uses SysUtils,DateUtils;
const tfi='OIL.IN1';
tfo='OIL.OU1';
Var n,m,k,i,ie,ib:longint;
b,c,q:array[0..1000000] of longint;
fi,fo:text;
v:real;
x1,x2,x3,x4,x5,ss1,ss2,mm1,mm2:word;
BEGIN
DecodeDateTime(Now,x1,x2,x3,x4,x5,ss1,mm1);
assign(fi,tfi); reset(fi);
readln(fi,n,m,k);
for i:=1 to n do read(fi,c[i]);
close(fi);
c[0]:=-1; q[0]:=0;ie:=0; ib:=1;
for i:=1 to n do
begin
while c[q[ie]]>=c[i] do dec(ie);
inc(ie);q[ie]:=i;
if ie
-
33
Hnh 22
Thc hin:
N = 999999 M = 100 K = 29 Time: 0.199 sec. Thi gian x l: 0.140 sec.
#include
#include
#include
using namespace std;
ifstream fi ("OIL.INP");
ofstream fo ("OIL.OUP");
float v;
int n, m, k, ie, ib;
int c[1000001],q[1000001],b[1000001];
int main()
{clock_t aa=clock();
fi>>n>>m>>k;
//int c[n+1], q[n+1],b[n+1];
for(int i=1;i>c[i];
c[0]=-1; q[0]=0;ie=0;ib=1;
for(int i=1;i=c[i])--ie;
q[++ie]=i;
if(ie
-
34
Nhn xt:
bi ton trn m khng tham gia tnh ton!
Thay v lu tr min, ta c th lu tr ch s, ni t min,
C cch t chc tnh ton vi t b nh cn khai bo. Nhng iu ny s
lm chng trnh tr nn phc tp hn v tn nhiu thi gian lp trnh.
kho st v nh gi, cc chng trnh di y u c a thm mt
thng tin ph ra file output.
C th tn dng cc cng c t chc d liu do h thng lp trnh cung
cp,
Vic khai thc hp l cc cng c ny s lm chng trnh sng sa, d
hiu v d lp trnh hn,
Vi cc cc bi ton nh, n gin vic s dng thun ty cc cng c t
chc d liu do h thng lp trnh cung cp s dn n vic tng thi gian
thc hin (do phi phc v cc php x l vi cu trc),
lp trnh hiu qu nn thc hin qua 2 bc:
Bc 1: Xy dng chng trnh hot ng ng da trn cc cng
c ca h thng lp trnh,
Bc 2: Ci tin chng trnh nhn c bng cch thay mt s
php x l chun vi cu trc d liu bng cc php truy nhp trc
tip hiu qu hn.
Di y l v d v chng trnh gii quyt bi ton trn,thun ty ch s dng
cc cng c phc v x l hng i hai u.
-
35
Hnh 23
#include
#include
#include
#include
using namespace std;
ifstream fi ("OIL.INP");
ofstream fo ("OIL.OUT");
float v;
int n, m, k;
int c[1000001],b[1000001];
dequeq;
int main()
{clock_t aa=clock();
fi>>n>>m>>k;
for(int i=1;i>c[i];
clock_t cc=clock();
for(int i=1;i=c[i])q.pop_back();
q.push_back(i);
if(q.back()-q.front()>=k)q.pop_front();
b[i]=q.front();
}
v=0;
for(int i=1;i
-
36
T chc v qun l interval, segment
Cc vn ny c c trnh by rt chi tit trong bi ging ca thy
L Minh Hong nm 2011, v vy y ta khng nhc li c s l thuyt v s
tnh ton. Ch cn lu rng y l cc gii thut ht sc hiu qu gii
quyt nhiu bi ton thng gp v l mt thnh phn quan trng trong c s
gii thut m ta phi trang b cho hc sinh.
Kiu d liu cp (pair)
D liu kiu cp l mt loi d liu c cu trc dng lu tr gi tr v thuc
tnh nh mt n v d liu thun tin x l.
Mt c s d liu n gin c th xy dng t cc d liu loi cp.
Ngn ng lp trnh C++ cung cp kiu pair lu tr v x l d liu cp.
Vi kiu d liu ny ta c th t chc cc d liu cp n, mng d liu cp v
mng d liu nhiu tng cp. L kiu d liu ca mt ngn ng hng i
tng, d liu kiu pair c nhn c s phc v ca mi php x l nh
cc loi d liu khc.
Khai bo:
Truy nhp:
pair a, b[100];
Kiu d liu th I
Kiu d liu th II
Hnh 24
a
a.first
a.second
b
a
.
a
.
a
.
a . . .
0 1
0
2 3
0
4 5
0
b[3].first
b[3].second
Hnh 25
-
37
V d: Xt bi ton:
Lng tr em khuyt tt SOS c m hc sinh. Lng thng nhn c s quan
tm, ti tr ca cc t chc, c nhn trong v ngoi nc. Trung thu nm nay,
trong s cc qu khc nhau gi ti c n hp ko. Trong danh sch ghi nhn, cc
hp c nh s t 1 n n, hp th i c ai vin ko. Cc thy c mun ly
mt hoc mt s hp lin tc nhau trong danh sch. iu quan trng l tt c
ko trong cc hp ly ra u phi
chia ht cho cc em v s vin ko
mi em phi nhn c l nh
nhau.
Hy xc nh xem cc thy c c
bao nhiu cch khc nhau chn cc
hp ko. Hai cch chn gi l khc
nhau nu khc nhau im u hoc
im cui hay c hai. V d, vi m
= 10, n = 4 v s ko trong cc hp
ln lt l 15, 50, 225, 60 ta c 4
cch chn (Xem hnh 25).
Trong s cc cch chn cc thy c s chn cch m nhiu hp nht v qu trnh
m hp cng mang li cho cc em hc sinh s thch th v hi hp, thm ch
cn ln hn c vic c bao nhiu ko s c nhn.
D liu: Vo t file vn bn CANDY.INP:
Dng u tin cha 2 s nguyn m v n (1 m 1000, 1 n 106),
Dng th 2 cha n s nguyn a1, a2, . . ., an (1 ai 109, i = 1 n).
Cc s trn mt dng cch nhau mt du cch.
Kt qu: a ra file vn bn CANDY.OUT
Dng th nht cha mt s nguyn s cch chn khc nhau. Nu khng
tn ti cch chn th kt qu s l 0.
Nu c cch chn th dng th 2 cha 2 s nguyn: s ca hp u v s
ca hp cui trong dy hp c chn.
V d:
APPLES.INP APPLES.OUT
10 4
15 50 225 60
4
1 4
Hnh 26
-
38
Phn tch gii thut:
Mi bi ton lin quan ti on lin tc ca mt i tng no (dy s, xu, .
. .) u i hi phi xy dng hm tch ly f(i) t u n v tr th i ca i
tng. Tnh cht f(i) ph thuc vo bn cht ca vn phi xc nh.
Bi ton trn lin quan ti vn chia ht v vy ta cn tnh
f(i) )(1
i
j
ji af mod m.
Vi nh ngha fi nh trn ta c th tnh n theo s lp:
f0 = 0, fi = (fi-1 +ai) mod m, i = 1 n
Trong bi ton ny cc gi tr ai s khng tham gia vo cc x l tip theo do
khng cn lu tr. Nh vy y khng n thun nhp d liu m l ghi nhn
d liu, tc l tnh v lu cc thuc tnh tng ng vi d liu thay v cho vic
lu d liu.
Cc yu cu lin quan ti xc nh cu hnh c th i hi phi lu tr fi vi cc
thng tin cu hnh lin quan thnh mt cm d liu (Bng quan h). Vi cc
ngn ng khng hng i tng (nh PASCAL) mi quan h c xc nh
thng qua gii thut, ngay c khi lu tr chng di dng Record. V vy, vi
cc ngn ng ny cc gi tr thuc tnh nn lu di dng c lp bng cc cu
trc n gin, nh vy s hiu qu hn trong x l.
Vi cc ngn ng hng i tng ( nh C++), fi v cc thuc tnh ca n lu
thnh mt i tng v ta c th khai thc mi dch v vi i tng to ra.
Trong bi ton ny, i tng cn xt l cp (fi, i).
Ta phi tm 2 cp (fu, u) v (fv, v) tha mn:
fu = fv, 1 u v n,
Max {i j }1 i n
fi = fj
-
39
Hnh 27
#include
#include
using namespace std;
int n,m,r,u,v,t,ux,vx,tx,d[1000];
pairb[1000002];
ifstream fi ("Candy.inp");
ofstream fo ("Candy.oup");
int main()
{clock_t aa=clock();
fi>>m>>n;
b[0].first=0; b[0].second=0;
memset(d,0,sizeof(d)); d[0]=1;
for(int i=1;i>t;
b[i].first=(b[i-1].first+t)%m;
b[i].second=i;
d[b[i].first]++;
}
clock_t cc=clock();
b[n+1].first=m; b[n+1].second=n+1;
r=0;
for(int i=0;i
-
40
Program Candy;
Uses SysUtils,DateUtils;
Const tfi='Candy.in1';
tfo='Candy.out';
Var m,n,v,u,r,t,tx,ux,vx,i:longint;
a,b:array[0..1000001] of longint;
d:array[0..1000] of longint;
fi,fo:text;
x1,x2,x3,x4,x5,ss1,ss2,ss3,mm1,mm2,mm3:word;
Procedure QSort(left : longint; right : longint);
Var pivot,pv_b, l_ptr, r_ptr : longint;
Begin
l_ptr := left;
r_ptr := right;
pivot := a[left];
pv_b := b[left];
While (left < right) do
Begin
While (((a[right] > pivot) OR ((a[right] = pivot )AND
(b[right] > pv_b)))
AND (left < right)) do
right := right - 1;
If (left right) then
Begin
a[left] := a[right];
b[left] := b[right];
left := left + 1;
End;
While (((a[left] < pivot) OR ((a[left] = pivot )AND
(b[left] < pv_b)))
AND (left < right)) do
left := left + 1;
If (left right) then
Begin
a[right] := a[left];
b[right] := b[left];
right := right - 1;
End;
End;
a[left] := pivot; b[left] :=pv_b;
pivot := left;
left := l_ptr;
right := r_ptr;
If (left < pivot) then
QSort(left, pivot-1);
If (right > pivot) then
QSort(pivot+1, right);
End;
BEGIN
-
41
DecodeDateTime(Now,x1,x2,x3,x4,x5,ss1,mm1);
assign(fi,tfi); reset(fi);
readln(fi,m,n);
a[0]:=0;b[0]:=0;
fillchar(d,sizeof(d),0); d[0]:=1;
for i:=1 to n do
begin
read(fi,t);
a[i]:=(a[i-1]+t) mod m;
b[i]:=i;
inc(d[a[i]])
end;
close(fi);
DecodeDateTime(Now,x1,x2,x3,x4,x5,ss3,mm3);
a[n+1]:=m;b[n+1]:=n+1;
r:=0;
for i:=0 to m-1 do r:=r+d[i]*(d[i]-1) div 2;
qsort(0,n+1);
tx:=0; u:=-1;
for i:=0 to n do
begin
if (u=0) and (a[i]a[i+1]) then
begin
v:=i; t:=b[v]-b[u];
if t>tx then begin ux:=u; vx:=v; tx:=t end;
u:=-1
end
end;
assign(fo,tfo);rewrite(fo);
writeln(fo,r);
if r>0 then writeln(fo,b[ux]+1,' ',b[vx]);
DecodeDateTime(Now,x1,x2,x3,x4,x5,ss2,mm2);
writeln(fo,'M = ',m,' N = ',n);
u:=ss2-ss3; v:=mm2;v:=v-mm3; if v
-
42
Nhn xt:
Thi gian x l vi i tng trong C++ khng nh hng nhiu n tc
x l (vi n = 106, vic sp xp, tm kim trong C++ cn 0.281 giy,
vi s x l i tng n tng t trong PASCAL cn 0.234 giy),
Khi sp xp phi m bo th t b phn ca (fi, i), cc chng trnh sp
xp ca C++ m bo yu cu ny i d liu kiu pair,
Yu cu th nht (tnh s lng cch chn) c th ghp ngay vo qu
trnh ghi nhn d liu v mang li hiu qu cao hn khi m ln:
Do hn ch v khun kh ti liu, y ta khng xem xt cc gii thut
n gin nhng c phc tp cao hn, tuy vy hc sinh cn phi c
lm quen vi cc gii thut ny (nhng khng nht thit phi lp trnh)
trc khi i su vo gii thut ti u,
Gii thut nu trn c phc tp O(nlogn) do i hi phi sp xp.
Cc gii thut c s quen thuc ngy nay cng c t chc trin khai mt cch
c hiu qu hn trn nn ca cc h thng lp trnh hin c. Nh cch nhn ca
th gii i vi phn kin thc c s cng c nhng chuyn dch nht nh.
Chng ta cng phi lm cho hc sinh nhn thy v chuyn dch theo!
V d, gii thut tm ng i ngn nht Dijsktra c trin khai c hiu qu
da trn vic s dng hng i u tin (Priority Queue):
Const int INF = 1000000000;
int main()
{int n;
b[0].first=0; b[0].second=0;r=0;
memset(d,0,sizeof(d)); d[0]=1;
for(int i=1;i>t;
b[i].first=(b[i-1].first+t)%m;
b[i].second=i;
r+= d[b[i].first]++;
}
Hnh 28
-
43
. . . c n . . .
vector < vector < pair > > g (n);
... c d liu v th ...
int s = ...; // nh xut pht
vector d (n, INF), p (n);
d[s] = 0;
priority_queue < pair > q;
q.push (make_pair (0, s));
while (!q.empty())
{ int v = q.top().second, cur_d = -q.top().first;
q.pop();
if (cur_d > d[v]) continue;
for (size_t j=0; j
-
44
Cesar th phi tr li cho Cesar, lp trnh vn mang trong n yu t ngh
thut!
Nhng yu t ngh thut l mt thnh phn khng th tch ri trong tin hc.
C nhiu mc trong cc vn nu trn c xem xt cc t lm vic
trc. Nhng nhng ln cc vn c xem xt c lp v kho st kh
su. Cc vn lin quan n c s - ngn gn v n gin hn. Nhng vn
ny tng i c lp vi yu cu hin nay ca th gii v nh hng gii
thut v vy ta s khng i su y, trong t lm vic ny.
Th gin v tch hp kin thc
gim p lc tm l v ng thi khng lm hc sinh sao nhng cc mn hc
cn li, chng ta cn chun b mt s bi tp tng i n gin vi ni dung
ly t cc mn hc khc (vn, s , a, l,ha, sinh, . . .). Phn nn
(background) phi c pht biu ngn gn nhng tuyt i chnh xc v kin
thc khoa hc v nhn mnh cho hc sinh r v s chnh xc . Phn d liu
v yu cu tnh ton l t do (v cng cn lu hc sinh v s t do ny nu c
hc sinh khng b ln gia thc v o).
V d:
Bi 1. TH NG LUT
Trong ting Vit, cc t khng du hoc c du huyn thuc thanh bng, trong
trng hp ngc li t thuc thanh trc.
Th ng lut c mt h thng quy tc phc tp c th hin 5 iu
nghim khc sau: Lut, nim, vn, i v b cc. Xt mt bi th ng lut
tht ngn bt c (8 cu, mi cu 7 t). Nu ch th 2 ca cu u tin dng
thanh bng th gi l bi c "lut bng"; nu ch th 2 cu u dng thanh trc
th gi l bi c "lut trc". Trong mt cu, ch th 2 v ch th 6 phi ging
nhau v thanh iu, v ch th 4 phi khc hai ch kia. V d, nu ch th 2 v
6 l thanh bng th ch th 4 phi dng thanh trc, hay ngc li. Nu mt cu
th ng m khng theo quy nh ny th c gi "tht lut".
Thng tin v bi th c cho di dng 8 au, mi au 7 k t xc nh t
thuc thanh bng hay trc, k t - tng ng t thuc thanh bng v + nu
t thuc thanh trc.
-
45
V d, thng tin v bi Qua o Ngang ca B Huyn Thanh Quan c dng nh
sau:
Hy lp trnh xc nh bi th thuc loi lut no hay tht lut v a ra s 1
nu l lut bng, s 2 nu l lut trc v s 3 nu l tht lut.
D liu: Vo t file vn bn POETRY.INP gm 8 dng, mi dng mt xu 7
k t t tp {-, +}.
Kt qu: a ra file vn bn POETRY.OUT mt s nguyn loi lut ac nh
c.
V d:
POETRY.INP POETRY.OUT ++--++-
+--++--
--++--+
++--++-
++---++
--+++--
--++--+
++---+-
2
Bi tp v nh: Tm mt s bi th ng lut tht ngn bt c ca B Huyn Thanh Quan,
Nguyn Khuyn, H Aun Hng, m ha v loi lut ca chng. Em c nhn xt g v cch
lm th ca cc tc gi trn?
Bi 2. 100 km/h
Trn tri t bt c xe t no cng c th t tc 100 km/h sau 3 giy! Bn
khng tin vo iu ? Vy hy y chic xe xung t mt vch dng
ng cao.
Hnh 29. Bi th Qua o Ngang Thng tin m ha Cnh o Ngang
-
46
Hy tnh cao ti thiu (theo mt) cn c ca vch sau 3 giy t t
vn tc 100km/h v a ra mn hnh cao tnh c vi chnh xc 1 ch s
sau du chm thp phn. Gia tc ri t do g = 9.8m/s2.
Nu mt trng, cn bao nhiu thi gian t vn tc 100 km/h v cao ca
vch phi l bao nhiu?
hnh tinh c gia tc ri t do p (0 < p 100) cn bao nhiu thi gian t
vn tc 100 km/h v cao ca vch phi l bao nhiu? D liu nhp t bn
phm v kt qu - a ra mn hnh.
Bi 3. DEOXYRIBONUCLEIC AXID
Deoxyribonucleic axid (DNA) l mt trong hai loi a xit mang thng tin di truyn m ha cho hot ng sinh trng v pht trin ca cc dng sng.
V mt ho hc, cc DNA c cu thnh t nhng vin gch, gi l nucleotide,vit tt l Nu. Do cc Nu chi khc nhau base (1Nu = 1 Desoxyribose + 1 phosphate + 1 base), nn tn gi ca Nu cng l tn ca base m n mang. Ch c 4 loi gch c bn l A, T, C, v G.
Mi base trn 1 chui ch c th bt cp vi 1 loi base nht nh trn chui kia theo mt quy lut chung cho mi sinh vt. Theo quy lut, mt "A" chui ca phn t ADN si kp s ch lin kt ng vi mt "T" chui kia.(Nguyn tc b sung). Mi chui xc nh theo mt hng v hai chui ca mt DNA lun hng ngc chiu nhau. Nh vy, i din vi Nu th nht ca mt chui l Nu cui cng ca chui kia, i din vi Nu th 2 ca chui th nht l Nu st cui ca chui th hai,
. . . V d, nu chui th nht l AGC th chui
th 2 s l GCT.
Ton b DNA ca Steve c mt phng th nghim tuyt mt ghi li, nhng Steve ch nhn c bn in ca mt trong s 2 chui di dng au S. T ti liu chuyn mn, Steve bit
c gen siu nhn l t. DNA ca ai cha t
nh mt xu con (cc k t lin tip nhau) s l mt siu nhn! Tt nhin, Steve mun bit c cha gen siu nhn hay khng. Lu l gen siu nhn c th nm chui m Steve khng
Hnh 30
-
47
nhn c.
Yu cu: Cho S xu DNA di khng qu 200 k t v xu gen t di
khng qu 20 k t. Hy xc nh xem Steve c gen siu nhn hay khng v
a ra cu tr li di dng Yes hoc No.
D liu: Vo t file vn bn DNA.INP, dng th nht cha xu S, dng th 2
cha xu t.
Kt qu: a ra file vn bn DNA.OUT cu tr li Yes hoc No.
V d:
DNA.INP DNA.OUT ATGCATGC
TGC
Yes
Yu cu m rng: Gii thut thay i nh th no nu cc xu S v t c di
khng vt qu 106? Hy lp trnh cho trng hp m rng.
CNG C LP TRNH
Trang b kin thc v ngn ng lp trnh cha bao gi l mt vn ln trong
tin hc. iu quan trng l k thut lp trnh v t chc d liu. Khi bit
tng i tt mt ngn ng lp trnh th vic chuyn sang lp trnh mt ngn
ng mi kh n gin.
Bn cnh ngn ng truyn thng PASCAL vi h thng lp trnh Free Pascal v
C++ vi h thng lp trnh DEV C++, nhiu nc cn cho php v khuyn
khch s dng mt lot cc ngn ng khc nh Delphi, Python, Java, C#, . . .
ng nhin, khi chn mt ngn ng no lm cng c cho mnh ngi lp
trnh cn phi:
Bit r nhng im mnh v yu ca ngn ng cng nh ca h thng h
thng lp trnh h tr,
Cn nm vng cc dch v m h thng lp trnh cung cp,
Cn c thi quen suy ngh v hnh ng ph hp vi ngn ng v h
thng lp trnh,
Cn bit cng su cng tt cc th vin chun h tr lp trnh v bit
khai thc chng mt cch ti u.
-
48
Nu c cch tip cn hp l th nhng vn trn c th gii quyt c mt
cch kh n gin v hiu qu.
nc ta, trong bc PTTH h thng lp trnh c s dng ph bin l ngn
ng PASCAL vi h thng lp trnh Free Pascal. bc i hc, ngn ng lp
trnh ch yu l C/C++ vi h thng Dev C++.
Trn th gii nhiu nc s dng C++ vi cc h thng lp trnh Dev C++ hoc
tng ngngay t bc ph thng trung hc.
Vic ging dy i tr trong nh trng khng phi l vn tho lun y.
Nhng vic trang b cng c cho hc sinh nng khiu, phc v cho cc k thi
Tin hc l vn nm trong tm xem xt v x l ca chng ta.
Cng cn lu l trong mt tng lai gn ta s phi xem xt n cc kha cnh
ca vic t chc x l song song.
Cc bi ton tham kho
Di y l mt s bi ton thi quc gia hoc khu vc cc nm 2011 2012
ta hnh dung c mt bng yu cu chung ca th gii i vi hc sinh gii tin
hc:
Bi 1. MT KHU
Mi ngi tham d Olympic Tin hc u phi kch hot chng trnh cung cp
mt khu ring cho mnh truy nhp vo h thng. Khi c kch hot,
chng trnh s a ra 2 s nguyn ( h 10). S th hai nhn c t s th
nht bng cch thay dy khng rng cc ch s lin tip nhau bng tng ca
chng. Mt khu chnh l dy s to thnh tng ghi vo s th 2.
V d, 2 s m chng trnh cung cp l 2148 v 213, s th 2 nhn c t s
th nht sau khi thay 148 bng 1+4+8 (= 13). Nu nh s cc ch s trong s
th nht bt u t 1, t tri sang phi th mt khu c xc nh t dy cc
ch s t 2 n 4 ca s th nht.
Yu cu: Hy xc nh cc v tr u v cui ca dy s to nn mt khu.
D liu: Vo t file vn bn PASSWORD.INP, dng u tin cha s th nht,
dng tip theo cha s th hai. Cc s khng bt u bng 0 v mi s c
khng qu 105 ch s.
-
49
Kt qu: a ra file vn bn PASSWORD.OUT trn mt dng 2 s nguyn xc
nh cc v tr u v cui ca dy s to nn mt khu. Nu tn ti nhiu li
gii th a ra li gii ty chn bt k. D liu m bo c nghim.
V d:
PASSWORD.INP PASSWORD.OUT
2148
213
2 4
Ghi ch: Bi d nht ca k thi Lin bang Nga 2012, gii thut ti u c
phc tp O(n).
Bi 2. KHM SC KHE
t khm tuyn ngha v qun s nm nay c n ngi c gi. Tt c h u
phi khm sc khe ln lt t phng 1 n phng m. Ti mi thi im mi
phng c th khm c ng thi k ngi.Mi ngi, khi khm xong phng
th i s chuyn sang xp hng khm phng i+1. Trnh t dch v mi
phng l ai n trc th khm trc. Thi gian chuyn t phng ny sang
phng khc v thi gian chuyn ngi khm trong mt phng l khng ng k.
Mi ngi c mt phiu khm sc khe, nh s theo th t vo khm phng
u. Mi phng ghi li thi gian khm dnh cho ngi c phiu.
Vi tp phiu ghi nhn thi gian khm hy xc nh khong thi gian t lc
ngi u tin vo khm phng 1n lc kt thc khm ngi cui cng
phng m.
D liu: Vo t file vn bn MEDCHECK.INP:
Dng u tin cha 3 s nguyn n, m v k (1 n 105,1 m, k 10),
Dng th i trong n dng sau cha m s nguyn xc nh thi gian khm
mi phng ca ngi th i, thi gian c gi tr trong khong [1, 1000].
Kt qu: a ra file vn bn MEDCHECK.OUT mt s nguyn khong thi
gian tnh c.
V d:
MEDCHECK.INP MEDCHECK.OUT
3 2 2
3 5
4 4
5 3
11
-
50
Ghi ch: Kazastan 2012, O(n).
Bi 3. LI NHY
C rt nhiu siu anh hng nh Batman, Ngi Nhn, Siu nhn, . . . mt trong
s l anh chng Kickass. Bt chc Ngi Nhn anh ta t chc mt mn
trnh din nhy t nc nh ny sang
nc nh khc.
Kickass chn mt dy n nh cao tng,
nh s t 1 n n t tri qua phi v
bt u nhy t nc nh th k. Tuy
vy, do nng lc cn yu anh ta ch c
th nhy sang nc nh k cnh bn
phi hoc bn tri khng cao hn nh
ang ng. Khng mun mi ngi
thy mnh yu km anh ta b tr mt
s li l xo trn mt vi nc nh. Vi s tr gip ca li l xo anh ta c th
t nh ti nc ngi nh bt k khng ph thuc vo n u v cao th no.
Hy xc nh s lng ti a cc nc nh m anh ta t chn n trong qu
trnh nhy. Cc nc nh m anh ta nhy qua nhy li nhiu ln ch c tnh l
mt. Nc nh xut pht cng c tnh k c khi khng c ln no nhy li ti
n.
D liu: Vo t file vn bn TRAMPO.INP:
Dng u tin cha 2 s nguyn n v k (3 n 2105, 1 k n),
Dng th 2 cha n s nguyn dng, mi s khng vt qu 109, xc
nh cao cc nh trong dy, t tri qua phi,
Dng th 3 cha xu S di n ch cha cc k t trong tp {., T}, Si =
T cho bit trn nc nh th i c t li nhy .
Kt qu: a ra file vn bn TRAMPO.OUT mt s nguyn s lng ti a
cc nc nh ti.
10 107 3 1 1 9 8 2 4
Hnh 31
-
51
V d:
TRAMPO.INP TRAMPO.OUT
10 1
10 7 3 1 1 9 8 2 4
10
..T..T....
7
Ghi ch: Croatia 2012, O(n).
Bi 4. BNH RN PH THY
V o s c vic i vo thnh ph v dn ch b gip vic lm bnh rn ti
n. o s rt thch bnh rn v mi ti n khng t hn mi chic. Ch b
gip vic khoan khoi thy thy i vng. Ngh ti lm bnh rn ch hi ngi,
nhng cht nh ra cu thn ch nghe lm c v h to n. Lp tc dng
trong bp nhy ln, t thao tc v cho ra l ht chic bnh rn ny n chic
khc. Ch khoi ch h ln Thi, ri, dng li! nhng cc thit b vn tip
tc hot ng. Chic bn sp sp di sc nng ca ng bnh rn. Cung qu
ch qun mt cu thn ch dng vic, ch nh rng n c ghi trn chic vng
eo tay ca o s. Mt vng c ph li vung, trn mi c ghi
mt ch ci, t mi c th i sang 8 k cnh hoc nh (xem hnh v). T
mt ta c th i sang k. Cc ch ci trn nhng k i qua to thnh
mt xu k t. Cu thn ch cn tm l xu di nht (c di ln hn 1) xut
hin trn vng t nht 2 ln, ngoi ra tha mn cc iu kin:
Mi xu khng cha cc lp li ( i qua),
Hai xu phi bt u t 2 khc nhau hoc cng mt nhng theo hng
i khc nhau.
Hnh 32
-
52
Theo nh ngha trn, xu palindrome d nhin l xut hin t nht 2 ln.
Hy xc nh cu thn ch cn tm.
D liu: Vo t file vn bn DONUT.INP gm nhiu tests, mi test cho trn
mt nhm dng, dng u tin cha 2 s nguyn h v w ( 3 h 10, 3 w
20), trong h v w s trn cc vng trn con v vng trn ln, tip theo l h
dng, mi dng cha xu gm cc ch ci la tinh in hoa di w xc nh
cackys t ghi trn mt vng trn ln, cc xu u bt u t ca mt vng
trn con.
D liu kt thc bng dng cha 2 s 0.
Kt qu: a ra file vn bn DONUT.OUT cu thn ch tm c, kt qu mi
test trn mt dng. Nu c nhiu xu cng tha mn th a ra xu c th t
t in nh nht. Nu khng tn ti xu tha mn th a ra mt s 0.
V d:
DONUT.INP
5 7
RRCABXT
AABMFAB
RROMJAC
APTADAB
YABADAO
3 13
ABCDEFGHIJKLM
XMADAMIMADAMY
ACEGIKMOQSUWY
3 4
DEFG
ACAB
HIJK
3 6
ABCDEF
GHIAKL
MNOPQR
10 19
JFZODYDXMZZPEYTRNCW
XVGHPOKEYNZTQFZJKOD
EYEHHQKHFZOVNRGOOLP
QFZOIHRQMGHPNISHXOC
DRGILJHSQEHHQLYTILL
NCSHQMKHTZZIHRPAUJA
NCCTINCLAUTFJHSZBVK
LPBAUJIUMBVQYKHTZCW
XMYHBVKUGNCWTLLAUID
EYNDCCWLEOODXYUMBVN
0 0
-
53
DONUT.OUT
ABRACADABRA
MADAMIMADAM
ABAC
0
ABCDEFGHIJKLMNOPQRSTUVWXYZHHHHHABCDEFGHIJKLMNOPQRSTUVWX
YZ
Ghi ch: Bi A, Fukuoka, Nht 2011.
Bi 5. PHN TCH FIBONACCI
Fibonacci l dy s f0 =0, f1 =1, f2 = 1, f3 = 2, . . ., fn = fn-1 + fn-2 vi n >2.
Cc s u tin ca dy s Fibonacci l 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, . . .
Steve kho st vic phn tch mt s nguyn thnh tng, hiu cc s Fibonacci.
Hin ti Steve tm hiu vic biu din mt s nguyn di dng tng/hiu mt
s t nht cc s Fibonacci (khng nht thit phi khc nhau). V d, cc s 10,
19, 17 v 1070 c th biu din vi s lng t nht l 2, 2, 3 v 4 s Fibonacci:
Vi mi s nguyn dng trong p s cho trc hy xc nh s lng ti thiu
cc s Fibonacci biu din s di dng tng i s (tc l bng cc php
cng, tr).
D liu: Vo t file vn bn ARSUM.INP:
Dng u tin cha s nguyn p (1 p 10),
Mi dng trong p dng sau cha s nguyn k (1 k 41017).
Kt qu: a ra file vn bn ARSUM.OUT kt qu tm c di dng s
nguyn, mi kt qu trn mt dng.
-
54
V d:
ARSUM.INP ARSUM.OUT
1
1070
4
Ghi ch: Bi 2 vng 2 Ba Lan 2012 (Ba lan thi 4 vng).
-
55
CHUYN 2
TRAO I V MT S BI TP TRONG L THUYT S
2.1. S nguyn t.
2.1.1. V hai hm tm s nguyn t nu trang 19 v 20 (Ti liu GKCT, Q1):
a. Hm 1 (chn k=2) c chy chm hn hm 2 (chn k=6) hay khng?.
Hm 1.
function snt(a: longint): boolean;
var i, sqrt_a: longint;
begin
if (a
-
56
chng tm tt c cc s nguyn t khng vt qu N vi N nh th thi gian
chy khng chnh lch nhau ng k, nhng khi N ln, thi gian khc bit
nhiu. Nguyn nhn v sao? (Tham kho cc s liu sau v thi gian chy
chng trnh ng vi my c b nh 2G, b x l ADM Dual-Core (1,65GHz).
1N 1000 104
105
106
107
Thi gian chy chtrnh dng hm 1
(n v giy)
0,005 0,015 0,203 4,695 117,75
Thi gian chy ch trnh dng hm 2
(n v giy)
0,005 0,015 0,078 1,623 39,07
S lng s nguyn t khng vt qu
N
168 1229 9592 78498 664579
b. Trao i. ngha cc dng lnh sau y:
Trong hm 2: if ((a
-
57
2
2
2
2
2
(mod )
2 1
y
y
y
x y k
x N
x x y k
(mod (N) (*)
a. Xy dng hm kim tra s nguyn t theo nh l Fecmat nh var z, p, a : longint;
function lt(x,y,n: longint):longint;// Xy dng hm xy (mod
N) theo cng thc (*)
var z1 : longint;
begin
if y=0 then lt := 1
else begin
z := lt (x, y div 2, n);
if (y mod 2 = 0) then z1 := (z*z mod n)
else z1:= x*(z*z mod n);
if z1>n then z1:=z1 mod n;
lt := z1;
end;
end;
function nt(p : longint): boolean;
begin
nt := false;
for a:=1 to p-1 do
if lt(a,p-1,p)1 then exit;
if p
-
58
+ Chy chm (do nguyn nhn no?)
+ Khi p>45000 s trn s (do nguyn nhn no?)
Trong trng hp mun kim tra gn ng s p ln c l nguyn t hay
khng th cho a nhn mt gi tr ngu nhin random(p-2)+2. Gi s lng test l
ntest, gi xacsuat l xc sut ti thiu tha nhn p l nguyn t. Khi p l
s nguyn t nu (s ln cha khng nh c p l hp s)/ntest)> xacsuat. S
lng test l ntest cng ln th kh nng tha nhn ng p l nguyn t cng
chnh xc hn . Xc sut ti thiu xacsuat c th iu chnh tng tng
chnh xc.
b. Chng trnh kim tra gn ng s nguyn t theo nh l Fecmat nh Chng trnh 1 (Kim tra s nguyn t theo xc sut
da trn nh l Fecmat nh) tng i nhanh, chnh
xc kh cao
uses sysutils;
const ntest = 30; // S lng test (c th iu chnh)
sacxuat=0.6; // c th iu chnh
var p, count : int64;
start, stop : tdatetime;
function luythua(x,y,n: int64): int64;// Xy dng xy (mod n)
theo cng thc (*)
var z : int64;
begin
if y=0 then luythua := 1
else begin
z := luythua(x, y div 2,n);
z := (z*z) mod n;
if y mod 2 = 1 then z := ((x mod n) * z) mod n;
luythua := z;
end;
end;
function nt(p : int64): boolean;
var test,dem, a : longint;
begin
if p=2 then begin nt := true; exit; end;
nt := false;
if p
-
59
dem := 0;
for test:=1 to ntest do begin
a := random(p-2)+2;
if luythua(a,p-1,p)1 then exit
else inc(dem);
end;
if (dem/ntest>sacxuat) then nt := true else
nt:=false;
end;
BEGIN
start := now; count := 0; p:=1;
while p
-
60
+ Nu x=1 hoc x=n-1 (ngha l x= 1 (mod n)) th quay v du vng lp
+ Trong khi s>=0 lp (vng trong) {
- Thay x=x2 (mod n) - Nu x = n-1 th thot vng lp trong - Gim s mt n v
}
+ Nu s0) do begin
if (y mod 2 =1) then z := (z*x) mod n;
y := y div 2;
x := (x*x) mod n;
end;
exit(z);
end;
function prime(n : int64): boolean;
-
61
var dem, r, a, x : int64; k: longint;
begin
if n=2 then exit(true);
if (n=0 do begin
x:= luythua(x,2,n);
if x=n-1 then break;
dec(s);
end;
if s
-
62
trnh tip tc nh th vi cc bi ca i khi m i2N. Cc s nguyn cn li cha
b xo s l s nguyn t.
Chng trnh 3 (Thun li khi cn mi s nguyn t
khng vt qu N)
uses sysutils;
const fo ='';
maxnum = 10000 ;
var n, count : int64;
test : longint;
g : text;
x : array [2..maxnum] of boolean;
start, stop : tdatetime;
procedure tao_x;
var i, j, canN : int64;
begin
i:=2;
while (i
-
63
tao_x;
assign(g, fo); rewrite(g);
n := 2; count := 0;
while n
-
64
Const max = 34;
H : String =
'0123456789ABCDEFGHIKLMNOPQRSTUVXYZ';
Var c1,c2,so : Longint;
n : String;
function Cosomin(S:String):Byte;
var i : Byte; ch : Char;
begin
ch := '0';
for i:=1 to length(s) do
if s[i]>ch then ch := s[i];
cosomin:= pos(ch,H);
end;
procedure nhap;
var i : byte;
begin
repeat
write('Cho biet co so thu nhat ');
{$i-} readln(c1); {$i+}
until (Ioresult=0) and (c1>=1) and (c1=cosomin(n)) and
(c11) and (c2
-
65
p:= p*c1+ Pos(s[i],h)-1;
doiC1_10:=p;
end;
function doi10_C2(n:Longint):String;
var p : String;
i : Byte;
begin
p:='';
while (n>0) do begin
p := H[n mod c2+1]+p;
n := n div c2;
end;
doi10_C2:=p;
end;
BEGIN
repeat
clrscr;
nhap;
so := DoiC1_10(n);
writeln(N,'[cs ',c1,']=',Doi10_C2(so),'[cs
',c2,']');
write(#10#13,'ESC : Thoat . Phim khac : tiep tuc
');
until Readkey=#27;
END.
2.1.7. Bi tp 1. Kim tra s nguyn t vi tc cao
Tm s nguyn t gn nht nh hn N (3 N 230). D liu vo: Dng u tin
cha s nguyn T l s lng test. (T 10000). T dng tip theo, mi dng cha
mt s nguyn N. Kt qu: Vi mi test, in kt qu trn mt dng. Hn ch thi
gian: 5 giy. V d:
D liu:
3
5
10
17
Kt qu:
3
-
66
7
13
d kin cch gii bi tp trn, chng ta c th tham kho kt qu chy
cc chng trnh tm cc s nguyn t khng vt qu N. Hy phc tho cc d
kin gii bi tp ny sao cho bo m hn ch thi gian nu trong . Bn chn
d kin no trong cc d kin sau y:
A. To sng Eratosthenes, lu vo mt mng cc s nguyn t t 2 n 232
, sau c tp input, vi mi s N tm c, tm trn mng lu tm s
nguyn t nh hn v gn N nht
B. c input, mi ln c mt s N, dng hm 1 hoc 2 kim tra pht
hin s nguyn t nh hn v gn N nht.
C. c input, mi ln c mt s N, dng chng trnh 1 kim tra pht
hin s nguyn t nh hn v gn N nht.
D. D kin khc.
Hy phn tch tng d kin c kh nng thc hin c hay khng?
2.2. c chung ln nht.
2.2.1. Thut ton Euclid
B . Nu a=bq+r (a, b 0, q v r l cc s nguyn) th: UCLN(a,
b)=UCLN(b, r).
Thut ton Euclid tm c chung ln nht. Lp thc hin b trn cho
n khi b=0.
Chng trnh 6 (Tm UCLN theo nh ngha)
uses crt;
var x, y : longint;
function gcd(a,b : longint): longint;
var r : longint;
begin
if a
-
67
begin
write('nhap hai so x va y : '); readln(x,y);
write('UCLN (',x,',',y,') = ',gcd(x,y));
readln;
end.
2.2.2. Thut ton Euclid m rng
nh l. Nu d=UCLN(a, b) th tn ti cp s nguyn x v y sao cho d=ax+by.
Thut ton Euclit m rng th hin qua th tc sau (gi m) tr v d, x v y:
Extended_Euclid(a,b) {
Nu b=0 th tr v (d=a, x=1, y=0). Dng
Gi qui Extended_Euclid(b, a mod b) tr v (d, x, y);
Gn (d, x, y) (d, y, x-a
b
y)
Tr v (d, x, y);
}
Th tc (thut ton Euclid m rng)
procedure ext_Euclid(a: longint;b: longint; var d:
longint;
var x,y: longint);
var d1,x1,y1 : longint;
begin
if b=0 then begin
d := a; x := 1; y := 0;
end
else begin
ext_Euclid(b, a mod b, d1, x1, y1);
d := d1;
x := y1;
y:= x1-(a div b)*y1;
end;
end;
2.2.3. Hm -le
Hm -le cho s lng cc s nguyn t 1 n n nguyn t cng nhau vi
n. Ni cch khc l s lng cc s nguyn trong on [1;n] c UCLN vi n
bng 1.
Mt vi gi tr ban u: (1) =1, (2) =1, (3) =2, (4) =2, (5) =4,
-
68
Ba tnh cht n gin ca hm -le sau y cho php tnh c gi tr ca hm.
( )p =p-1 vi p l s nguyn t
( )ap = 1a ap p vi p l s nguyn t v a l s nguyn.
( . ) ( ). ( )a b a b
T xy dng c cch tnh hm -le ( )n nh sau:
Phn tch n thnh dng tch cc tha s nguyn t. 1 21 2. ... .
kaa a
kn p p p (pi
nguyn t, i=1, 2,..k)
1 21 2( ) ( ). ( )... ( )
kaa a
kn p p p = 1 1 2 2 11 11 1 2 2. ... .k ka aa a a a k kp p p p p p
Do 1 2
1 1 1( ) 1 . 1 ... 1
k
n np p p
Chng trnh tnh Hm le
uses crt;
var n, i : longint;
function ole(n : longint): longint;
var result, i : longint;
begin
result := n;
i := 2;
while (i*i1 then result := result-(result div i);
ole := result;
end;
BEGIN
write('Nhap n: '); readln(n);
write(ole(n));
readln;
END.
Tnh cht quan trng nht ca hm -le th hin qua nh l -le:
nh l -le. ( ) 1ma (mod m) vi a v m nguyn t cng nhau.
V mt trng hp c bit ca nh l l nh l Fecma nh (nu trn): 1 1pa (mod p).
-
69
2.2.4. Mt s khi nim v ng d
Php ton ng d. D ca php chia s nguyn cho N c N gi tr l 0,
1, 2, , N-1. Hai s nguyn x v y c cng mt s d khi chia cho N c gi
l hai s nguyn ng d, k hiu: x y (mod N).
Hai s nguyn x v y c gi l ng d theo mun N nu (x-y) chia ht
cho N.
Cc s nguyn c cng s d khi chia cho N to thnh mt lp ng d.
Tp hp cc lp ng d theo N k hiu l Zn. V d c 3 lp ng d theo
mun N=3 l:
-9, -6, -3, 0, 3, 6, 9,
-8, -5, -2, 1, 4, 7, 10,
-7, -4, -1, 2, 5, 8, 11,
Mt s tnh cht
'x x (mod N) v 'y y (mod N) th ' 'x y x y (mod N) v ' 'xy x y
(mod N)
( ) ( )x y z x y z x y z (mod N)
xy yx (mod N)
( )x y z xy xz (mod N)
S i ca x theo mun N l N-x
S nghich o ca x theo mun N l s y sao cho x.y 1 (mod N).
nh l c bn ca ng d: x, y, nN , n0 v k hiu l mt trong 3
php ton: +, -, * th: (xy) mod n = ((x mod n) (y mod n)) mod n.
H qu. xy mod n = (x mod n)
y mod n (p dng khi x>n).
2.2.5. Gii phng trnh ng d tuyn tnh (i--phng): ax b (mod n).
Cho phng trnh ax b (mod n), vi a, b, n l cc s t nhin, n>0. Cch
gii l:
a) Tm d l UCLN (a,n).
b) Nu d khng l c ca b th phng trnh v nghim.
c) Nu b = kd th phng trnh c ng d nghim trong tp Zn. Gi s x l
mt nghim ty (c th chn bng b. a sai khc mt s ln nguyn n/d, vi a
l nghich o ca a theo mod n), th d nghim ca phng trnh c dng n
x id
(mod n). , i = 0, 1, 2, ..., (d-1).
V d. Gii phng trnh ng d 14x 30 (mod 100).
-
70
Ta c a=14; b = 30; n = 100;
d l UCLN ca a v n nn d=(14, 100)=2, d l c ca b v 30 chia ht cho
2, nn phng trnh c 2 nghim trong Zn. Hai nghim ny l x1=-105 v
x2=x1+100/2=x1+50=-55.
Chng trnh 7 (Gii phng trnh i--phng)
uses crt;
var a, b, n, d, x, y : longint;
procedure extended_euclit (a, b : longint; var d, x,
y : longint);
var d1, x1, y1 : longint;
begin
if (b=0) then begin
d := a; x := 1; y := 0;
end else begin
extended_euclit(b, a mod b, d1, x1, y1);
d := d1;
x := y1;
y := x1 - (a div b)*y1;
end;
end;
procedure solution(a,b,n : longint);
var i : longint;
begin
extended_euclit(a,n,d,x,y);
if (b mod d=0) then begin
x := x*(b div d);
if x0) do x := x - n div d;
if x
-
71
Writeln('Giai phuong trinh Di o phang ax=b (mod n)
:');
write('Nhap a, b, n: '); readln(a, b, n);
solution(a, b, n);
readln;
END.
Trao i. Thut ton gii phng trnh ng d c thc hin bi chng
trnh 7.
2.2.6. Bi tp 2. Hn Tn im qun
Tc truyn rng ngy xa Hn Tn danh tng ca Lu Bang (Hn Cao
T) im binh cho lnh xp hng ba, hng nm, hng by ri ghi cc s l tng
ng s suy ra s lnh bng cch sau y: Nhn s l hng ba vi 70, s l hng
nm vi 21, nhn s l hng by vi 15. Cng cc kt qu y li ri thm mt
bi s thch hp ca 105 s c s lnh. Nu k hiu s lnh l S, s l xp
hng 3, hng 5, hng 7 tng ng l a, b, c th S = (70.a + 21.b + 15.c) + 105.k
(k l s nguyn chn thch hp S ph hp l s lnh ca mt i i, mt tiu
on hay trung on... ).
y cng l bi ton xut bi nh ton hc Trung quc Sun-Tsu.
C s ton hc ca cch im binh nu trn l nh l sau:
nh l. Cho m1, m2, , mn l cc s nguyn i mt nguyn t cng
nhau. H phng trnh:
(I)
1 1
2 2
mod
mod
...
modn n
x a m
x a m
x a m
C mt nghim duy nht l x 1
n
i i i
i
a M y
(mod m)
vi m= m1.m2mn v Mi=i
m
m , yi l nghch o ca Mi theo mun mi:
yi.Mi1 (mod mi)
V d. Tm nghim ca h phng trnh ng d sau:
2 mod3
3 mod5
2 mod 7
x
x
x
vi x[300; 400]
m=357, M1=35, M2=21, M3=15,
-
72
y1=2 v 3521(mod 3), y2=1 v 211 1(mod 5), y3=1 v 151 1(mod 7).
Vy nghim ca h theo mun m=105 l :
x= 2352 + 3211 + 2151 = 233 23 (mod 105).
x[300; 400] nn x=338
Yu cu. Hy vit chng trnh nhp vo cc s a1, a2, ..., an, m1, m2, ...,
mn, c , d v gii h (I) trn tp [c; d].
Input. Dng u l s N (s phng trnh thuc h)
N dng tip theo ln lt l N s ai
N dng tip theo ln lt l N s mi
Dng cui cng l hai s c v d.
Output. Hin trn mn hnh nghim duy nht ca h (nu c) hoc thng
bo vo nghiem trong trng hp v nghim.
Trao i.
1. Cch tm s nghch o ca s a theo mun n?
2. V sao h (I) c nghim duy nht l: x 1
n
i i i
i
a M y
(mod m)?
2.3. S nguyn ln
2.3.1. Xy dng cc php ton cng, tr v nhn
Bi ton. Dng mng mt chiu, xy dng cc hm cng, tr, nhn hai s
nguyn c hng nghn ch s.
Chng trnh 8 (Cng, tr, nhn hai s nguyn ln)
const fi = 'bignum.in';
fo = 'bignum.out';
type arr = array[1..2000] of byte;
bignum = record
v : arr; // Mng cha cc ch s ca s
l : integer; // di ca s
end;
var a, b, c : bignum;
f, g : text;
function daomang(x : bignum): bignum;// o ngc biu din
s hng n v v tri nht
var i, j, t : integer; z : bignum;
begin
z := x;
-
73
i:= 1; j := z.l;
while i
-
74
y := daomang(y);
fillchar(z,sizeof(z),0);
l := x.l;
if y.l>l then l:= y.l;
carry :=0;
for i:=1 to l do begin
sum := x.v[i] + y.v[i] + carry;
z.v[i] := sum mod 10;
carry := sum div 10;
end;
if carry>0 then begin
inc(l);
z.v[l] := carry;
z.l := l;
end
else z.l := l;
z := daomang(z);
add := z;
end;
function sub(x,y: bignum): bignum; // Tr hai s ln x v y,
ch x>y
var sum, carry, l, i : integer; z : bignum;
begin
x := daomang(x);
y := daomang(y);
fillchar(z,sizeof(z),0);
l := x.l;
carry :=0;
for i:=1 to l do begin
sum := x.v[i] - (y.v[i] + carry);
if sum
-
75
z.l := l;
z := daomang(z);
sub := z;
end;
function mult1(x: bignum; y : integer): bignum;
// Nhn s ln x vi s nguyn y
var sum, carry, l, i : integer; z : bignum;
begin
x := daomang(x);
fillchar(z,sizeof(z),0);
l := x.l;
carry :=0;
for i:=1 to l do begin
sum := x.v[i]*y + carry;
z.v[i] := sum mod 10;
carry := sum div 10;
end;
if carry>0 then begin
inc(l);
z.v[l] := carry;
z.l := l;
end
else z.l := l;
z := daomang(z);
mult1 := z;
end;
function mult(x, y: bignum): bignum; // Nhn hai s ln x v y
var l, i, j, lech : integer; z, z1 : bignum;
begin
fillchar(z,sizeof(z),0);
fillchar(z1,sizeof(z1),0);
l := y.l;
z := mult1(x,y.v[l]);
lech := 0;
for i:=l-1 downto 1 do begin
z1 := mult1(x,y.v[i]);
inc(lech);
for j:= 1 to lech do z1 := mult1(z1,10);
-
76
z := add(z,z1);
end;
mult := z;
end;
BEGIN
assign(g,fo); rewrite(g);
read_input;
hien(a); hien(b);
c:=MULT(a,b); // C th thay bng add(a,b) ( hoc sub(a,b) vi a>b)
hien(c);
close(g);
END.
2.3.2. Bi tp 3. Tnh 5000!
c s N t tp 5000GT.IN. Ghi kt qu 5000! ra tp 5000GT.OUT.
Gi . 5000! c 16326 ch s. V vy dng mng A mt chiu kch thc
khong 17000 phn t cha kt qu. thun tin khi nhn, ch s hng n v
ca kt qu c cha vo phn t cui cng (v tr last) ca mng. Ch s
hng cao nht (bn tri nht) ca kt qu v tr do bin first ch vo. Mi ln
nhn (k-1)! vi k c k! ta thc hin nh sau:
em k nhn ln lt vi cc ch s c trong mng A, theo th t t cui
cng tr v firrt-5. Ch s hng n v ca tch c thay cho gi tr c ca ,
phn cn li ca tch th lu vo bin carry mang sang gp vi tch ca k
nhn vi tip theo.
Mi ln nhn thm mt tha s, bin first li li v tri nhiu nht l 5
phn t v gi tr ln nht ca cc tha s l 5000, gi tr ln nht ca ch s
tri nht l 9 nn ch thm nhiu lm l 5 bn tri na sau mi ln nhn.
2.3.3. Bi tp 4. S Catalan
Xt tch n s M1, M2, , Mn l s M=M1.M2.Mn. S cch chn cp
ngoc n vo tch ny c cc cch biu din khc nhau ca M gi l s
Catalan. Nu coi s Catalan th nht ng vi n=1, th s Catalan th n c tnh
-
77
theo cng thc truy hi l 1
( ) ( ). ( )n
i
T n T i T n i
(*). Hy vit chng trnh tnh s
Catalan th n. Hn ch n200. (Khi n=200, s Catalan c 117 ch s).
Gi .
Cch 1. S dng qui hoch ng, xy dng mng mt chiu T(N) tnh
cc s Catalan t s th nht dn v s th N theo cng thc truy hi (*). Thc
hin php nhn v cng s ln.
Cch 2. Nu coi s Catalan th nht ng vi n=0 th T[0]=1, T[1]=1,
T[2]=2, T[3]=5, T[4]=14, Trong trng hp ny c th s dng cng
thc:
2
2 ! 2 3 ... (2 )1( )
1 1 ! ! 1 2...
n
n
n n n nT n C
n n n n
, cn thc hin php chia
s ln
2.3.4. Bi tp 5. Tnh s bng Young
Bng Young chun l bng cha mt hon v ca {1, 2, , n}, mi
cha mt s, m dy s trn mi dng v trn mi ct l khng gim. V d vi
n=3 c 4 bng Young chun l:
1 2 3 1 2 1 3 1
3 2 2
3
Thut ton Bumping xy dng bng Young chun nh sau:
To cc hon v ca {1, 2, , n}. Vi mi hon v to ra, gi s l {p1, p2,
, pn} ta xy dng bng Young (nu c) bng cch: chn ln lt cc pi vo
bng. Bt u vi p1 a vo dng 1, ct 1 (dng trn cng, ct bn tri nht).
Gi s xy dng xong t p1 n pk, by gi cn chn pk+1 vo bng ta lm nh
sau: vi dng th nht, tm phn t u tin trn dng ny ln hn pk+1. Nu
khng c th thm pk+1 vo dng ny. Ngc li gi s c pp ln hn pk+1 th
thay pp bi pk+1, ri li dng pp xt tm v tr chn n vo dng th hai, tip
tc xy dng bng cao dn. Nu khng xp c ht n pn th dng, chuyn
sang hon v tip theo to bng khc.
Cng thc truy hi tnh s lng bng Young chun to bi {1, 2, , n}
l: U(1)=1, U2=2; U(n)=U(n-1)+(n-1).U(n-2)
Lu . C th s dng mng lu tr cc s nguyn t gii.
Bi ton. Xt M s t nhin n1, n2, , nm vi n1n2 nm>0. Chng ta
xc nh bng Young cha n1+n2++nm s t nhin: 1, 2, , n1+n2++nm, sao
cho dng th i c ni phn t (1 i m) sp tng theo th t t tri qua phi, v
-
78
cc phn t cng ct cng c sp tng t y ti nh (t dng 1 n dng
m).
V d bng Young vi m=4, n1=6, n2=4, n3=4, n4=1 nh hnh sau:
1 2 5 9 10 15
3 6 7 13
4 8 12 14
11
Nhim v: Cho n1, n2, , nm tm s lng cc bng Young cha cc s 1,
2, , n1+n2++nm.
D liu vo. File input l YOUNG.IN c cu trc: Trn dng th nht l
s t nhin m; trn dng th hai l: cc s n1, n2, , nm cch nhau du cch.
Kt qu ra. File output l YOUNG.OUT cha s bng Young tm c.
Hn ch: 1 m 20 ; ni 12 (1 im). V d:
YOUNG.IN YOUNG.OUT
2
3 2
5
Minh ho 5 bng Young tm c:
1 3 5 1 2 3 1 2 4
2 4 4 5 3 5
1 3 4 1 2 5
2 5 3 4
Gi .
Bi ton ca chng ta l tm s bng Young theo khun dng cho trc
(mi dng i ch c mt s lng nht nh l ni) nn khc
bi ton tm s bng Young chun.
Ngi ta chng minh c rng: S bng Young theo
khun dng c th tnh bng n! chia cho tch cc di ci
mc ca cc . di ci mc ca mi l s lng cc
trn ci mc (bng tng ca 1 vi s lng bn phi v
pha di ca ). Hnh bn minh ha ci mc ca (2,3) gm 6 mu en
(nn mc ny di l 6).
2.4. Mt s bi tp khc
-
79
2.4.1. Bi tp 6. Nhn nhanh a thc.
Cho hai a thc c n s hng 10 1 1( ) ...
n
np x p p x p x
v
1
0 1 1( ) ...n
nq x q q x q x
. Thc hin nhn hai a thc ny bng thut ton chia
tr vi thi gian nhanh nh sau:
Chia a thc p(x) thnh hai a thc: 2( ) ( ) . ( )n
l hp x p x x p x vi
12
0 11
2
( ) ...n
l np x p p x p x
v
12
11
2 2
( ) ...n
h n n np x p p x p x
Tng t chia a thc q(x) thnh hai a thc: 2( ) ( ) . ( )n
l hq x q x x q x
12
0 11
2
( ) ...n
l nq x q q x q x
v
12
11
2 2
( ) ...n
h n n nq x q q x q x
Khi : 2( ). ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ). ( ).n
n
l l l h h l h hp x q x p x q x p x q x p x q x x p x q x x
t: ( ) ( ) ( )l l lr x p x q x , ( ) ( ) ( )h h hr x p x q x v ( ) ( ) ( ) . ( ) ( )m l h l hr x p x p x q x q x
th:
2( ). ( ) ( ) ( ) ( ) ( ) . ( ).n
n
l m l h hp x q x r x r x r x r x x r x x .
2.4.2. Bi tp 7. (Clocks IOI-1994).
a) Gii h phng trnh tuyn tnh bng phng php kh Gausse
V d. Gii h phng trnh:
3 4 8 (1)
2 2 (2)
2 5 1 (3)
x y z
x y z
x y z
c ma trn A=
1 3 4
1 1 2
1 2 5
Bng phng php cng i s Gauss kh dn cc h s nm pha di
ng cho chnh ca ma trn A. C th: kh cc h s ca x1 hai phng
trnh (2) v (3) thnh 0 bng cch thay (2) bi (2)=(1)-(2) v thay (3) bi
(3)=(1)+(3). Tip theo kh h s ca x2 phng trnh (3) thnh 0 bng cch
thay (3) bi (3)=(2)-2(3). Cui cng a v dng:
1 3 4 8
0 2 2 6
0 0 4 8
x y z
x y z
x y z
Sau t phng trnh cui tm ra z, ngc ln cc phng trnh trn, tm
dn ra y, ri x.
-
80
b) Bi ton. C 9 ng h l A, B, , I trong mng 33 (Hnh 1). Nhim
v l quay mt tt c ng h v 12 gi vi cc php quay hp l. C 9 php
quay hp l, mi php gi l mt php di chuyn. Cc php di chuyn c
nh s t 1 n 9, chng s quay nhng mt ng h no mt gc 900 theo
chiu kim ng h c cho nh sau:
Php 1 ABDE
Php 2 ABC
Php 3 BCEF
Php 4 ADG
Php 5 BDEFH
Php 6 CFI
Php 7 DEGH
Php 8 GHI
Php 9 EFHI
D liu. c 9 s t tp INPUT.TXT. Cc s ny cho v tr ban u ca
cc mt ng h vi qui c: 0 l 12 gi, 1 l 3 gi, 2 l 6 gi, 3 l 9 gi. V d
vi hnh v 1 th tp input c ni dung l:
3 3 0
2 2 2
2 1 2
Kt qu. Ghi vo tp OUTPUT.TXT dy ngn nht cc php di chuyn
(cc s) quay tt c cc mt ng h v 12 gi. Trong trng hp c nhiu
li gii, ch cn ghi mt li gii. Trong v d nu hnh 1, tp OUTPUT.TXT
c th l:
5 8 4 9
Minh ho:
3 3 0 3 0 0 3 0 0 0 0 0 0
0 0
2 2 2 5-> 3 3 3 8-> 3 3 3 4 -> 0 3 3 9-> 0
0 0
2 1 2 2 2 2 3 3 3 0 3 3 0
0 0
Gi . C th m t tc ng ca cc php chuyn ti cc ng h trong
bng 1:
Hnh 1. V 9 ng h
-
81
Nhn thy ng h
A ch b tc ng
bi t1 php di
chuyn 1, t2 php
di chuyn 2 v t4
php di chuyn 4.
ng h B ch b
tc ng bi t1
php di chuyn 1,
t2 php di chuyn
2, t3 php di chuyn 3 v t5 php di chuyn 5. ...
Do t bng 1 c th xy dng bng 2.
K hiu trng thi ca ng h V trc khi thc hin dy di chuyn l v v
sau khi thc hin l v. Trng thi mi v trng thi c quan h vi nhau theo
cc ng thc sau (cng theo mod 4) y vec