You are on page 1of 18

TRNG THPT CHUYN L T TRNG

T TIN HC



CHUYN
VT CN

Gio vin: Nguyn Hong Ph


Cn Th, thng 09 nm 2014
Chuyn : Vt cn
Nguyn Hong Ph Trang 1

MC LC
1. Vt cn................................................................................................................ 2
1.1. Con ng tng trc .................................................................................... 2
1.2. Tch ln nht ca 3 s nguyn ..................................................................... 6
1.3. S trung bnh ................................................................................................ 6
1.4. nh Bertrand .......................................................................................... 7
1.5. Kt bn ......................................................................................................... 8
2. quy, quay lui ................................................................................................. 9
2.1. Lit k cc dy nh phn di n .............................................................. 10
2.2. Lit k cc hon v ..................................................................................... 11
2.3. Bi ton t qun Hu ................................................................................ 13
2.4. Dy chung bi hai di nht ........................................................................ 15
2.5. Mt s bi tp khc .................................................................................... 17

Chuyn : Vt cn
Nguyn Hong Ph Trang 2

1. Vt cn
Vt cn l mt phng php gii ton trong tin hc: tm nghim ca mt bi ton
bng cch xem xt tt c cc phng n c th.
y l cch tip cn c bn nht gii cc bi ton trong tin hc, phng php
ny thng c ngh n u tin trong qu trnh thit k thut ton gii mt
bi ton trong tin hc.
u im ca phng php ny l lun m bo tm ra nghim ng, chnh xc.
Tuy nhin, hn ch ca phng php ny l thi gian thc thi lu, phc tp ln.
Do vt cn thng ch ph hp vi cc bi ton c kch thc nh.
1.1. Con ng tng trc
(Bi 1 thi Quc gia Tin hc 2014)
a im du lch Dailai ni ting vi con ng Tng-Trc. l mt con ng
di v thng, dc bn ng ngi ta trng rt nhiu cy tng v cy trc. Vi mc
ch to im nhn cho con ng, Ban qun l khu du lch mun chn mt on
ng m dc theo n c t nht a cy tng v c t nht b cy trc trang tr.
Sau khi kho st, Ban qun l ghi nhn c v tr ca tng cy tng v cy trc.
Trn con ng c tt c n cy, khng c hai cy no cng mt v tr. Cy th i
v tr c khong cch n v tr bt u ca con ng l di (i = 1, 2, ..., n). Vi
kinh ph c hn, Ban qun l mun chn mt on ng tha mn iu kin
nu vi di l ngn nht.
Yu cu: Cho a, b v v tr ca n cy. Hy tm on ng c di ngn nht
m dc theo on ng c t nht a cy tng v b cy trc.
Input
Dng u cha 3 s nguyn dng n, a, b (a + b <= n).
Dng th i trong n dng tip theo mi dng cha hai s nguyn dng di
(di <= 10
9
) trong di l khong cch ca cy tnh t v tr bt u ca con
ng, ki = 1 nu cy th i l cy tng, ki = 2 nu l cy trc.
Cc s trn cng mt dng c ghi cch nhau t nht mt du cch.
Output
Ghi ra mt s nguyn l di on ng ngn nht tm c, quy c ghi -1
nu khng tn ti on ng no tha mn iu kin t ra.
Chuyn : Vt cn
Nguyn Hong Ph Trang 3

Gii hn
di <= 10
9
.
30% s test c n <= 300.
30% s test khc c n <= 3000.
40 % s test cn li c n <= 300000.
V d
Input Output
7 2 2
20 2
30 1
25 1
35 1
60 2
65 2
10 1
35

Suy ngh mt cch n gin, sau khi sp th t v tr cc cy theo th t tng dn
ca khong cch n v tr bt u ca con ng, ta th tng cp s left, right
(1 left right n), sau m s cy tng v cy trc trong on [left, right] v
chn ra on ngn nht tha iu kin c t nht a cy tng v c t nht b cy trc.
phc tp ca thut ton trong trng hp ny l O(n
3
) (th left v right mi s
n ln v mi ln nh vy ta m s cy tng v cy trc trong on [left, right]).
Nh vy vi cch lm ny ta c th gii quyt 30% s test ca bi ton.
const fi = 'minroad.inp';
fo = 'minroad.out';
maxC = round(1e9 + 1);
maxN = 300000;

var kc, loai: array[1..maxN] of longint;
n, a, b, tung, truc, min, i, j, left, right: longint;

procedure Swap(var a, b: longint);
var tmp: longint;
begin
tmp:=a; a:=b; b:=tmp;
end;

begin
assign(input,fi); reset(input);
assign(output,fo); rewrite(output);

readln(n, a, b);
for i:=1 to n do readln(kc[i],loai[i]);

for i:=1 to n-1 do
Chuyn : Vt cn
Nguyn Hong Ph Trang 4

for j:=i+1 to n do
if kc[i] > kc[j] then
begin
Swap(kc[i],kc[j]);
Swap(loai[i],loai[j]);
end;

min:=maxC;
for left:=1 to n do
for right:=left to n do
begin
tung:=0; truc:=0;
for i:=left to right do
begin
if loai[i] = 1 then inc(tung);
if loai[i] = 2 then inc(truc);
end;
if (tung >= a) and (truc >= b) and
(kc[right] - kc[left] < min)
then min:=kc[right] - kc[left];
end;

if min = maxC then writeln(-1) else writeln(min);

close(input); close(output);
end.
rng, ng mi cp left, right thay v chy mt vng lp m s cy tng
v cy trc trong on [left, right] ta c th s dng thm 2 mng ph tung v truc
lu s cy tng v s cy trc, trong tung[i] v truc[i] ln lt cho bit s
cy tng v cy trc t v tr u n v tr i. Nh vy, s cy tng v cy trc ca
on [left, right] chnh l tung[right] tung[left-1] v truc[right] truc[left-1],
trong tung[0] v truc[0] c gi tr l 0. phc tp trong trng hp ny l
O(n
2
), v vi cch gii quyt ny ta c th gii quyt c 60% s test.
const fi = 'minroad.inp'; fo = 'minroad.out';
maxC = round(1e9 + 1); maxN = 300000;

var kc, loai: array[1..maxN] of longint;
n, a, b, min, i, j, left, right: longint;
tung, truc: array[0..maxN] of longint;

procedure Swap(var a, b: longint);
var tmp: longint;
begin
tmp:=a;
a:=b;
b:=tmp;
end;

Chuyn : Vt cn
Nguyn Hong Ph Trang 5

begin
assign(input,fi); reset(input);
assign(output,fo); rewrite(output);

readln(n, a, b);
for i:=1 to n do readln(kc[i],loai[i]);

for i:=1 to n-1 do
for j:=i+1 to n do
if kc[i] > kc[j] then
begin
Swap(kc[i],kc[j]);
Swap(loai[i],loai[j]);
end;

tung[0]:=0; truc[0]:=0;
for i:=1 to n do
if loai[i] = 1 then
begin
tung[i]:=tung[i-1]+1;
truc[i]:=truc[i-1];
end
else
begin
tung[i]:=tung[i-1];
truc[i]:=truc[i-1] + 1;
end;

min:=maxC;
for left:=1 to n do
for right:=left to n do
if (tung[right] - tung[left-1] >= a) and
(truc[right] - truc[left-1] >= b) and
(kc[right] - kc[left] < min)
then min:=kc[right] - kc[left];

if min = maxC then writeln(-1)
else writeln(min);

close(input); close(output);
end.
c th gii quyt c 100% s test bi ny ta cn s dng k thut hng i
u tin s c cp trong chuyn khc.


Chuyn : Vt cn
Nguyn Hong Ph Trang 6

1.2. Tch ln nht ca 3 s nguyn
Tn file chng trnh TICH3SO.PAS
Cho dy gm n s nguyn. Hy tm tch ca 3 s hng trong dy sao cho tch ny
l ln nht.
D liu vo: cho trong file vn bn TICH3SO.INP c cu trc nh sau:
Dng u ghi s n.
Dng th 2 ghi n s nguyn, mi s cch nhau 1 du cch v c gi tr tuyt
i khng vt qu 1000.
Kt qu: ghi ra file vn bn TICH3SO.OUT ch 1 s l tch ln nht tm c
V d:
TICH3SO.INP TICH3SO.OUT
6
9 5 10 3 7 1
630

TICH3SO.INP TICH3SO.OUT
4
-6 8 -1 1
48
Gii hn:
30% s test c n 100.
30% s test khc c n 10000.
40 % s test cn li c n 1000000.

1.3. S trung bnh
Tn file chng trnh AVG.PAS
Cho dy s nguyn khng m a1, a2, , an, hy m b ba ch s i < k < j sao cho
ai + aj = 2ak.
D liu vo: cho trong file vn bn AVG.INP c cu trc nh sau:
Dng u tin ghi s nguyn dng T (T 10) l s lng b d liu. Tip n l
T nhm dng, mi nhm tng ng vi mt b d liu c cu trc nh sau:
Dng u ghi s nguyn dng n;
Dng th hai gm n s a1, a2, , an (|ai| 10
9
).
Chuyn : Vt cn
Nguyn Hong Ph Trang 7

Kt qu: ghi ra file vn bn AVG.OUT gm T dng, mi dng cha 1 s l kt
qu tng ng vi b d liu vo.
V d:
AVG.INP AVG.OUT
2
3
1 2 5
3
1 1 1
0
1
Gii hn
50% s test c n 100.
50% s test cn li c n 1000.

1.4. nh Bertrand
Tn file chng trnh DDB.PAS
nh Bertrand nh sau: Vi mt s t nhin n > 0 lun tn ti mt s nguyn
t p m n < p 2n.
Yu cu: Cho n, kim tra nh Bertrand bng cch m s lng s nguyn t
nm trong on [n+1, 2n].
D liu vo: cho trong file vn bn DDB.INP c cu trc nh sau:
Dng u ghi s T l s b d liu.
T dng sau, mi dng cha 1 s nguyn n 10
6
tng ng cho 1 b d liu.
Kt qu: ghi ra file vn bn DDB.OUT gm T dng, mi dng ghi 1 s nguyn l
s lng s nguyn t tm c tng ng vi b d liu vo.
V d:
DDB.INP DDB.OUT
2
1
3
1
1
Gii hn
30% s test c T 3.
30% s test khc c T 300.
40 % s test cn li c T 30000.
Chuyn : Vt cn
Nguyn Hong Ph Trang 8

1.5. Kt bn
(Bi 4, OLP Tin hc sinh vin khi khng chuyn 2009)
Tn file chng trnh FRIEND.PAS
Theo quan nim ca ngi ng c, mi c nhn khi sinh ra u ng vi mt
ngi sao, c gi l sao chiu mnh. Cc hot ng ca c nhn u b chi phi
bi ngi sao ny, k c qu trnh kt bn hn h. Theo thuyt m dng Ng
hnh, hai ngi ch c th to lp mi quan h bn vng khi cc sao chiu mnh
ca h khng c cc thuc tnh tng khc. Qua hng nghn nm quan st v chim
nghim, cc chim tinh gia ghi nhn c n sao v hu ht cc tnh cht tng
sinh tng khc gia chng. c th nhanh chng p ng nhu cu kim tra
tng hp ca cc sao, hip hi ABS (Association of Broker for Single) to lp
c s d liu ghi nhn tnh cht ca tt c cc sao kho st c. Trong c s
d liu ny, cc sao c nh s t 1 ti n; sao th i c mt gi tr si th hin kh
nng thch nghi ca sao gi l thch nghi. Hai sao khc nhau c th c cng
thch nghi. Thng qua thch nghi ca cc sao, ngi ta xc nh kh nng tng
hp ca chng. Kh nng tng hp ca 2 sao c tnh bng tng 2 thch nghi
ca chng.
Bi ton: Cho s nguyn dng n, dy s1, s2, , sn l thch nghi ca cc sao v
s nguyn b. Hy xc nh s lng t cc cp sao (i, j) m si+sj=b, vi 1 i < j n.
V d: trong 5 sao vi thch nghi l 3, 5, 6, 5, 3 th c 4 cp c kh nng tng
hp bng 8.
D liu vo: cho trong file vn bn FRIEND.INP c cu trc nh sau:
Dng u tin ghi 2 s nguyn n v b (|b| 10
9
).
Mi dng trong n dng tip theo ghi 1 s nguyn l thch nghi ca 1 sao,
thch nghi c tr tuyt i b hn 2
15
.
Hai s trn cng mt dng cch nhau bi 1 du cch.
Kt qu: ghi ra file vn bn FRIEND.OUT ch 1 s t tm c.
V d:
FRIEND.INP FRIEND.OUT
5 8
3
5
6
5
3
4
Gii hn
50% s test c n 10
4
.
50% s test cn li c n 10
5
.
Chuyn : Vt cn
Nguyn Hong Ph Trang 9

2. quy, quay lui
quy
quy l phng php dng trong cc chng trnh my tnh, trong c mt
hm (th tc) t gi chnh n.
Mt chng trnh con quy cn bn gm 2 phn:
- Phn c s: trng hp c th m ta c th gii quyt c bng cch tr v mt
gi tr hoc mt tc ng c th no (iu kin dng ca hm quy).
- Phn quy: nh ngha tc ng cn thc hin cho gi tr hin thi ca cc tham
s bng tc ng c nh ngha trc y vi kch thc tham s nh hn.
M hnh ca mt chng trnh con vit bng quy nh sau:
begin
if <tha iu kin dng> then
begin
<tr v gi tr/ tc ng c th>;
exit;
end;
<li gi quy>
end;
V d: Hm tnh giai tha ca mt s t nhin n (tnh n!) c vit bng quy
nh sau:
function gt(n: Word): Longint;
begin
if n <= 1 then exit(1);
exit(n * gt(n - 1));
end;
Chng trnh quy c th chia thnh 2 loi:
- quy tuyn tnh: l chng trnh quy gi chnh n vi s tng trng ca
cc chng trnh con l tuyn tnh (mi bc ch gi thm mt chng trnh con
quy khc). V d, hm quy tnh giai tha ca n: gt(n) = n*gt(n-1)
- quy phn nhnh: l chng trnh quy c th gi nhiu hn mt chng
trnh con mi bc, s tng trng chng trnh con trong quy phn nhnh
thng rt nhanh. V d, hm tnh s Fibonacci th n: fib(n) = fib(n-2) + fib(n-1),
thut ton gii bi ton Thp H Ni, thut ton tm kim theo chiu su trn
th (DFS),

Chuyn : Vt cn
Nguyn Hong Ph Trang 10

Thut ton quay lui
Quay lui l mt chin lc tm kim li gii cho cc bi ton tha mn rng buc.
V bn cht, t tng ca phng php ny l th tng kh nng cho n khi tm
thy li gii ng. l mt qu trnh tm kim theo su trong mt tp hp cc
li gii. Trong qu trnh tm kim, nu ta gp mt hng la chn khng tha mn,
ta quay lui v im la chn ni c cc hng khc v th hng la chn tip
theo. Khi th ht cc la chn xut pht t im la chn , ta quay li im
la chn trc v th hng la chn tip theo ti . Qu trnh tm kim tht
bi khi khng cn im la chn no na.
Gi s cu hnh cn lit k c dng (x1, x2, , xn). Khi thut ton quay lui c
thc hin qua cc bc sau:
1) Xt tt c cc gi tr x1 c th nhn, th cho x1 nhn ln lt cc gi tr
. Vi mi gi tr th cho x1 ta s:
2) Xt tt c cc gi tr x2 c th nhn, li th cho x2 nhn ln lt cc gi
tr . Vi mi gi tr th gn cho x2 li xt tip cc kh nng chn x3... c
tip tc nh vy n bc:
n) Xt tt c cc gi tr xn c th nhn, th cho xn nhn ln lt cc gi tr
, thng bo cu hnh tm c (x1, x2, , xn).
Trn thc t thut ton quay lui thng c dng bng m hnh quy nh sau:
procedure BackTrack(i: integer);
begin
if i > n then
begin
<thng bo cu hnh tm c>;
exit;
end;
for <mi gi tr v c th gn cho xi> do
begin
<ghi nhn vic gn gi tr v cho xi (nu cn)>
BackTrack(i+1);
<b ghi nhn vic th gi tr v cho xi (nu cn)>
end;
end;
Thut ton quay lui nh trn s bt u bng li gi BackTrack(1).
2.1. Lit k cc dy nh phn di n
Cho n, hy lit k tt c cc dy nh phn di n.
V d: Vi n = 3 ta c cc dy nh phn: 000, 001, 010, 011, 100, 101, 110, 111
Chuyn : Vt cn
Nguyn Hong Ph Trang 11

Gi s dy nh phn di n cn biu din c dng a
1
a
2
a
n
. Ta s lit k dy ny
bng cch ln lt gn cc gi tr 0 v 1 cho cc phn t ai, vi mi gi tr ai ta li
th cc gi tr c th gn cho ai+1.
Chng trnh quay lui c th vit:
const fi = 'nhiphan.inp';
fo = 'nhiphan.out';
maxN = 30;

var a: array[1..maxN] of longint;
n: longint;

procedure Generate(i: longint);
var j: longint;
begin
if i > n then
begin
for j:=1 to n do write(a[j]);
writeln;
exit;
end;
for j:=0 to 1 do
begin
a[i]:=j;
Generate(i+1)
end;
end;

begin
assign(input,fi); reset(input);
assign(output,fo); rewrite(output);

readln(n);
Generate(1);

close(input); close(output);
end.
2.2. Lit k cc hon v
Cho n, hy lit k tt cc hon v ca n s nguyn dng u tin.
V d: Vi n = 3 ta c cc hon v sau: 123, 132, 213, 231, 312, 321.
Gi s cc hon v ca n s cn biu din c dng a1a2an. Ta s lit k dy ny
bng cch ln lt gn cc gi tr t 1 n n cho cc phn t ai (vi iu kin gi
tr ny cha c s dng cho cc phn t t a1 n ai-1) vi mi gi tr ai ta li
th cc gi tr c th gn cho ai+1.
Chuyn : Vt cn
Nguyn Hong Ph Trang 12

y ta s dng mng free nh du cc gi tr hoc cha c s dng
trong qu trnh lit k hon v. Khi gn mt gi tr j no cho xi ta t s nh
du gi tr ny c s dng bng cch gn free[j]:= false, v khi gn mt gi
tr mi cho xi (thay cho gi tr j) ta cn xa b s nh du ca gi tr c bng cch
t free[j]:= true, vic lm ny gip cho gi tr j c th s dng v tr khc trong
dy hon v.
Chng trnh quay lui c th vit:
const fi = 'hoanvi.inp';
fo = 'hoanvi.out';
maxN = 10;

var a: array[1..maxN] of longint;
free: array[1..maxN] of boolean;
n: longint;

procedure Generate(i: longint);
var j: longint;
begin
if i > n then
begin
for j:=1 to n do write(a[j]);
writeln;
exit;
end;
for j:=1 to n do
if free[j] then
begin
a[i]:=j;
free[j]:=false;
Generate(i+1);
free[j]:=true;
end;
end;

begin
assign(input,fi); reset(input);
assign(output,fo); rewrite(output);

readln(n);
fillchar(free,sizeof(free),true);
Generate(1);

close(input); close(output);
end.

Chuyn : Vt cn
Nguyn Hong Ph Trang 13

2.3. Bi ton t qun Hu
Cho bn c vua kch thc n x n. Hy tm tt c cc cch t n qun Hu ln bn
c vua sao cho khng c bt c 2 qun Hu no n c nhau.
Gi s phng n t cc qun Hu ln bn c c dng (a1, a2, , an), trong ai
cho bit qun Hu hng i c t ti ct ai. V d, vi bn c kch thc 8x8,
ta c mt trong cc phng n l (4,7,3,8,2,5,1,6)

rng, trn mt bn c, cc trn cng mt ng cho chnh c hiu gia ch
s hng v ch s ct l khng i, cn cc trn ng cho ph c tng gia ch
s hng v ch s ct l khng i, nn ta c th dng hiu v tng ny nh ch
s cho cc ng cho chnh v ng cho ph.

T , vi bn c kch thc n x n, ta c:
n ct, c nh s t 1 n n.
2n 1 ng cho chnh, c nh s t 1 n n n 1.
2n 1 ng cho ph, c nh s t 2 n 2n.
Cc ng cho chnh Cc ng cho ph
Chuyn : Vt cn
Nguyn Hong Ph Trang 14

Ta i tm phng n cho bi ton ny bng cch th ln lt cc v tr c th t
qun Hu trn bn c t ct 1 n ct n. V mt qun Hu trn 2 hng bt k c
th n qun Hu khc nu chng ng cng ct, cng ng cho chnh (\) hoc
cng ng cho ph (/) , nn khi ta t qun Hu hng i vo ct j, th ta cn
nh du ct j, ng cho chnh i j, ng cho ph i + j c qun Hu ng,
sau ny ta khng s dng ct, ng cho chnh v ng cho ph ny na,
v khi th t qun Hu hng i vo ct khc ta s b phn nh du ny i.
y, ta c th s dng cc mng c, dc, dp ln lt nh du ct, ng cho
chnh v ng cho ph trn bn c. Chng trnh quay lui c vit nh sau:
const fi = 'dathau.inp';
fo = 'dathau.out';
maxN = 10;

var a: array[1..maxN] of longint;
c: array[1..maxN] of boolean;
dc: array[1-maxN..maxN-1] of boolean;
dp: array[2..2*maxN] of boolean;
n: longint;

procedure DatHau(i: longint);
var j: longint;
begin
if i > n then
begin
for j:=1 to n do write(a[j],' '); writeln;
exit;
end;
for j:=1 to n do
if c[j] and dc[i-j] and dp[i+j] then
begin
a[i]:=j;
c[j]:=false; dc[i-j]:=false; dp[i+j]:=false;
DatHau(i+1);
c[j]:=true; dc[i-j]:=true; dp[i+j]:=true;
end;
end;

begin
assign(input,fi); reset(input);
assign(output,fo); rewrite(output);
readln(n);
fillchar(c,sizeof(c),true);
fillchar(dc,sizeof(dc),true);
fillchar(dp,sizeof(dp),true);
DatHau(1);
close(input); close(output);
end.
Chuyn : Vt cn
Nguyn Hong Ph Trang 15

2.4. Dy chung bi hai di nht
(Bi 2 thi Quc gia Tin hc 2014)
Dy C = c1, c2, , ck c gi l dy con ca dy A = a1, a2, , an nu C c th
nhn c bng cch xa bt mt s phn t ca dy A v gi nguyn th t ca
cc phn t cn li, ngha l tm c dy cc ch s 1 i1 i2 ik n sao
cho c1 = ai1, c2 = ai2, , ck = aik. Ta gi di ca dy l s phn t ca dy.
Cho 2 dy A = a1, a2, , am v B = b1, b2, , bn. Dy C = c1, c2, , ck c gi
l dy chung bi hai ca dy A v B nu C va l dy con ca A va l dy con
ca B v tha mn iu kin: 2 x ci ci+1 (i = 1, 2, , k-1).
Yu cu: Cho hai dy A v B. Hy tm di dy con chung bi hai c di ln
nht ca hai dy A v B.
D liu: Vo t file vn bn LCS2X.INP: Dng u cha T l s lng b d liu.
tip n l T nhm dng, mi nhm cho thng tin v mt b d liu theo khun
dng sau:
Dng u cha 2 s nguyn dng m, n;
Dng th hai cha m s nguyn khng m a1, a2, , am, mi s khng vt
qu 10
9
.
Dng th ba cha n s nguyn khng m b1, b2, , bn, mi s khng vt
qu 10
9
.
Cc s trn cng mt dng c ghi cch nhau t nht 1 du cch.
Kt qu: Ghi ra file vn bn LCS2X.OUT gm T dng, mi dng cha mt s
nguyn l di dy con chung bi hai di nht ca dy A v B tng ng vi b
d liu vo.
V d:
LCS2X.INP LCS2X.OUT
1
5 5
5 1 6 10 20
1 8 6 10 20
3
Gii hn:
C 30% s test ng vi 30% s im ca bi c m, n 15.
C 30% s test khc ng vi 30% s im ca bi c m, n 150.
C 30% s test cn li ng vi 30% s im ca bi c m, n 1500.
Chuyn : Vt cn
Nguyn Hong Ph Trang 16

Ta c th gii bi ny bng cch xy dng tt c cc dy con C ca dy A tha
iu kin 2 x ci ci+1. ng vi mi dy con C, nu C va l dy con ca B va c
di ln hn di ln nht tm c th ta cp nht li gi tr ln nht mi
l di ca dy C ny. Vi cch gii nh th, ta c th gii quyt c 30% s
test ca bi ton. Chng trnh quay lui gii bi ton:
const fi = 'lcs2x.inp'; fo = 'lcs2x.out';
maxN = 1500; maxC = round(2E9);
var a, b, c: array[0..maxN] of longint;
m, n, nTest, iTest, max, i: longint;
function FindCInB(k: longint): boolean;
var i, j: longint;
begin
i:=1;
for j:= 1 to n do
begin
if b[j] = a[c[i]] then inc(i);
if i > k then exit(true);
end;
exit(false);
end;
procedure Find(i: longint);
var j: longint;
begin
if c[i-1] = m + 1 then
begin
if (i-2 > max) and FindCInB(i-2) then max:=i-2;
exit;
end;
for j:=c[i-1]+1 to m + 1 do
if a[j] >= 2*a[c[i-1]] then
begin
c[i]:=j;
Find(i+1);
end;
end;
begin
assign(input,fi); reset(input);
assign(output,fo); rewrite(output);
readln(nTest);
for iTest:=1 to nTest do
begin
readln(m,n);
for i:=1 to m do read(a[i]); readln;
for i:=1 to n do read(b[i]); readln;
max:=0; c[0]:=0; a[m+1]:=maxC;
Find(1);
writeln(max);
end;
close(input); close(output);
end.
Chuyn : Vt cn
Nguyn Hong Ph Trang 17

2.5. Mt s bi tp khc
Lit k tp con k phn t ca tp gm n phn t.
Bi ton phn tch s: Cho mt s nguyn dng n, hy cho bit tt c cc
cch phn tch n thnh tng cc s nguyn dng, cc cch l hon v ca
nhau ch tnh mt.
Bi ton m i tun: Cho bn c kch thc m x n, hy ch ra tt c cc hnh
trnh ca qun M xut pht t ang ng i qua tt c cc cn li ca
bn c, mi ng mt ln.
Tm chu trnh Hamilton ca th.
Bi ton ngi bn hng TSP.

You might also like