You are on page 1of 10

[TI LIU CHUYN TIN] October 21, 2013

Chuyn . QUY HOCH NG TRNG THI

a s cc bi quy hoch ng u da vo trng thi. Tuy nhin c trng thi d pht hin, c trng
thi kh pht hin, c bi ton s lng trng thi t, c bi ton s lng trng thi rt nhiu. V vy,
khi ni n q uy hoch ng trng thi ta thng ngh ngay rng y l cc bi ton tng i phc
tp, c khng gian trng thi ln m ta cn phi s dng k thut m ha bng dy bit nh phn . Sau
y l mt s bi ton c th gii quyt trit bng phng php quy hoch ng trng thi.

1. Chn - Select

Cho ma trn vung a kch thc nn (1n20). Cc hng c nh s t trn xung di bt u t


1, cc ct c nh s t phi sang tri bt u t 1. nm giao ca hng i v ct j c ta [i, j].
Trn mi a[i, j] c cha mt s nguyn.

Yu cu: Hy chn trn ma trn n sao cho


-

Mi hng c nhiu nht mt c chn;


Mi ct c nhiu nht mt c chn;
Tng gi tr ca cc c chn l ln nht.

Dng 1: ghi s nguyn dng n;


N dng tip theo, mi dng ghi n s nguyn dng khng vt qu 109 th hin dng th i ca
ma trn.

Input: cho trong tp vn bn SELECT.INP:

Output: ghi ra tp vn bn SELECT.INP trn mt dng l tng ln nht tm c.


V d:

Input
3
3 1 2
1 1 2
1 4 2

Ouput
9

Gii: Quy hoch ng trng thi


-

Gi S l trng thi chn ct, nh vy S l mt dy n bit, mi bit c gi tr 0 hoc 1. Cc bit c


nh s t phi sang bt u t 0 (nh s t bit thp n bit cao). ngha nh sau:
+ bit th i ca trng thi S = 0: ct i+1 cha c chn;
+ bit th i ca trng thi S = 1: ct i+1 c chn;
(0i<n)
V d vi bng gm 5 dng, 5 ct th trng thi S l mt dy gm 5 bit. Trng thi S = 10011=19
l mt no ca cc ct 1, 2, 5 c chn.
1

V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

2
3
4
-

Gi T[S] l gi tr tt nht khi chn cc k dng u tin vi trng thi S (k l s bit 1: s ct


c chn ca trng thi S).
V d, khi ta tnh T[{1, 2, 5} = 10011 = 19] th c th:
+ T[{1, 2, 5}] = T[{1, 2} = 00011 = 3] + a[3, 5]
+ T[{1, 2, 5}] = T[{1, 5} = 10001 = 17] + a[3, 2]
+ T[{1, 2, 5}] = T[{2, 5} = 10010 = 18] + a[3, 1]

C ngha l T[{10011}=19] l gi tr tt nht khi chn 3 3 dng, 3 ct u tin s bng


max(tng cch chn 2 hai dng, 2 ct u tin vi mt dng th 3). V l gi tr ln nht
nn ta phi ly max.
Tng qut ta c cng thc quy hoch ng nh sau:
T[S] = max (T[P] + a[k, j])
Trong :
+ S l trng thi gm c k ct c chn
+ P l trng thi bn sao ca S nhng ch khuyt ct j (gm c k 1 ct c chn, ring
ct th j trng thi S c gi tr 1, trng thi P c gi tr 0)
Khi lp trnh, ta phi thc hin hai thao tc x l bit:
+ Tt bit th j ca trng thi S, ta s c trng thi lin trc preS ca S
function TurnOff(state:long; j:byte):long;
begin
TurnOff:=state and not (1 shl j);
end;

+ Ly bit th j ca trng thi S, thao tc ny c s dng gii m trng thi (hin th cc


bit 1 ca trng thi)
function getBit(state:long; j:byte):byte;
begin
getBit:= (state shr j) and 1;
end;

Thao tc quy hoch ng c thc hin bnh thng: tnh gi tr ca trng thi sau thng qua
cc trng thi k trc n:
V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

function getMax(state:long):long;
var j,k : byte; preState,max : long;
b : array[1..nm] of byte;
begin
{giai ma trang thai luu vao mang b}
fillchar(b,sizeof(b),0); k:=0;
for j:=1 to n do
if getBit(state,j-1)=1 then
begin
inc(k);
b[k]:=j;
end;
{Tim max cua cac trang thai lien truoc state + a[k,j] voi j
la bit khac duy nhat giua preState voi state}
max:=0;
for j:=1 to k do
begin
preState:=TurnOff(state,b[j]-1);
if max<T[preState]+a[k,b[j]] then max:=T[preState]+a[k,b[j]]
end;
getMax:=max;
end;
procedure DPBitmask; {Dynamic Programming with Bitmask}
var state,first,last:long;
begin
T[0]:=0;
first:=1; last:=1 shl n - 1; {2^n - 1}
for state:=first to last do T[state]:=getMax(state);
sumMax:=T[last];
end;

2. Tour du lch ca Sherry - M bi: LEM3


Trong k ngh h nm nay sherry c b thng cho 1 tour du lch quanh N t nc ti p vi
nhiu thng cnh ni ting (v sherry rt ngoan). Tt nhin sherry s i bng my bay.

Gi v my bay t t nc i n t nc j l C ij (d nhin C ij c th khc Cji). Tuy c b thng cho


nhiu tin i du lch nhng sherry cng mun tm cho mnh 1 hnh trnh vi chi ph r nht c th
dnh tin mua qu v tng mi ngi (Cc chuyn bay ca sherry u c m bo an ton tuyt
i).
Bn hy gip sherry tm 1 hnh trnh i qua tt c cc nc, mi nc ng 1 ln sao cho chi ph l b
nht nh.

Input
-

Dng 1: N (5 < N < 16)


Dng th i trong N dng tip theo: Gm N s nguyn, s th j l C ij (0 < Cij < 10001)

Output

V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

Gm 1 dng duy nht ghi chi ph b nht tm c

Example

Input
6
0 1 2
5 0 3
4 1 0
4 2 5
2 5 3
5 4 3

Output
8
1
2
2
0
5
3

3
3
1
4
0
1

4
4
2
3
2
0

Gii: Quy hoch ng trng thi


-

Gi S l trng thi th hin hnh trnh du lch ca Sherry, nh vy S l dy gm n bit vi


ngha:
+ S[i] = 0: thnh ph i+1 cha c thm;
+ S[i] = 1: thnh ph i+1 c thm.
Cc bit c nh s t 0..n-1, t phi sang tri (bt u t bit thp nht).
V d, trng thi S = 10101 = 21 th hin Sherry i qua 3 thnh ph 1, 3, 5 (ta cha
cn quan tm n th t thm lc ny)
Gi T[i, S] l chi ph nh nht n thnh ph i vi trng thi S, ta c cng thc quy
hoch ng nh sau:
T[i, S] = min(T[j,P] + C[j, i])
Vi P l trng thi lin trc ca trng thi S, l bn sao ca S, ch khc bit i 1 (thnh
ph i cha c thm); j l v tr ca cc bit 1 trong trng thi P (cc thnh ph c
thm trng thi P).
Khi ci t, ta phi thc hin hai thao tc x l bit
function getBit(state:long; i:byte):byte;
begin
getBit := (state shr i) and 1;
end;
function TurnOff(state:long; j:byte):long;
begin
TurnOff := state and not (1 shl j);
end;

Thao tc quy hoch ng c thc hin bnh th ng

procedure DPBitmask;
var
u,i,j,k,state,preState,first,last : long;
V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

b : array[1..nm] of byte;
begin
first:=1; last:= 1 shl n -1;
for u:=1 to n do
for state:=0 to last do T[u,state]:=oo;
for u:=1 to n do T[u,1 shl (u-1)]:=0;
for state:=first to last do
begin
fillchar(b,sizeof(b),0);
k:=0;
{giai ma trang thai state}
for i:=1 to n do
if getBit(state,i-1)=1 then
begin
inc(k);
b[k]:=i;
end;
for i:=1 to k do
begin
u:=b[i];
preState:=TurnOff(state,b[i]-1);
for j:=1 to k do
if (i<>j) and
(T[b[j],preState]+c[b[j],u]<T[u,state]) then
T[u,state]:=T[b[j],preState]+c[b[j],u];
end;
end;
KetQua:=oo;
for u:=1 to n do
if T[u,last] < KetQua then KetQua:=T[u,last];
end;

3. VOI06 Chn - M bi: QBSELECT


Cho mt bng hnh ch nht kch thc 4n vung. Cc dng c nh s t 1 n 4, t trn xung
di, cc ct c nh s t 1 n n t tri qua phi.

nm trn giao ca dng i v ct j c gi l (i,j). Trn mi (i,j) c ghi mt s nguyn aij , i =1, 2,
3, 4; j =1, 2, ..., n. Mt cch chn l vic xc nh mt tp con khc rng S ca tp tt c cc ca bng
sao cho khng c hai no trong S c chung cnh. Cc trong tp S c gi l c chn, tng cc
s trong cc c chn c gi l trng lng ca cch chn. Tm cch chn sao cho trng lng l
ln nht.
V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

V d: Xt bng vi n=3 trong hnh v di y:

Cch chn cn tm l tp cc S = {(3,1), (1,2), (4,2), (3,3)} vi trng lng 32.

Input
-

Dng u tin cha s nguyn dng n l s ct ca bng.


Ct th j trong s n ct tip theo cha 4 s nguyn a 1j, a2j, a3j, a4j, hai s lin tip cch nhau t
nht mt du cch, l 4 s trn ct j ca bng.

Gm 1 dng duy nht l trng lng ca c ch chn tm c.

Output

Example

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

Output
32

Hn ch : Trong tt c cc test: n 10000, |a ij| 30000. C 50% s lng test vi n 1000.


Gii:
-

Theo bi th bng c 4 dng v n ct;


Gi S l trng thi chn cc ct th j, ta c th biu din S bng 4 bit (cc bit c
nh s t phi sang bt u bng 0) vi ngha:
+ S[i-1] = 0: dng th i ca ct j khng c chn;
+ S[i-1] =1: dng th i ca ct j c chn.
Vi 4 bit, S c th biu din 16 trng thi t {0000} n {1111} (t 0 n 15), tuy nhin
ta nhn thy ch c 8 trng thi sau l tha yu cu ca bi ton: {0000}, {0001}, {0010},
{0100}, {1000}, {1001}, {0101}, {1010} (tng ng vi cc gi tr 0, 1, 2, 4, 5, 8, 9, 10).
V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

Gi T[S, j] l trng lng ln nht khi chn cc n ct th j vi trng thi chn l S, ta


c cng thc quy hoch ng nh sau:
T[S, j] = max(T[P, j-1] + value(S))
vi P l trng thi ca ct lin trc ca S sao cho P v S khng c 2 bit 1 ng thi
cng v tr, cn value (S) l gi tr cch chn ct j vi trng thi S.
Khi ci t, vi bi ton ny, ta ch cn xy dng hm getBit gii m trng thi S:
Cn thao tc quy hoch ng c thc hin bnh thng
procedure DPBitmask;
var i,j,k:int; x:long; state:byte;
begin
for i:=1 to 8 do T[i,0]:=0;
for j:=1 to n do
for i:=1 to 8 do
begin
state:=S[i];
x:=value(state,j);
T[i,j]:=x;
for k:=1 to 8 do
if (state and S[k] = 0) and (T[k,j-1]+x>T[i,j]) then
T[i,j]:=T[k,j-1]+x;
end;
KetQua:=T[1,n];
for i:=2 to 8 do
if T[i,n]>KetQua then KetQua:=T[i,n];
end;

LUYN TP
1. Tr chi trn ma trn - M bi: QBGAME
Ngy nay cc nh khoa hc ngh ra 1 tr chi trn ma trn rt th v. Thng qua c th o IQ mt
cch kh hiu qu. Tr chi c m t nh sau:
Bn c 1 ma trn A kch thc 8 x N trn gm cc s nguyn l im ca cc . Ngi ta s yu
cu bn chn 1 tp khc rng cc trn ma trn ny sau tnh tng im trn nhng ny. Trong
nhng c chn khng c hai no k cnh. IQ ca ngi chi s t l thun vi s im nhn
c. Sherry tham gia tr chi v t kt qu kh tt.V by gi Sherry mun bit tng im ln nht
nhn c trong tr chi ny l bao nhiu. Bn hy gip sherry nh !!!

Input
-

Dng 1 l s nguyn N ( 1 <= N <= 10000 )


8 dng tip theo: Mi dng gm n s nguyn. S nguyn hng i, ct j l A

Output

ij

( |Aij| <= 108 )

V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

Gm 1 dng duy nht l s im ln nht tm c

Example

Input
2
-22 2
-33 45
56 -60
-8 -38
79 66
-10 -23
99 46
1 -55

Output
279

Gii thch: Chn cc (3,1) (5,1) (7,1) (2,2)

2. C gi chn b - M bi: COWGIRL


Trn mt tho nguyn nh b c 1 gia nh gm 3 anh em: 2 ngi anh trai l Nvutri v Andorea cn
ngi em gi l Lola. Cuc sng gia nh kh gi nhng gia nh c truyn thng chn nui v mun
cc con t lp nn cha m 3 ngi quyt nh cc con hng ngy s i chn 1 s b no (ty 3
ngi con).
Tho nguyn l 1 cn h ng chia lm M*N vung, mi con b ch ng trong 1 v mi ch cha 1
con b.Ch c 1 quy tc duy nht l khng bao gi c 4 con b to thnh 1 hnh vung 2*2 hoc
trng 1 khu t 2*2.

Hai ngi anh mi chi nn hi l kem Lola chn b 1 mnh. Lola mun bit tt c c bao nhiu
cch xp b tha mn quy tc trn phng mi trng hp. V con s ny rt ln nn hy gip
Lola tnh ton con s ny.

Input
-

Dng u gm 1 s T duy nht l s test (T 111)


T dng tip gm 2 s M, N cho bit kch thc ca tho nguyn (M*N 30)

Output
-

Gm T dng, mi dng ng vi 1 test l s cch xp b ca test .

Example

Input
1
1 1

Output
2

3. n b hn lon M bi: MIXUP2


Mi trong N c b (4 <= N < = 16) ca bc John c mt s seri phn bit S_i (1 <= S_i <= 25,000). Cc c
b t ho n ni mi c u eo mt chic vng vng c khc s seri ca mnh trn c theo kiu cc
bng ng giang h.
V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

Cc c b giang h ny thch ni lon nn ng xp hng ch vt sa theo mt th t gi c gi l


'hn lon'.

Mt th t b l 'hn lon' nu trong dy s seri to bi hng b, hai s lin tip khc bit nhau nhiu
hn K (1 <= K <= 3400). V d, nu N = 6 v K = 1 th 1, 3, 5, 2, 6, 4 l mt th t 'hn lon' nhng 1, 3,
6, 5, 2, 4 th khng (v hai s lin tip 5 v 6 ch chnh lch 1).
Hi c bao nhiu cch khc nhau N c b sp thnh th t 'hn lon'?

D liu
-

Dng 1: Hai s N v K cch nhau bi khong trng.


Dng 2..N+1: Dng i+1 cha mt s nguyn duy nht l s seri ca c b th i: S_i

Kt qu
-

V d

Dng 1: Mt s nguyn duy nht l s cch N c b sp thnh th t 'hn lon'. Kt qu m


bo nm trong phm vi kiu s nguyn 64-bit.
Input
4 1
3
4
2
1

Output
2

4. Tng trn ma trn! - M bi: VMMTFIVE


Cho mt bng s 5x5. Nhim v ca bn l s phi in vo ma trn sao cho tng ca cc phn t trn
mi hng v mi ct bng mt s nguyn cho trc. Mi phn t trong bng s t 1 n 25 v khng
c hai phn t bt k no ging nhau.
Input
-

Dng th nht gm 5 s l tng ca cc s t dng th 1 n dng th 5 ca bng s.


Dng th hai gm 5 s l tng ca cc s t ct th 1 n ct th 5 ca bng s.

Output
-

Gm 5 dng, mi dng 5 s th hin bng 5x5 l kt qu ca bn. Nu c nhiu p n, hy in ra


mt p n bt k. D liu u vo lun lun c kt qu.

Example

Input
60 86 59 38 82
61 59 57 89 59

Output
15 5 9 25 6
17 10 23 20 16
12 19 3 18 7
13 14 1 2 8
4 11 21 24 22
V Vn Tr - CQB | Confidential

[TI LIU CHUYN TIN] October 21, 2013

5. K lc DOMINO (Ngun bi: Thy c ng)


Mt k lc th gii v xp domino c ghi nhn vo hm 17/11/2006. K lc ny thuc v H
Lan khi 4.079.381 qun domino ln lt xung theo phn ng dy chuyn trong ting v tay reo
h ca cc c ng vin. Nhng ngi t chc s kin Ngy Domino H Lan cho bit, 4.079.381 qun
domino ln lt xung trong vng 2 gi ng h.

Nhng qun domino di ng uyn chuyn trn nn nhng iu nhc c in v ng i l nt


c bit nht ca mn trnh din domino. Tc gi Robin Paul Weijers ni: Hn 4 triu qun domino,
iu ny cha bao gi xy ra. Chng ti cn thnh cng trong vic khin cho nhng qun bi domino
nhy ma trong ting nhc. Ti rt hnh phc v thnh cng.
Vi mn trnh din tuyt vi ny, nhng k lc gia domino H Lan ph v k lc ca chnh h lp
c nm 2005 vi 4.002.136 qun bi domino.

Sp ti, Bm d nh xy dng mt cng trnh ln hn ph k lc ca ngi H Lan. Cng trnh s


bao gm 2 cng on chnh:
-

Cng on 1: Xp qun domino vo cc cn trng trn hnh ch nht kch thc


( , 16), trong hnh ch nht c c t trc vt trang tr.
Cng on 2: Xp qun domino thnh mt dy di ( 106 ), mi hng c ng
( 8) qun (c th c hiu nh xp vo hnh ch nht kch thc ).

im c o trong cng trnh ny l s phi mu gia cc qun domino ln cn chung cnh. Cc qun
domino c xp bng hai loi domino, loi 1 c mu xanh nht v loi 2 c mu xanh m. Qun
domino v tr ( , ) s phi tha mn iu kin: nu + l th mu qun domino ny s phi c mu
khng nht hn cc qun cc chung cnh (nu c), nu + chn th mu qun domino ny s phi
c mu khng m hn cc qun cc chung cnh (nu c).
c nhng thng tin th v khi gii thiu v cng trnh, Bm mun bit s lng cch xp khc nhau
ca cng on 1 v cng on 2. Hai cch xp c gi l khc nhau nu khi chng kht 2 cch ln
nhau (khng xoay hoc lt) c t nht mt qun khc mu.
D liu vo trong file DOMINO.INP c dng:
-

Dng 1: gm 1 s nguyn dng ( 109 ), cc kt qu tm c s mod cho ;


Dng 2: bt u l 3 s nguyn dng , , ( , 16; < ), trong , l kch
thc hnh ch nht trong cng on 1, l s lng trong hnh ch nht t vt trang tr,
tip theo l cp s, cp s , l ta t vt trang tr;
Dng 3: gm 2 s nguyn dng , ( 8; 106 ) l kch thc hnh ca cng on 2.

Kt qu ra file DOMINO.OUT c dng:


-

Dng 1: s cch xp cng on 1 khc nhau mod ;


Dng 2: s cch xp cng on 2 khc nhau mod .

DOMINO.INP
1000
5 5 1 3 3
3 10000

DOMINO.OUT
240
593

V Vn Tr - CQB | Confidential

You might also like