Các Bài Toán Duyệt

Embed Size (px)

DESCRIPTION

EPU

Citation preview

  • CC BI TON DUYT

    1. Robot qut vi ( http://vn.spoj.pl/problems/NKROBOT )

    C 9 cn phng (nh s t 1 n 9) c qut vi vi mu trng, xanh hoc vng. C 9 robot (nh s t 1 n 9) ph trch vic qut vi. Mi robot ch qut mt s phng nht nh. Vic qut vi c thc hin nh mt chng trnh ci sn theo qui tc:

    Nu phng ang c mu trng th qut mu xanh Nu phng ang c mu xanh th qut mu vng Nu phng ang c mu vng th qut mu trng

    Cn phi gi ln lt mt s cc robot ra qut vi (mi ln mt robot, mt robot c th gi nhiu ln v c th c robot khng c gi. Robot c gi s qut vi tt c cc phng m n ph trch) cui cng cc phng u c mu trng.

    Yu cu: Hy tm mt phng n nh vy sao cho s ln gi robot l t nht. Gi thit rng lng vi cho mi lt qut i vi cc phng l nh nhau.

    Input

    9 dng u: dng th i m t mt danh sch cc phng do robot i ph trch vic qut vi. Mi dng l mt chui cc ch s t 1..9 biu din cc s hiu ca cc phng, cc ch s vit st nhau.

    Dng cui m t mu vi ban u ca cc phng. Dng gm 9 k t vit st nhau gm ton cc ch ci T (trng), X (xanh), V(vng) biu din mu ban u ca 9 cn phng theo trt t s hiu ca chng.

    Output

    gm mt dng

    Nu khng c phng n th in ra s 0

    Tri li th in ra dy th t cc robot c gi (s hiu cc robot c vit st nhau v in

    ra kt qu c th t t in b nht)

    Example

    Input: 159 123

    357

    147 5

    369 456

    789

    258 XVXVXVTXT

    Output: 2255799

    Hng dn:

    Ch rng, sau 3 ln qut vi th mu ca mt cn phng tr li nh c. Bi vy, vic s dng mt robot 3 ln l khng ti u. Ta c th gii bi ton bng cch sinh dy tam phn di 9, mi gi tr a[i] chnh l s ln gi robot i.

  • 2. DY ABC

    Cho trc mt s nguyn dng N (N 100), hy tm mt xu ch gm cc k t A, B, C tho mn 3 iu kin: - C di N - Hai on con bt k lin nhau u khc nhau (on con l mt dy k t lin tip ca xu) - C t k t C nht.

    Hng dn:

    Nu dy X1X2Xn tho mn 2 on con bt k lin nhau u khc nhau, th trong 4 k t lin tip

    bt k bao gi cng phi c 1 k t "C". Nh vy vi mt dy con gm k k t lin tip ca dy X

    th s k t C trong dy con bt buc phi k div 4.

    Ti bc th chn Xi, nu ta c Ti k t "C" trong on chn t X1 n Xi, th cho d cc

    bc quy tip sau lm tt nh th no chng na, s k t "C" s phi chn thm bao gi cng

    (n - i) div 4. Tc l nu theo phng n chn Xi nh th ny th s k t "C" trong dy kt qu

    (khi chn n Xn) cho d c lm tt n u cng Ti + (n - i) div 4. Ta dng con s ny

    nh gi nhnh cn, nu n nhiu hn s k t "C" trong Cu hnh ti u th chc chn c lm

    tip cng ch c mt cu hnh ti t hn, ta b qua ngay cch chn ny v th phng n khc.

    Cc bn tham kho Code:

    program ABC_STRING;

    const

    InputFile = 'ABC.INP';

    OutputFile = 'ABC.OUT';

    max = 100;

    var

    N, MinC: Integer;

    X, Best: array[1..max] of 'A'..'C';

    T: array[0..max] of Integer;

    f: Text;

    function Same(i, l: Integer): Boolean;

    var

    j, k: Integer;

    begin

    j := i - l;

    for k := 0 to l - 1 do

    if X[i - k] X[j - k] then

    begin

    Same := False; Exit;

    end;

    Same := True;

    end;

    function Check(i: Integer): Boolean;

    var

    l: Integer;

    begin

    for l := 1 to i div 2 do

    if Same(i, l) then

    begin

    Check := False; Exit;

    end;

    Check := True;

  • end;

    procedure KeepResult;

    begin

    MinC := T[N];

    Best := X;

    end;

    procedure Try(i: Integer);

    var

    j: 'A'..'C';

    begin

    for j := 'A' to 'C' do

    begin

    X[i] := j;

    if Check(i) then

    begin

    if j = 'C' then T[i] := T[i - 1] + 1

    else T[i] := T[i - 1];

    if T[i] + (N - i) div 4 < MinC then

    if i = N then KeepResult

    else Try(i + 1);

    end;

    end;

    end;

    procedure PrintResult;

    var

    i: Integer;

    begin

    for i := 1 to N do Write(f, Best[i]);

    WriteLn(f);

    WriteLn(f, '"C" Letter Count : ', MinC);

    end;

    begin

    Assign(f, InputFile); Reset(f);

    ReadLn(f, N);

    Close(f);

    Assign(f, OutputFile); Rewrite(f);

    T[0] := 0;

    MinC := N;

    Try(1);

    PrintResult;

    Close(f);

    end.

    3. BI TON NGI DU LCH

    Cho n thnh ph nh s t 1 n n v m tuyn ng giao thng hai chiu gia chng, mng

    li giao thng ny c cho bi bng C cp nxn, y Cij = Cji = Chi ph i on ng trc tip

    t thnh ph i n thnh ph j. Gi thit rng Cii = 0 vi i, Cij = + nu khng c ng trc

    tip t thnh ph i n thnh ph j.

    Mt ngi du lch xut pht t thnh ph 1, mun i thm tt c cc thnh ph cn li mi thnh

    ph ng 1 ln v cui cng quay li thnh ph 1. Hy ch ra cho ngi hnh trnh vi chi ph t

    nht. Bi ton gi l bi ton ngi du lch hay bi ton hnh trnh ca mt thng gia

    (Traveling Salesman)

  • 1 2

    34

    1 2 1

    3

    4

    2

    Hng dn:

    Hnh trnh cn tm c dng (x1 = 1, x2, , xn, xn+1 = 1) y gia xi v xi+1: hai thnh ph lin

    tip trong hnh trnh phi c ng i trc tip (Cij + ) v ngoi tr thnh ph 1, khng thnh

    ph no c lp li hai ln. C ngha l dy (x1, x2, , xn) lp thnh 1 hon v ca (1, 2, , n).

    Duyt quay lui: x2 c th chn mt trong cc thnh ph m x1 c ng i ti (trc tip), vi mi

    cch th chn x2 nh vy th x3 c th chn mt trong cc thnh ph m x2 c ng i ti (ngoi

    x1). Tng qut: xi c th chn 1 trong cc thnh ph cha i qua m t xi-1 c ng i trc

    tip ti (1 i n).

    Nhnh cn: Khi to cu hnh BestConfig c chi ph = + . Vi mi bc th chn xi xem chi ph

    ng i cho ti lc c < Chi ph ca cu hnh BestConfig?, nu khng nh hn th th gi tr

    khc ngay bi c i tip cng ch tn thm. Khi th c mt gi tr xn ta kim tra xem xn c

    ng i trc tip v 1 khng ? Nu c nh gi chi ph i t thnh ph 1 n thnh ph xn cng

    vi chi ph t xn i trc tip v 1, nu nh hn chi ph ca ng i BestConfig th cp nht li

    BestConfig bng cch i mi.

    Sau th tc tm kim quay lui m chi ph ca BestConfig vn bng + th c ngha l n khng tm

    thy mt hnh trnh no tho mn iu kin bi cp nht BestConfig, bi ton khng c li

    gii, cn nu chi ph ca BestConfig < + th in ra cu hnh BestConfig - l hnh trnh t tn

    km nht tm c

    Input: file vn bn TOURISM.INP

    Dng 1: Cha s thnh ph n (1 n 20) v s tuyn ng m trong mng li giao

    thng

    m dng tip theo, mi dng ghi s hiu hai thnh ph c ng i trc tip v chi ph i

    trn qung ng (chi ph ny l s nguyn dng 100)

    Output: file vn bn TOURISM.OUT, ghi hnh trnh tm c.

    TOURISM.INP

    4 6

    1 2 3

    1 3 2

    1 4 1

    2 3 1

    2 4 2

    3 4 4

    TOURISM.OUT

    1->3->2->4->1

    Cost: 6

  • Cc bn tham kho Code:

    program TravellingSalesman;

    const

    InputFile = 'TOURISM.INP';

    OutputFile = 'TOURISM.OUT';

    max = 20;

    maxC = maxlongint div 2;

    var

    C: array[1..max, 1..max] of longint;

    X, BestWay: array[1..max + 1] of longint;

    T: array[1..max + 1] of longint;

    Free: array[1..max] of Boolean;

    m, n: longint;

    MinSpending: longint;

    procedure Enter;

    var

    i, j, k: longint;

    f: Text;

    begin

    Assign(f, InputFile); Reset(f);

    ReadLn(f, n, m);

    for i := 1 to n do

    for j := 1 to n do

    if i = j then C[i, j] := 0 else C[i, j] := maxC;

    for k := 1 to m do

    begin

    ReadLn(f, i, j, C[i, j]);

    C[j, i] := C[i, j];

    end;

    Close(f);

    end;

    procedure Init;

    begin

    FillChar(Free, n, True);

    Free[1] := False;

    X[1] := 1;

    T[1] := 0;

    MinSpending := maxC;

    end;

  • procedure Try(i: longint);

    var

    j: longint;

    begin

    for j := 2 to n do

    if Free[j] then

    begin

    X[i] := j;

    T[i] := T[i - 1] + C[x[i - 1], j];

    if T[i] < MinSpending then

    if i < n then

    begin

    Free[j] := False;

    Try(i + 1);

    Free[j] := True;

    end

    else

    if T[n] + C[x[n], 1] < MinSpending then

    begin

    BestWay := X;

    MinSpending := T[n] + C[x[n], 1];

    end;

    end;

    end;

    procedure PrintResult;

    var

    i: longint;

    f: Text;

    begin

    Assign(f, OutputFile); Rewrite(f);

    if MinSpending = maxC then WriteLn(f, 'NO SOLUTION')

    else

    for i := 1 to n do Write(f, BestWay[i], '->');

    WriteLn(f, 1);

    WriteLn(f, 'Cost: ', MinSpending);

    Close(f);

    end;

    begin

    Enter;

    Init;

    Try(2);

    PrintResult;

    end.

  • 4. Tour du lch ca Sherry ( http://vn.spoj.pl/problems/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 Cij ( d nhin Cij c th khc Cji ). Tuy c b

    thng cho nhiu tin i du lch nhng sherry cng mun tm cho mnh 1 hnh trnh vi chi ph

    r nht c th dnh tin mua qu v tng mi ngi ( Cc chuyn bay ca sherry u c

    m bo an ton tuyt i ).

    Bn hy gip sherry tm 1 hnh trnh i qua tt c cc nc, mi nc ng 1 ln sao cho chi ph

    l b nht nh.

    Input

    Dng 1: N (5 < N < 16)

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

    Output

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

    Example

    5. Chm im ( http://vn.spoj.pl/problems/V8SCORE )

    C N v gim kho trong k thi chn i tuyn tin hc. K thi bao gm K bi. V gim kho th i

    ngh s im ca bi j l Aij.

    Hi ng gim kho mun xc nh s im cho mi bi sao cho:

    Tng s im bng S.

    im ca mi bi khng b hn im ca bi trc .

    S im ca mi bi bng im ngh cho bi ny ca mt v gim kho no .

    D liu

    Dng u tin cha ba s nguyn S (1 S 200), (1 K 20), (1 N 20).

    Dng th i trong s N dng tip theo cha K s nguyn, s th j cho bit gi tr Aij l s

    im v gim kho th i ngh cho bi th j.

    Kt qa

    Nu tn ti mt cch cho im tha mn yu cu:

    o Dng th nht: in ra 'YES'.

    o Dng th hai: in ra K s nguyn l im ca mi bi tm c.

    Nu khng tn ti cch cho im, in ra 'NO'.

    Input: Output:

    6

    0 1 2 1 3 4

    5 0 3 2 3 4

    4 1 0 2 1 2

    4 2 5 0 4 3

    2 5 3 5 0 2

    5 4 3 3 1 0

    8

  • V d

    Hng dn:

    Kt qu ca bi ton (nu c) s c dng X1X2Xk. Trong mi bc duyt, ta s th chn Xi trong

    tp Aji (1

  • Hng dn:

    Hai yu cu cn gii quyt ca bi ton ny chnh l s lng cu hnh tha mn v lit k

    cc cu hnh . Nu nh duyt 2 ln, ln th nht m s lng v ln th 2 lit

    k cc cu hnh th chng trnh s chy qu thi gian cho php. Bi th, ta nn tm cch

    m s cu hnh m khng cn phi duyt quay lui.

    Cng thc: Result = N! div (Count[ch])

    vi N l di ca S v Count[ch] l s ln xut hin ca k t "ch".

    7. Quan h ( http://vn.spoj.pl/problems/COND )

    Xt mt tp N i tng c th so snh c (2

  • Th th s quan h phn loi loi ny bng: n! / (a1! * a2! * a3! * ... * ak!)

    Tm li cng thc cui cng bng:

    Sum ( n! / (a1! * a2! * ... * ak!) | a1 + a2 + ... + ak b, a < b.

    Cc nh khoa hc a ra 1 b gm n phn t. Sau khi tm ra s lng cc quan h ca n phn t ny h mun bit nu nh s quan h '=' trong tp n phn t ny ng bng k th s c bao nhiu quan h nh th?

    Input

    Gm nhiu b s n, k. Mi b s trn 1 dng. Kt thc file l -1. ( 1 < n < 11 )

    Output

    Vi mi b s (n, k) a ra s quan h c iu kin tm c

    Example

    Input: 3 0 3 1 3 2 3 3 -1 Output: 6 6 0 1

    Gii thch:

    Vi b 3 phn t (a, b, c).

    n=3, k=0:

    a < b < c; a < c < b; b < a < c;

    b < c < a; c < a < b; c < b < a;

    n=3, k=1:

    a = b < c; c < a = b; a < b = c

    b = c < a; a = c < b; b < a = c;

    n=3, k=3:

    a = b = c;

  • CC THAO TC X L BIT

    Di y l nhng kin thc v vic s dng cc php ton logic t gip cho vic thit k cc

    biu thc logic dng rt nhiu trong cc php ton iu kin c nhanh chng, chnh xc, hiu

    qu.

    * Quy c v v tr ca cc bit:

    Mi byte bao gm 8 bit c m s t phi sang tri cn gi l bit thp n bit cao. Bit nm bn

    phi c xem l thp hn bit nm bn tri. Cc bit c nh s nh sau: 7 6 5 4 3 2 1 0

    Mi bit c th nhn 1 trong 2 gi tr l 0 hoc 1. Ti mi thi im thc hin chng trnh mi bit

    c nhn gi tr xc nh. Mi s nguyn trong my u biu din di dng nh phn, th d s

    19 c biu din nh sau:

    Bit 7 6 5 4 3 2 1 0

    Gi tr 0 0 0 1 0 0 1 1 (s 19)

    * Cc php ton logic

    Cc php ton sau y thc hin trn cc gi tr nguyn v cho kt qu l cc gi tr nguyn.

    1. Php o bit NOT: i gi tr ca mi bit t 0 thnh 1 v ngc li.

    2. Php cng logic trn cc bit OR thc hin trn tng cp bit tng ng ca cc ton hng

    theo bng cng sau:

    Quy tc: Tng hai bit bng 0 khi v ch khi c hai bit bng 0 ngoi ra tng nhn gi tr 1. Php OR

    cn c gi l php hoc.

    3. Php nhn logic trn cc bit AND: thc hin trn tng cp bit tng ng ca cc ton hng

    theo bng nhn sau:

    Quy tc: Tch hai bit bng 1 khi v ch khi c hai bit bng 1, ngoi ra tch nhn gi tr 0. Php AND

    cn c gi l php v.

    A B A OR B

    0 0 0

    0 1 1

    1 0 1

    1 1 1

    A B A AND B

    0 0 0

    0 1 0

    1 0 0

    1 1 1

  • 4. Php cng loi tr trn cc bit (XOR) : thc hin trn tng cp bit tng ng ca cc ton

    hng theo bng sau

    Quy tc: Tng loi tr ca hai bit bng 1 khi v ch khi hai bit cha cc gi tr khc nhau, ngoi

    ra tng loi tr nhn gi tr 0.

    Php ton trn cng cn c gi l php so snh khc (khc nhau l ng, bng nhau l sai) hay

    cn gi l php trit tiu.

    x SHR i : Php dch phi, cho gi tr c c t s nguyn x sau khi dch sang phi i bit.

    x SHL i : Php dch tri, cho gi tr c c t s nguyn x sau khi dch sang tri i bit.

    Vi x = 2 ta c:

    Trn y l mt s php ton lm vic trn cc bit m ta hay dng, trn c s , ta xy dng

    c mt s hm, th tc hay dng sau.

    1. Hm ly gi tr bit: Hm tr v gi tr 0 hoc 1

    Function GetBit(x, i:longint):longint;

    Begin

    GetBit:=(x SHR i) and 1;

    End;

    2. Th tc bt bit: Th tc gn tr 1 cho bit th i trong s nguyn x.

    Procedure OnBit(Var x:longint; i:longint);

    Begin

    x:=x OR (1 SHL i);

    End;

    3. Th tc tt bit: Th tc gn tr 1 cho bit th i trong s nguyn x.

    Procedure OffBit(Var x:longint; i:longint);

    Begin

    x:=x AND (NOT(1 SHL i));

    End;

    Chng ta xt qua cc bi ton sau tm hiu v ng dng ca x l bit.

    A B A XOR B

    0 0 0

    0 1 1

    1 0 1

    1 1 0

  • 1. S c bit:

    Xt mt dy gm N s nguyn A1, A2, A3, ... An. Trong dy s trn c 1 s ch xut hin ng mt

    ln, v cc s cn li xut hin mt s chn ln.

    Yu cu: Hy tm s c bit ca mt dy cho trc.

    D liu: Trong file vn bn SDB gm:

    - Dng u l s N (N 107)

    - N dng tip, dng th i l Ai vi |Ai| 109.

    Kt qu: Mt dng duy nht l s cn tm.

    V d:

    Hng dn: Ln lt thc hin php XOR s th 1 vi s th 2, ly kt qu thc hin vi s th

    3 v c th cho ht N s. V php XOR l php trit tiu, do kt qu cui cng l s ch xut

    hin 1 ln (khng b trit tiu). Bng cch biu din cc s di dng nh phn ri thc hin php

    XOR, cc bn c th d dng chng minh c thut ton trn l ng n.

    res := 0;

    For i := 1 to N do

    begin

    read(fi, a);

    res := res xor a;

    end;

    writeln(fo, res);

    2. Xu c lp:

    Cho trc N (N 10000) xu k t di khng qu 255 k t. Xu c lp c nh ngha l xu

    ch xut hin duy nht 1 ln trong N xu cho, cc xu cn li lun xut hin mt s chn ln.

    Yu cu: Tm xu c lp t N xu cho.

    D liu: Trong file vn bn SINGLE.INP gm

    N dng biu din N xu cho ban u.

    Kt qu: Mt dng duy nht l xu c lp.

    V d:

    Hng dn: Cch lm tng t vi bi S c bit, ta thc hin php XOR vi cc m ASCII.

    SDB.INP SDB.OUT

    5 2 1 2 3 3

    1

    SINGLE.INP SINGLE.OUT

    - Hello, sir . - Go away! - Can I help you? - Hello, sir. - Can I help you?

    - Go away!

  • 3. Lit k tp con:

    Cho tp hp gm N phn t ( 1 N 20 ) Hy lit k tt c cc tp con (k c rng) ca tp hp

    cho.

    Hng dn: Xem nh N phn t l dy N bit. Ta c th biu din tt c cc tp con bng dy N

    bit, gi tr 1 (hoc 0) biu din s tn ti (hoc khng tn ti) ca mi phn t. Gi tr dy bit

    tng ng t 0 .. 2n - 1. kim tra s tn ti ca 1 phn t trong dy bit c gi tr x, ta s dng

    hm GetBit nh nu trn. y l 1 bi ton rt c bn, cc bn c th t code.

  • DUYT BNG CCH CHIA I TP HP

    1. Tng vector ( http://vn.spoj.pl/problems/VECTOR )

    Trong mt phng ta c N vc t. Mi mt vc t c cho bi hai ch s x v y. Tng ca hai

    vc t (xi, yi) v (xj, yj) c nh ngha l mt vc t (xi + xj, yi + yj). Bi ton t ra l cn chn

    mt s vc t trong N vc t cho sao cho tng ca cc vec t l vc t (U, V).

    Yu cu: m s cch chn tho mn yu cu bi ton t ra trn.

    Input

    Dng th nht ghi s N (0 N 30).

    N dng tip theo, dng th i ghi cc s nguyn xi, yi ln lt l hai ch s ca vc t th i.

    (|xi|, |yi| 100).

    Dng cui cng ghi s hai s nguyn U V (|U|, |V| 109).

    Output

    Gm mt s duy nht l s cch chn tho mn.

    Example

    Input: 4 0 0 -1 2 2 5 3 3 2 5

    Output: 4

    Hng dn: Nu duyt t hp ca N vector th phc tp ca thut ton l 2^N v chng

    trnh s khng cho kt qu trong thi gian cho php vi c N 32. Cch gii quyt nh sau:

    - Chia tp N vector thnh 2 tp bng nhau A v B.

    - Gi F[x, y] l s cch chn c vector tng (x, y) trn tp A. tnh F[x, y] th ta s duyt tt

    c cc tp con ca tp A, sau khi tnh c vector tng ca mi tp con ta ch vic inc(F[x, y]).

    - Tng t ta s duyt trn tp B, sau khi tnh c vector tng (x1, y1) ca mi tp con ta s

    inc(Res, F[U - x1, V - y1]) vi Res l kt qu ca bi ton.

    Vic duyt tp con ca tp A, B c th ci t nh bi ton phn trc nhc ti!

    2. 34 ng xu ( http://vn.spoj.pl/problems/COIN34 )

    Bn c 34 ng xu c gi tr nh sau:

    xu [1] c gi tr 2

    xu [2] c gi tr 3

    xu [3] c gi tr 5

  • for n := 4 to 34 do

    xu [n] c gi tr (xu[n-1] + xu[n-2] + xu[n-3])

    Bn hy dng nhiu ng xu nht mua mt mn hng c gi l X

    D liu

    Dng u tin l s test (khng qu 1000). Mi dng tip theo cha mt s nguyn X (1 X

    2000000000).

    Kt qu

    Vi mi test, in ra "Case #" + s hiu test + ": " + s lng ln nht ng xu cn dng. Nu

    khng c cch no t gi tr X th in ra -1.

    V d

    D liu 4 1 5 8 9 Kt qu Case #1: -1 Case #2: 2 Case #3: 2 Case #4: -1

    Hng dn: Gi T[i] l s ng xu nhiu nht c th mua mn hang c gi tr l i. Trong mi

    bc duyt tp th 2, ta tin hnh cp nht T[i]: T[i] := Max(T[i], F[i - x] + y) vi x l

    khi lng tp hp con, y l s lng xu ca tp. Mng F c ngha tng t T v c tnh

    trc bc 1.

    3. Nh hng Trung Quc ( http://vn.spoj.pl/problems/CHNREST )

    Hng nm v mun c khng kh m cng v cng tit kim nn bn thng t chc sinh nht

    nh. Tuy nhin trc sinh nht nm nay vi hm bn thi u vo i tuyn tin hc quc gia.

    y l mt s kin c bit c ngha nn bn quyt nh mng ngy sinh nht ca mnh ti mt

    nh hng Trung Quc sang trng v bn t nh ln ny nht nh phi tiu xi rng tay hn. Mi

    vic chun b gn xong nhng cn mt vn lm bn kh nhc u, l lm sao chn c

    nhng mn n m mi ngi cng thch.

    Nh hng c M mn n khc nhau v th v ch l mi mn n rt nhiu nn c th cho bao

    nhiu ngi cng c, v th vn l gi mn no ch khng phi mi mn gi bao nhiu. C

    tt c N ngi n d tic sinh nht (bao gm c bn trong ). Bn tm hiu c danh sch

    nhng mn n yu thch ca tng ngi v bn mun rng i vi mi ngi phi c t nht 2

    mn m h thch. Tuy nhin sau khi n xong cn nhiu tit mc hp dn khc nn bn cng mun

    rng bt k ai cng khng c qu 2 mn n yu thch trong danh sch c t trc. V vn

    cui cng, y l tin ca b m nn cng khng nn tiu xi qu ng.

  • Yu cu

    Hy cho bit s tin t nht phi tr gi mt thc n tha mn cc yu cu trn.

    D liu

    - Dng u tin cha hai s M, N

    - Dng th hai cha M s Pi l gi ca mn th i.

    - Trong N dng cui cng, dng th k ghi danh sch cc mn yu thch ca ngi th k.

    Kt qu

    - Gm mt s duy nht l kt qu ca bi ton, hoc

    - in ra -1 nu khng c cch gi mn no tha mn.

    V d

    D liu: 5 3 100 150 300 425 200 1 2 4 1 3 4 5 1 4 5 Kt qu: 450

    Gii hn

    - M 30. - N 10.

    Hng dn: Theo ra th mi ngi thch ng 2 mn trong thc n c chn. Duyt vi m

    div 2 mn, vi mi t hp ta c dy A1, A2, A3, ..., An l s cc mn yu thch ca N ngi. Tng

    t vi ln th 2 l B1, B2, B3, ..., Bn. (Vi Ai, Bi

  • Input:

    5

    1 5 6 7 8 Output:

    1 3

    Ch thch : chnh lch t nht ca 2 phn l 1 C 3 cch phn chia .3 cch phn chia nhm 1 l (3,5) ,(1,3,4) v (1,2,5)

    Hng dn: T tng ca bi ton vn l chia i duyt. Ta s chn mt s ngi ln

    duyt th nht v mt s ngi ln duyt th hai cho vo nhm 1.

    Gi s tng tin cy ln duyt th nht l x, th hai l y, gi S l tng tin cy ca N ngi.

    Tng tin cy ca nhm 1 trong TH ny l x + y, v ca nhm 2 l S - (x + y). chnh

    lch to thnh l Abs(S - (x + y) - (x + y)) = Abs(S - 2*(x+y)). Cch gii quyt c th nh sau :

    - Duyt N div 2 ngi, cc tng tin cy thu c lu vo mt mng C c ti a l 216 phn t.

    tin cho tnh ton sau ny, ta s ti u mng bng cch loi b nhng tng bng nhau v ch

    gi li mt, ng thi dng thm 1 mng m s ln xut hin ca tng (cn sp xp li

    mng C trc khi ti u n). V d D[i] l s ln xut hin ca tng tin cy C[i].

    - Duyt phn cn li, mi tng tin cy X sinh ra, ta s tm C[i] sao cho Abs(S - 2*(X+C[i])) nh

    nht c th. Sau cp nht kt qu ti u. Tm kim nh phn gi tr C[i] s l rt hp l bi

    mng C c sp xp v kch thc ca n cng kh ln.

  • TM KIM NH PHN

    Cc bn c th tham kho k thut tm kim nh phn cc ti liu khc. Trong ti liu ny, chng

    ta s lt qua mt vi v d tht c bn cc bn c th hiu thm v n.

    1. Ti trng ca tuyn ng

    Mt h thng giao thng lin thng gm N thnh ph vi tn 1..N (N

  • 2. B su tp cc ng xu ( http://vn.spoj.pl/problems/LEM1/ )

    Cho N ng xu c bn knh ln lt l cc s thc dng r1.. rN. c t xung quanh mt vng

    trn sao cho:

    Mi ng xu tip xc vi 2 ng xu

    t cnh n v tip xc vi vng trn.

    Bit c bn knh ca tng ng xu.

    Yu cu: Tm bn knh vng trn.

    Input

    Dng u ghi s nguyn dng N

    Dng tip theo ghi N s ri ( 1 i N )

    Output

    Gm 1 dng duy nht ghi bn knh hnh trn ( chnh xc n 3 ch s sau du phy )

    Example

    Input:

    4

    2 2 2 2

    Output:

    0.828

    Gii hn

    1 N 10000

    1 ri 100000

    Hng dn:

    Gi O l tm ca ng trn bn knh R, O1, O2, O3, ... On l tm ca cc ng trn bn knh

    tng ng R1, R2, R3, ... Rn.

    Khi R tha mn yu cu, ta c: O1OO2 + O2OO3 + O3OO4 + ... + On-1OOn = 2pi (*)

    D dng tnh c cc gc ny theo di 3 cnh ca cc tam gic tng ng. tm R tha

    mn, ta s chia nh phn gi tr ca R vi Rmin = 0 v Rmax = tng cc Ri. Gi tr R tha mn (*)

    chnh l nghim ca bi ton.

    Ch x l d liu trnh vic sai s kh ln khi lm vic vi s thc.

    R

    R1 R2

    R3

    R4

    R5

    R6

  • QUY HOCH NG

    Quy hoch ng l dng bi ton kh ph bin trong cc k thi HSG mn Tin hc. Mc ch ca

    chng l gii quyt cc bi ton ti u. V khng c mt thut ton tng qut gii tt c cc bi

    ton quy hoch ng, do cc v d sau y gip cc bn lm quen v tip cn mt s dng

    ton quy hoch ng.

    1. i xem phim ( http://vn.spoj.pl/problems/VCOWFLIX )

    Nng dn John ang a cc con b ca anh ta i xem phim! Xe ti ca anh ta th c sc cha c

    hn thi, l C (100

  • 2. Bc thang ( http://vn.spoj.pl/problems/VSTEPS )

    Bm chi tr chi in t Lucky Luke n mn phi iu khin Lucky leo ln mt cu thang gm n

    bc.

    Cc bc thang c nh s t 1 n n t di ln trn. Lucky c th i ln mt bc thang, hoc

    nhy mt bc ln hai bc thang. Tuy nhin mt s bc thang b thng do c k v Lucky

    khng th bc chn ln c. Bit ban u, Lucky ng bc thang s 1 (bc thang s 1 khng

    bao gi b thng).

    Chi n y, Bm cht ny ra cu hi: c bao nhiu cch Lucky leo ht c cu thang?

    (ngha l leo n bc thang th n). Bm mun nh bn tr li cu hi ny.

    D liu

    Dng u tin: gm 2 s nguyn n v k, l s bc ca cu thang v s bc thang b hng

    (0 k < n 100000).

    Dng th hai: gm k s nguyn cho bit ch s ca cc bc thang b hng theo th t tng

    dn.

    Kt qu

    In ra phn d ca s cch Lucky leo ht cu thang khi chia cho 14062008.

    V d

    D liu 4 2 2 3

    Kt qa 0

    D liu 90000 1 49000

    Kt qa 4108266

    Hng dn: Gi F[i] l s cch ti c bc thang th i. Ta d dng tm ra cng thc QH l

    F[i] := F[i-1] + F[i-2]. phc tp O(n).

    3. Xp hng mua v ( http://vn.spoj.pl/problems/NKTICK )

    C N ngi sp hng mua v d bui ho nhc. Ta nh s h t 1 n N theo th t ng trong

    hng. Mi ngi cn mua mt v, song ngi bn v c php bn cho mi ngi ti a hai v.

    V th, mt s ngi c th ri hng v nh ngi ng trc mnh mua h v. Bit ti l thi gian

    cn thit ngi i mua xong v cho mnh. Nu ngi i+1 ri khi hng v nh ngi i mua h v

    th thi gian ngi th i mua c v cho c hai ngi l ri.

    Yu cu: Xc nh xem nhng ngi no cn ri khi hng v nh ngi ng trc mua h v

    tng thi gian phc v bn v l nh nht.

  • D liu

    Dng u tin cha s N (1 N 60000).

    Dng th 2 ghi N s nguyn dng t1, t2, ..., tN. (1 ti 30000)

    Dng th ba ghi N-1 s nguyn dng r1, r2, ..., rN-1. (1 ri 30000)

    Kt qa

    In ra tng thi gian phc v nh nht.

    V d

    D liu: 5

    2 5 7 8 4

    4 9 10 10

    Kt qa 18

    D liu: 4

    5 7 8 4 50 50 50

    Kt qa 24

    Hng dn: Gi F[i] l thi gian t nht i ngi u tin mua v xong.

    Ta c cng thc QH F[i] := Max(F[i-1] + T[i], F[i-2] + R[i-1]).

    phc tp O(n).

    4. Ni mng ( http://vn.spoj.pl/problems/NKCABLE )

    Cc hc sinh khi n thc tp trong phng my tnh thng hay chi tr chi in t trn mng.

    ngn nga, ngi trc phng my ngt tt c cc my tnh ra khi mng v xp chng

    thnh mt dy trn mt ci bn di v gn cht my xung mt bn ri nh s th t cc my

    t 1 n N theo chiu t tri sang phi. Cc hc sinh tinh nghch khng chu thua, h quyt

    nh tm cch ni cc my trn bn bi cc on dy ni sao cho mi my c ni vi t nht mt

    my khc. tin hnh cng vic ny, h o khong cch gia hai my lin tip. Bn hy gip

    cc hc sinh ny tm cch ni mng tho mn yu cu t ra sao cho tng di cp ni phi s

    dng l t nht.

    D liu

    Dng u tin cha s lng my N (1 N 25000).

    Dng th i trong s N-1 dng tip theo cha cc khong cch t my i n my i+1

    (i=1,2,...,N-1). Gi thit rng khong cch t my 1 n my N khng vt qu 106.

    Kt qu

    Ghi ra di ca cp ni cn s dng.

  • V d

    D liu: 6

    2 2

    3 2

    2

    Kt qa 7

    Hng dn: Gi F[i] l di ca cch ni mng ngn nht xt t my 1 ... i.

    Ta c F[i] := Min(F[i-2], F[i-1]) + L[i-1];

    Thi gian O(n)

    5. Mua v tu ha ( http://vn.spoj.pl/problems/QBTICKET )

    Tuyn ng st t thnh ph A n thnh ph B i qua mt s nh ga. Tuyn ng c th biu

    din bi mt on thng, cc nh ga l cc im trn . Tuyn ng bt u t A v kt thc

    B, v th cc nh ga s c nh s bt u t A (c s hiu l 1) v B l nh ga cui cng.

    Gi v i li gia hai nh ga ch ph thuc vo khong cch gia chng. Cch tnh gi v nh sau:

    Khong cch gia hai nh ga (X)

    Khong cch 0 < X Gi v C1

    Khong cch 0 < X Gi v C2

    Khong cch 0 < X Gi v C3

    Ngha l vi cc gi v C1, C2, C3 tng ng bn s i qung ng ti a l L1, L2, L3.

    V i thng t nh ga ny n nh ga khc ch c th t mua nu khong cch gia chng

    khng vt qu L3. V th nhiu khi i t nh ga ny n nh ga khc ta phi t mua mt s

    v. Hn th na, nhn vin ng st yu cu hnh khch ch c gi ng mt v khi i trn

    tu v v s b hu khi hnh khch xung tu.

    Yu cu: Tm cch t mua v i li gia hai nh ga cho trc vi chi ph mua v l nh nht

    Input

    Dng u tin ghi cc s nguyn L1, L2, L3, C1, C2, C3 (1

  • Example

    Input:

    3 6 8 20 30 40

    7 2 6

    3 7

    8

    13 15

    23

    Output: 70

    Hng dn: Gi F[i] l chi ph t nht i n ga i trn chng t s n f.

    Ta c F[i] := Min( F[i], F[j] + Chi ph t j -> i )

    Ch : Ci t kho lo trnh TLE (Time Limit Exceeded)

    6. Do chi bng xe but ( http://vn.spoj.pl/problems/KMBUS )

    Mt tuyn ng thnh ph c cc bn xe bus tng km tuyn ng. Mi ln qua bn, xe u

    n khch. Mi bn u c im xut pht. Mt xe ch chy khng qu B km k t im

    xut pht ca n. Hnh khch khi i xe s phi tr tin cho di on ng m h ngi trn

    xe. Cc ph cn tr i on ng di i l Ci(i=1,2..B). Mt du khch xut pht t 1 bn

    no mun i do L km theo tuyn ni trn. Hi ng ta phi ln xung xe nh th no tng

    s tin phi tr l nh nht c th.

    D liu vo:

    Dng u ghi 2 s nguyn dng B, L.

    Dng th i trong s B dng tip theo ghi 1 s nguyn dng Ci ( 1 i B ).

    Kt qa

    Mt dng duy nht l s tin nh nht phi tr

    Gii hn

    0 B 100 0 L 10000 0 Ci 100 V d D liu: 5 7 3

    4

    6 9

    22 Kt qa 14

  • Hng dn: Gi F[i] l s tin t nht ngi phi tr khi i i km.

    Ta c cng thc QH: F[i] := Min( F[i], F[i-j] + a[j]) vi j

  • 12

    1 2

    3 5 0 4

    6 8 7 13

    4 6

    9 10 9 12

    11 14 15 19

    14 16

    18 20

    Kt qa 16

    Hng dn: - Sp xp N yu cu tng dn theo thi gian kt thc.

    - Gi F[i] l tng thi gian s dng nhiu nht ca hi trng xt t yu cu 1 n i.

    - Ta c F[i] := Max(F[i-1], F[j] + k[i] - p[i]) vi j l yu cu sao cho k[j]

  • Hng dn: V khi loi i khng th vt qu chiu cao a[i] nn vi a[i] cng b th khi loi i

    phi c xp cng thp. Ta s tin hnh sp xp h, a, c theo chiu tng dn ca a. Dng mng

    F[i, j] : boolean vi ngha F[i, j] = true tc l ta dng i loi khi u tin v xy c thang

    my c chiu cao l j.

    Cch tnh F[i, j] nh sau:

    -------------------------------------------------------------------------------

    F[i, j] := (k = 0) or ((k > 0) and (F[i-1, k]); vi k = j - h[i] * t

    t : s khi loi i em dng

    -------------------------------------------------------------------------------

    10. Rectangles Perimeter ( http://vn.spoj.pl/problems/MMAXPER )

    .

    ).

    )

    INPUT

    i.

    = 1, 2, , n.

    OUTPUT

    : Input 5

    2 5 3 8

    1 10

    7 14 2 5

  • Output

    68

    .

    5 + 6 + 3 + 7 + 10 + 13 + 7 + 12 + 5 = 68

    11. Xu con lin tip i xng di nht

    Cho mt xu S

  • procedure Lam;

    var i, j : Longint ;

    { }

    procedure try( first, last : Longint );

    var : Longint;

    Begin

    if first = last then

    begin

    := 1;

    dec(first);

    inc(last);

    end

    else := 0;

    repeat

    if (first < 1) or (last > N) then break;

    if s[i] = s[j] then

    begin

    := + 2;

    first := first - 1;

    last := last + 1;

    end

    else break;

    until false;

    if max < dd then max := dd;

    End;

    { }

    Begin

    i := n div 2;

    j := n div 2 + 1;

    max := 1;

    while (i > max div 2) and (j max div 2 then

    begin

    try( i, i );

    try( i, i+1 );

    end;

    if j

  • Bi trn cn c mt cch NlogN na l dng Suffix Aray, thm ch c cch O(N) l s dng Suffix

    Tree v thut ton tm LCA. ng nhin cch ci t khng h d dng! Cc bn c th t tm

    hiu!

    12. Chia mt xu thnh t nht cc Palindrome ( di 1000 )

    Bi ny phc tp hn bi trn, cch lm th vn l QH.

    Gi F[i] l s palindrome t nht m on 1..j chia thnh c.

    Ta c cng thc: F[i] = max( F[j] + 1; j < i tha mn : on j+1..i l palindrome)

    on chng trnh nh sau:

    F[0] := 0;

    for i := 1 to n do

    begin

    for j := i-1 downto 0 do

    if (on j+1..i l palindrome) then

    F[i] := max( F[i], F[j]+1 );

    end;

    Hai vng for lng nhau mt O(N2), phn kim tra on j+1..i l palindrome hay khng mt O(N),

    vy phc tp thut ton l O(N3). S khng c kh thi nu N = 1000. gim phc tp

    thut ton, ta s dng mng L[i, j] c ngha tng t nh mng F[i, j] bi 1. QH lp mng

    L[i, j] mt N2. Tng cng l O(N2) v mi ln kim tra ch mt O(1).

    C th ci tin bng cch dng hai mng mt chiu L[i] v C[i] c ngha:

    * L[i] l di ln nht ca palindrome di l nhn s[i] lm tm;

    * C[i] l di ln nht ca palindrome di chn nhn s[i] v s[i+1] lm tm;

    L[i] v C[i] c th tnh c bng cch 2 bi 2 trong O(N2). Phn kim tra ta vit li nh sau:

    -------------------------------------------------------------

    Function is_palindrome(i, j : integer) : boolean;

    var t : integer;

    Begin

    t := j-i+1;

    if odd (t) then is_palindrome := (L[(i+j) div 2] >= n)

    else is_palindrome := (C[(i+j) div 2] >= n)

    end;

    -------------------------------------------------------------

    Vy thut ton ca chng ta c phc tp tnh ton l O(N2), chi ph b nh l O(N).

    13. m chui i xng ( http://vn.spoj.pl/problems/QBPAL )

    Trong mt bui hc vit ch, Bm pht hin trong mt s t khi b i mt s k t th c ngc

    hay c xui u ging nhau.

    V d t IOICAMP, khi xa i cc ch ci C,A,M,P, th cn li IOI l mt t i xng.

  • Bm cm thy th v, v cu tip tc th xa cc k t khc, kt qu l c thm nhiu t i xng

    na: II, I, O, C Nhng nu vi mt t di, c th tng cch xa nh vy th tht mt thi gian.

    Bn hy vit chng trnh gip Bm tnh s cch xa sao cho t thu c i xng. Hai cch xa

    ch khc nhau bi th t xa cc k t th coi nh trng nhau.

    Input

    Mt dng duy nht l t cn tnh s cch xa, t ny ch cha cc ch ci in hoa A, B, .., Z. (

    di t khng qu 120 )

    Output

    Mt s duy nht l s cch xa.

    Example

    Input:

    IOICAMP

    Output:

    9

    Hng dn: Vic m s cch xa cc k t to thnh Palindrome cng chnh l m xem

    xu ban u c bao nhiu xu con (khng cn lin tip) l xu Palindrome

    Gi F[i, j] : s palindrome l xu con ca on i..j. Ta c cng thc:

    --------------------------------------------------------------------

    F[i, i] := 1;

    If s[i] = s[j] then F[i, j] := F[i+1, j] + F[i, j-1] + 1

    If s[i] s[j] then F[i, j] := F[i+1, j] + F[i, j-1] - F[i+1, j-1]

    --------------------------------------------------------------------

    on chng trnh trn ch c tnh m phng, mun hon thin bn phi ci t cc php tnh

    cng tr s ln v kt qu c th ln ti 2N - 1. phc tp ca thut ton l O(N2).

    14. Palindrome - IOI 2000

    Cho mt xu, hi phi thm vo n t nht bao nhiu xu k t n tr thnh mt palindrome

    ( di

  • D liu vo

    Gm mt dng duy nht cha chui s, ch gm nhng ch ci in thng.

    Kt qu

    Gm mt dng duy nht l mt xu con i xng di nht ca xu s. Nu c nhiu kt qu, ch

    cn in ra mt kt qu bt k.

    Gii hn

    Chui s c di khng vt qu 2000.

    V d

    D liu mu

    lmevxeyzl

    Kt qa

    level

    Hng dn: Gi F[i, j] l chui con i xng di nht ca chui xt t i..j

    Nu s[i] = s[j] th F[i, j] := F[i+1, j-1] + 2 ngc li F[i, j] := Max(F[i+1, j], F[i, j-1]);

    C s quy hoch ng: - F[i, i] = 1;

    - Nu s[i] = s[j] th F[i, i+1] = 2 ngc li F[i, i+1] = 1;

    16. Xu con chung di nht ( http://vn.spoj.pl/problems/QBSTR )

    Xu k t X c gi l xu con ca xu k t Y nu ta c th xo i mt s k t trong xu Y

    c xu X.

    Cho bit hai xu k t A v B, hy tm xu k t C c di ln nht v l con ca c A v B.

    Input

    Dng 1: cha xu A

    Dng 2: cha xu B

    Output

    Ch gm mt dng ghi di xu C tm c

    Example

    Input: abc1def2ghi3

    abcdefghi123

    Output: 10

    Hng dn: Gi F[i, j] l di xu con chung di nht ca xu gm i k t u ca xu A v j

    k t u ca xu B. Ta c cng thc QH

    if A[i] = B[j] then

    F[i, j] := F[i-1, j-1] + 1

    else

    F[i, j] := Max(F[i-1, j], F[i, j-1], F[i-1, j-1]);

  • 17. Dy con chung khng lin k di nht (http://vn.spoj.pl/problems/LNACS)

    Dy C = c1, c2, ..., ck l dy con khng lin k ca dy A = a1, a2, ..., am nu C c th nhn c

    bng cch chn mt dy cc phn t khng lin k ca A, ngha l tm dc dy cc ch s i1, i2,

    ..., ik sao cho:

    1 i1, i2, ..., ik m;

    i1 < i2 - 1, i2 < i3 - 1, ..., ik - 1 < ik - 1;

    c1 = ai1, c2 = ai2, ck = aik.

    Ta gi di ca dy s l s phn t ca n.

    Cho hai dy:

    A = a1, a2, ..., am v

    B = b1, b2, ..., bn

    Dy C c gi l dy con chung khng lin k ca hai dy A v B nu nh n va l dy con

    khng lin k ca A, va l dy con khng lin k ca B.

    Yu cu

    Cho hai dy s A v B. Hy tm di ca dy con chung khng lin k di nht ca hai dy cho.

    D liu

    Dng u tin cha hai s nguyn dng m v n (2 m, n 103) c ghi cch nhau bi

    du cch, ln lt l s lng phn t ca dy A v dy B.

    Dng th i trong m dng tip theo cha s nguyn khng m ai (ai 104), i = 1, 2, ..., m.

    Dng th j trong n dng tip theo cha s nguyn khng m bj (bj 104), j = 1, 2, ..., n.

    Kt qu

    Ghi ra trn mt dng duy nht di ca dy con chung khng lin k di nht ca hai dy A v B

    Input:

    4 5 4 9 2 4 1 9 7 3 4 Output: 2

    Hng dn: y l bi s 1 trong thi HSG QG Tin hc nm 2010

    Bi ton ny hon ton tng t vi bi ton 16. Cc bn t code!

  • 18. on cao tro ca bn nhc ( http://vn.spoj.pl/problems/NKTHEME )

    Trong mt bn nhc thng c nhng on nhc c s dng nhiu ln (t nht 2 ln). Nhng

    on gi l "on cao tro". Do c th s dng nhiu ging khc nhau (son, la, si...) nn nt

    u tin ca cc ln xut hin c th khc nhau, nhng chnh lch cao gia hai nt lin tip th

    nh nhau.

    Chng hn 1 2 5 4 10 v 4 5 8 7 13 c coi l th hin mt on cao tro, v chng cng chnh

    lch cao : +1,+3,-1,+6.

    Trong mt bn nhc, on cao tro cn phi tha mn nhng iu kin:

    on cao tro phi c t 5 nt nhc tr ln.

    Nhng ln xut hin ca on khng c chng ln nhau (khng c nt nhc chung).

    Yu cu: Cho mt bn nhc, tm on cao tro di nht.

    D liu vo

    Dng 1: cha s nguyn n, s nt nhc (n 5000).

    Mt s dng sau cha n s nguyn trong phm vi 1..88, th hin n nt nhc.

    Kt qu

    In ra 1 dng duy nht cha 1 s nguyn l di on cao tro di nht. Nu khng tm c

    on cao tro, in ra 0.

    V d

    D liu mu 30

    25 27 30 34 39 45 52 60 69 79 69 60 52 45 39 34 30 26 22 18 82 78 74 70 66 67 64 60 65 80

    Kt qa 5

    5 nt cui dng 1 v 5 nt u dng 2 th hin on cao tro di nht.

    Hng dn: Gi F[i, j] l on cao tro di nht ca bn nhc xt t 1..i v i+5..j. Vi t tng

    ca bi xu con chung di nht ta c th gii quyt bi ton nu trn! Kt qu l Max(F[i, j])

    19. Blast (http://vn.spoj.pl/problems/MBLAST )

    - - - - - -

    -).

    .

    .

    Input

    -

  • Output

    .

    Sample

    Hng dn: Gi F[i, j] l khong cch nh nht gia 2 xu m rng ca A xt t 1..i v B xt t 1..j. Ta c

    F[i, j] := Min

    Sau y chng ta s xt n chui cc bi ton QH lin quan ti dy s, bng s.

    20. Dy con di nht ( http://vn.spoj.pl/problems/NKMAXSEQ )

    Cho dy s nguyn a1, a2, , an.

    Dy s ai, ai+1, , aj vi 1 i j n c gi l dy con ca dy s cho v khi , j-i+1 c

    gi l di, cn ai+ai+1...+aj c gi l trng lng ca dy con ny.

    Yu cu: cho s nguyn p, trong s cc dy con ca dy s cho c trng lng khng nh hn

    p hy tm dy con c di ln nht.

    D liu vo

    Dng u tin ghi hai s nguyn n v p cch nhau bi du cch.

    Dng th i trong s n dng tip theo cha s nguyn ai l s hng th i ca dy s cho,

    i = 1, 2, , n.

    Kt qu

    Ghi ra s nguyn k l di ca dy con tm c (qui c: nu khng c dy con no tha mn

    iu kin t ra th k = -1).

    BLAST.IN BLAST.OUT

    cmc snmn

    2

    10

    koiv ua

    1

    5

    mj jao

    4

    12

    F[i-1, j-1] + abs(ORD(s1[i]) - ORD(s2[j]))

    F[i-1, j-1] + 2 * K

    F[i-1, j] + K

    F[i, j-1] + K

  • Hn ch

    Trong tt c cc test: 1 n 50000; |ai| 20000; |p| 109. C 50% s lng test vi n 2000.

    V d

    D liu mu 5 6

    -2 3

    2

    -2 3

    Kt qa 4

    D liu mu 4 9 2

    3

    2 -2

    Kt qa -1

    Hng dn: Gi F[i] trng lng ca dy xt t 1..i. S dng mng D vi ngha: D[i] = true

    nu i l v tr "ng quan tm", y l v tr lm cho trng lng ca 1 dy lin tc gim so vi v

    tr k trc n. Cch xc nh v tr "ng quan tm" c thc hin qua on chng trnh sau:

    ---------------------------------------

    D[0] := true;

    min := 0;

    For i:=1 to n do

    begin

    If F[i] < min then

    begin

    min := F[i];

    D[i] := true;

    end;

    end;

    ---------------------------------------

    on chng trnh tm ra di ln nht.

    ---------------------------------------

    max_length := -1;

    pos := n;

    For i := n downto 0 do

    If D[i] then

    begin

    For j := pos downto i+1 do

    If F[j] - F[i] >= p then

    begin

    If j - i > max_length then max_length := j - i;

    break;

    end;

    pos := j;

    end;

    ---------------------------------------

    y l bi ton c bn v c nhiu ng dng. Tuy code ngn nhng cc bn cn c v hiu r

    bn cht ca n!!!

  • 21. Dy con ngn nht

    Cho dy s nguyn a1, a2, , an.

    Dy s ai, ai+1, , aj vi 1 i j n c gi l dy con ca dy s cho v khi , j-i+1 c

    gi l di, cn ai+ai+1...+aj c gi l trng lng ca dy con ny.

    Yu cu: cho s nguyn p, trong s cc dy con ca dy s cho c trng lng khng nh hn

    p hy tm dy con c di b nht.

    D liu vo

    Dng u tin ghi hai s nguyn n v p cch nhau bi du cch.

    Dng th i trong s n dng tip theo cha s nguyn ai l s hng th i ca dy s cho,

    i = 1, 2, , n.

    Kt qu

    Ghi ra s nguyn k l di ca dy con tm c (qui c: nu khng c dy con no tha mn

    iu kin t ra th k = -1).

    Hn ch

    Trong tt c cc test: 1 n 50000; 0 ai 20000; |p| 109.

    Hng dn: Cn ch im khc bit gia bi ton ny v bi Dy con di nht ch gi tr

    ca a[i] 0, v kt qu l ngn nht. Bi ton ny c th gii quyt trong O(n) nh sau:

    -----------------------------------------------------------------

    i := 1; j := 1;

    s := a[1];

    min := maxlongint;

    while (i

  • Ngi Th tng quyt nh cho php khai thc v vng khai thc d qun l nn l mt vng

    hnh ch nht. Ngi Th tng mun tm mt phng n khai thc g sao cho din tch khai thc

    l nh nht v vn lng g cn thit xut khu.

    Do lu ngy khng lp trnh nn ngi Th tng cn n s gip ca cc bn. Cc bn hy

    gip ngi Th tng no.

    D liu

    Dng th nht ghi ba s M, N, K (1 M, N 500, 1 K 109).

    Dng th i trong M dng tip theo ghi N s nguyn khng m, trong s th j cho bit

    lng g ti khu vc (i, j). Bit lng g ti mi khu vc khng vt qu 104 m3.

    Kt qu

    Nu khng tn ti vng khai thc g no cho g xut khu, in ra -1. Ngc li in ra:

    Dng th nht ghi din tch nh nht c th ca vng khai thc g.

    Dng tip theo ghi bn s l ch s ca gc tri trn v gc phi di ca vng khai thc

    g. Nu c nhiu vng cng tha mn th in ra ta ca mt vng bt k.

    V d

    D liu 3 3 19

    5 4 0

    4 7 0 0 0 2

    Kt qu 4

    1 1 2 2

    Hng dn: Xt hai cnh L, R ca bng s.

    For L := 1 to N do

    For R := L to N do

    By gi ta c dy m phn t, phn t i c gi tr bng A[i, L] + A[i, L+1] + ... + A[i, R]

    p dng phin bn mt chiu ca bi ton gii - bi ton Dy con ngn nht.

    23. Dy con c tng bng S

    Cho dy cc s nguyn A1, A2, A3, ...An. Hy tm mt dy con ca dy (cc phn t khng cn

    lin tip) c tng bng S.

    Hng dn: t L[i, t] = true nu c th to ra tng t t mt dy con ca dy gm cc phn t

    A1, A2, ..Ai. Ngc li th L[i, t] = false. Nu L[n,S] = true th p n ca bi ton trn l c.

    Ta c th tnh L[i, t] theo cng thc: L[i, t] = true nu L[i1,t] = true hoc L[i1,ta[i]] = true.

    Ci t: Nu p dng lun cng thc trn th ta cn dng bng phng n hai chiu. Ta c th

    nhn xt rng tnh dng th i, ta ch cn dng i-1. Bng phng n khi ch cn 1 mng 1

  • chiu L[0..S] v c tnh nh sau:

    L[0]:=1;

    for i := 1 to n do

    for t := S downto a[i] do

    L[t] := L[t] xor L[ta[i]];

    D thy bi ch l cch pht biu khc ca Bi 1: i xem phim. Chi ph khng gian ca cch

    ci t trn l O(m), chi ph thi gian l O(n.m), vi m l tng ca n s. Hy t kim tra xem ti

    sao vng for th 2 li l for downto ch khng phi l for to.

    24. Dy con lin tip c tng ln nht

    Cho dy cc s nguyn A1, A2, A3, ...An. Hy tm dy con lin tip c tng ln nht v in ra tng

    Gii hn: - |Ai| 109

    - N 100000

    Hng dn: Nu gi F[i] l tng cc s t 1..i, kt qu l Max(F[i] - F[j]) th chng trnh c

    phc tp O(N2), khng kh thi vi N = 100000. Ta c th ci tin gim phc tp xung nh

    sau: Max(F[i] - F[j]) = F[i] - Min(F[0], F[1], F[2], ... F[i-1]) = F[i] - F[C[i]]

    vi C[i] l ch s ca phn t nh nht ng trc F[i]. phc tp lc ny l O(N).

    p dng bi ton ny c th gii quyt c bi Ma trn con c tng ln nht.

    25. Dy con khng gim di nht ( http://vn.spoj.pl/problems/QBMSEQ )

    Cho dy s nguyn dng a1, a2, ..., an.

    Dy s: ai, ai+1, ..., aj tha mn ai ai+1 ... aj. Vi 1 i j n c gi l dy con khng

    gim ca dy s cho v khi s j-i+1 c gi l di ca dy con ny.

    Yu cu: Trong s cc dy con khng gim ca dy s cho m cc phn t ca n u thuc

    dy s {uk} xc nh bi u1 = 1, uk = uk-1 + k (k 2), hy tm dy con c di ln nht.

    Input

    Dng u tin cha mt s nguyn dng n (n 104).

    Dng th i trong n dng tip theo cha mt s nguyn dng ai (ai 108) l s hng th i ca

    dy s cho, i = 1, 2, ..., n.

    Output

    Gm 1 dng duy nht ghi s nguyn d l di ca dy con khng gim tm c (quy c rng

    nu khng c dy con no tha mn iu kin t ra th d = 0).

  • Example

    Input:

    8

    2 2007

    6 6

    15

    16 3

    21 Output:

    3

    Hng dn: Ta nhn thy dy { Uk } c cng thc tng qut: Uk = k * (k+1) / 2;

    Gi F[i] l di dy con khng gim di nht xt t 1..i. Ta c:

    - Nu a[i] thuc dy { Uk } v (a[i] >= a[i-1]) v (F[i-1] > -1) th c F[i] := F[i-1] + 1;

    - Nu a[i] khng thuc dy th F[i] := -1. Kt qu l Max(F[i])

    26. V tr tt ( http://vn.spoj.pl/problems/NKSEQ )

    Cho dy s nguyn a1, a2, ..., an (1 n 100000), mi s khng vt qa 10000. Dy s ny

    c vit trn mt vng trn. Ngha l, khi ct vng trn ti v tr j, ta thu c:

    aj, aj+1,..., an, a1, a2, ..., aj1

    V tr j c gi l v tr tt, nu cc iu kin sau y c tha mn:

    aj > 0 aj + aj+1 > 0 .... aj + aj+1 + ... + an > 0 aj + aj+1 + ... + an + a1 > 0 ... aj + aj+1 + ... + an + a1 + a2 + ... + aj2 > 0 aj + aj+1 + ... + an + a1 + a2 + ... + aj2 + aj1 > 0

    Yu cu: hy m s v tr tt.

    D liu vo

    Dng u tin cha s nguyn n.

    Dng th 2 cha dy s a1, a2,...,an.

    Kt qu

    In ra 1 s nguyn duy nht l s v tr tt.

    V d

    D liu mu 5

    0 1 -2 10 3

    Kt qa 2

  • Hng dn:

    Cch 1: t

    L[i] = Min(a[1], a[1] + a[2], ..., a[1] + a[2] + ... + a[i])

    R[i] = Min(a[n], a[n-1] + a[n] , ..., a[i] + ... + a[n])

    S[i] = a[i] + ... + a[n]

    Khi i l v tr tt khi v ch khi R[i] > 0 AND S[i] + L[i-1] > 0

    Mng L, R, S c th tnh trong O(n).

    phc tp thut ton: O(n).

    Cch trn y kh d hiu. Ngoi cch ny ta cng c mt cch khc kh n gin nh sau:

    Cch 2:

    Xt S = a[1] + a[2] + ... + a[n]

    Nu S 0

    t F[i] = Min(a[i], a[i]+a[i+1], ..., a[i]+...+a[i-1])

    Trc tin ta tnh

    F[n] = Min(a[n], a[n]+a[1], ..., a[n]+...+a[n-1]) mt O(n)

    Sau ta c nhn xt:

    F[n-1] = Min(a[n-1] + F[n], a[n-1])

    V: a[n-1]+(a[n], a[n]+a[1], ..., a[n]+...+a[n-1]) s to thnh cc tng, tr mt trng hp l

    a[n-1] + (a[n]+...+a[n-1]) = a[n-1] + s.

    Tuy nhin v s > 0 nn a[n-1] + s > a[n-1], do kt qu ny s khng c tnh!

    Tng t, ta c:

    F[i] = Min(a[i] + F[i+1], a[i])

    Do F[i] ph thuc vo F[i+1] nn ch cn dng 1 bin.

    27. Dy con di nht c tng chia ht cho K ( http://vn.spoj.pl/problems/QBSEQ )

    Cho mt dy gm n ( n

  • Example

    Input:

    10 3

    2 3 5 7 9 6 12 7

    11 15

    Output:

    9

    28. Dy con lin tip di nht c tng chia ht cho K

    Cho mt dy s gm N s nguyn v mt s nguyn dng k. Hy tm mt dy con di nht lin

    tip nhau sao cho tng chia ht cho k.

    D liu vo: t file DAYSO.INP c dng:

    - Dng u tin l hai s N v k (N 500000; k 10000);

    - Cc dng tip theo l N s nguyn ca dy (cc s kiu Longint), mi s trn mt dng.

    Kt qu: ra file DAYSO.OUT gm mt dng duy nht cha hai s m v s, trong m l di ln

    nht tm c v s l v tr bt u ca dy .

    V d:

    Hng dn:

    - Gi S[i] l tng cc s t a[1] n a[i] trong dy.

    - d tnh ton v tit kim b nh, ta dng lun mng a nh sau : a[i] := (a[i-1]+a[i]) mod k;

    - V K 10000 nn 0 a[i] 9999. Dng mng Pos : [0..9999] vi ngha Pos[i] l v tr xut

    hin u tin ca a[i] trong dy, nu a[i] cha xut hin th Pos[i] = 0.

    - Trong bc duyt n phn t a[j], nu Pos[a[j]] 0 th ta s cp nht Max vi (j - Pos[a[j]] )

    - phc tp O(n)

    29. Dy con tng di nht ( http://vn.spoj.pl/problems/LIS )

    Cho mt dy s nguyn gm N phn t A[1], A[2], ... A[N].

    Bit rng dy con tng n iu l 1 dy A[i1],... A[ik] tha mn

    i1 < i2 < ... < ik v A[i1] < A[i2] < .. < A[ik]. Hy cho bit dy con tng n iu di nht ca dy

    ny c bao nhiu phn t?

    Input

    Dng 1 gm 1 s nguyn l s N (1 N 30000).

    Dng th 2 ghi N s nguyn A[1], A[2], .. A[N] (1 A[i] 232).

    DAYSO.INP DAYSO.OUT

    3 1 2 3

    3 1

  • Output

    Ghi ra di ca dy con tng n iu di nht.

    Example

    Input:

    6

    1 2 5 4 6 2

    Output: 4

    Gii thch test v d: Dy con di nht l dy A[1] = 1 < A[2] = 2 < A[4] = 4 < A[5] = 6, di

    dy ny l 4.

    Hng dn: Ci t theo cch ci tin: Kt hp tm kim nh phn + QH. phc tp ca bi

    ton l O(NlogN).

    30. Sp xp cc qun bi (http://vn.spoj.pl/problems/MCARDS )

    .

    Input

    , (1 N 100).

    .

    .

    Output

    .

    Sample

    CARDS.IN CARDS.OUT

    2 2 2 1

    1 2

    1 1 2 2

    2

    4 1 2 1

    3 1

    1 1 4 1

    0

    3 2

    3 2 2 2

    1 1 3 1

    2 1 1 2

    2

  • Hng dn: C tt c N*C qun bi. Nu nh tt c u cng 1 mu th cch lm d nhn ra l

    tm ra L l di ca dy tng di nht. p n s l N*C - L. Vy trong trng hp bi ton

    ny ta nn sp xp mu no ng trc? Th t no s cho kt qu ti u? Ta s th tt c cc

    phng n chn gii php ti u! Tm qun i vic bi m ha cc mu t 1..4, thay v

    ta coi D[i] l th t ca mu i (1 i 4) trong dy sau khi sp xp. V d:

    th t mu 1 mu 4 mu 2 mu 3

    D D[1] = 1 D[4] = 2 D[2] = 3 D[3] = 4

    Sau khi c th t ca cc mu, coi nh dy lc ny c N*C qun ch c mt mu v gi tr ca

    tng qun bi c tnh nh sau: a[i] = D[mau[i]] * 1000 + gt[i]

    vi: - mau[i] : mu ca qun bi i.

    - gt[i] : gi tr thc ca qun bi trong cho.

    Vi cch cp u bi, ta hon ton c th gii quyt bi ton!

    phc tp tnh ton O(NlogN * C!) vi NlogN gii quyt bi ton dy con tng di nht v C!

    php hon v.

    31. Sequences ( http://vn.spoj.pl/problems/SPSEQ )

    W. l 1 dy cc s nguyn dng. N c cc c im sau:

    - di ca dy l 1 s l: L = 2*N + 1

    - N + 1 s nguyn u tin ca dy to thnh 1 dy tng

    - N + 1 s nguyn cui ca dy to thnh 1 dy gim

    - Khng c 2 s nguyn no cnh nhau trong dy c gi tr bng nhau

    V d: 1, 2, 3, 4, 5, 4, 3, 2, 1 l 1 dy W. di 9. Tuy nhin, dy 1, 2, 3, 4, 5, 4, 3, 2, 2

    khng l 1 dy W.

    Yu cu: Trong cc dy con ca dy s cho trc, tm dy W. c di di nht.

    Input

    Dng 1: s nguyn dng N (N

  • Input:

    19

    1 2 3 2 1 2 3 4 3 2 1 5 4 1 2 3 2 2 1

    Output: 9

    32. Super Number

    Cho dy s nguyn a1, a2, , aN khc nhau i mt (N 105, 1 ai 2

    31). S ai c gi l s

    c bit i vi dy s trn nu ai thuc t nht mt dy con tng di nht ca dy s ban u.

    Yu cu: Tm mi s c bit ca dy ban u ca dy s nguyn a1, a2, , aN.

    D liu: vo t file vn bn SPECIAL.INP nh sau:

    Dng u l s T ( 1

  • Example

    Input:

    4

    1 5

    4 6

    Output: 2

    Hng dn: Ta nhn thy l s dy con t nht chnh bng di ca dy con gim cc i.

    34. Nested Dolls ( http://vn.spoj.pl/problems/MDOLLS )

    1

    2

    1 < h2.

    .

    Input

    , 1 m 20000,

    1, h1,w2, h2,

    , 1 wi, hi 10000.

    SAMPLE INPUT 4 3 20 30 40 50 30 40 4 20 30 10 10 30 20 40 50 3 10 30 20 20 30 10 4 10 10 20 30 40 50 39 51

    Output

    . SAMPLE OUTPUT 1 2 3 2

  • Hng dn: Sp xp cc bp b theo chiu tng dn w[i]. Bi ton c a v bi QBDIVSEQ

    p dng trn dy h[i]. Ch : X l sp xp mt cch kho lo c th AC ;)

    35. Wooden Sticks ( http://vn.spoj.pl/problems/MSTICK )

    :

    .

    mn .

    ( 9 , 4 ) ( 2 , 5 )( 4 , 1 ) ( 5 , 3 ) ( 9 , 4 )

    ( 1 , 2 ) ( 2 , 5 ) .

    Input

    , 1

  • Sample

    37. ng i c tng ln nht ( http://vn.spoj.pl/problems/QBMAX )

    Cho mt bng A kch thc m x n (1

  • Bc. Robot thc hin cc lnh chng trnh mt cch tun t v dng li khi gp du hiu kt thc

    chng trnh. Cc chuyen vin ca cng ty Roboco mun xc nh xem c bao nhiu chng trnh

    khc nhau gm K cu lnh iu khin trn trc ta tng ng vi di ca mt bc di

    chuyn ca Robot.

    D liu vo: t file ROBOCO.INP cha 3 s nguyn K, x, y (0 K 16, |x|, |y| 16) c ghi

    cch nhau bi du cch.

    Kt qu: ghi ra file ROBOCO.OUT s lng chng trnh tm c.

    V d:

    Hng dn: Gi F[i, j, k] l s cch n [i, j] sau k bc. y l bi kh n gin, cc bn c

    th c code hiu:

    -------------------------------------------------------------------------------

    a[0, 0] := 1;

    For k := 1 to n do

    Begin

    For i := -26 to 26 do

    For j := -26 to 26 do

    c[i, j] := a[i-1, j] + a[i, j-1] + a[i, j+1] + a[i+1, j];

    a := c;

    End;

    -------------------------------------------------------------------------------

    39. ng i trn li ( http://vn.spoj.pl/problems/NKPATH )

    Cho mt li vung gm m dng v n ct. Cc dng c nh s t 1 n m t trn xung

    di, cc ct c nh s t 1 n n t tri qua phi. nm v tr dng i v ct j ca li c

    gi l (i, j) v khi , i c gi l ta dng cn j c gi l ta ct ca ny. Trn (i,

    j) ca li ghi s nguyn dng aij, i = 1, 2, , m; j = 1, 2, , n. Trn li cho, t (i, j) ta c

    th di chuyn n (p, q) nu cc iu kin sau y c tha mn:

    j < n; i p; j q v i + j < p + q;

    aij v apq c c s chung ln hn 1.

    Ta gi mt cch di chuyn t mp tri sang mp phi ca li l cch di chuyn bt u t mt

    c ta ct bng 1 qua cc ca li theo qui tc di chuyn nu v kt thc mt c ta

    ct bng n.

    Yu cu: Tnh s cch di chuyn t mp tri li sang mp phi li.

    D liu vo

    Dng u tin ghi 2 s nguyn dng m, n.

    Dng th i trong s m dng tip theo ghi n s nguyn dng ai1, ai2, , ain l cc s trn

    dng th i ca li, i = 1, 2, , m.

    Hai s lin tip trn cng mt dng c ghi cch bi t nht mt du cch.

    ROBOCO.INP ROBOCO.OUT

    5 2 3 10

  • Kt qa

    Ghi ra 1 s nguyn l phn d ca s lng cch di chuyn tm c cho 109.

    Hn ch

    Trong tt c cc test: 1 < m, n 100; aij 30000, i=1,2,,m;j=1,2,,n. C 50% s lng test

    vi m, n 50.

    V d

    D liu mu 2 2 2 4

    6 8

    Kt qa 4

    D liu mu 2 2

    2 5 6 7

    Kt qa 0

    Hng dn: Gi F[i, j] l s cch ti c [i, j]. Ta c F[i, j] := F[i, j] + F[x, y] vi (1 x i,

    1 y j). Kt qu l Sum(F[i, n]) vi 1 i m.

    Phn tip theo, chng ta s lm quen vi mt s bi tp

    Quy Hoch ng trng thi

    Cc bi ton Quy Hoch ng u da trn cc trng thi, tuy nhin c loi trng thi d pht

    hin/ kh pht hin. Do khi nhc ti QH trng thi, ta ngm hiu n l loi kh hn, dng

    phc tp hn!

    40. Tour du lch ca Sherry ( http://vn.spoj.pl/problems/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 Cij ( d nhin Cij c th khc Cji ). Tuy c b

    thng cho nhiu tin i du lch nhng sherry cng mun tm cho mnh 1 hnh trnh vi chi ph

    r nht c th dnh tin mua qu v tng mi ngi ( Cc chuyn bay ca sherry u c

    m bo an ton tuyt i ).

    Bn hy gip sherry tm 1 hnh trnh i qua tt c cc nc, mi nc ng 1 ln sao cho chi ph

    l b nht nh.

  • Input

    Dng 1: N (5 < N < 16)

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

    Output

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

    Example

    Hng dn: phn duyt ta cng xt qua bi ton ny. Ta s tham kho 1 cch gii khc

    bng QH trng thi. Gi F[i, j] l chi ph thp nht khi i n thnh ph i vi trng thi lc ny l

    j ( j l mt s nguyn m dy bit ca n biu th cho vic n hay cha n 1 thnh ph, vi quy

    c 0 l cha n 1 l n).

    Ta c F[i, j] := Min(F[x, y] + C[x, i], F[i, j]);

    Cng thc trn c hiu : thnh ph x trng thi y c thm, cn thnh ph i cha c

    thm. T thnh ph x ta n thnh ph i v trng thi lc ny t y s c chuyn sang j bi lc

    ny thm c thnh ph i. tin cho ci t th i ta s ly bit (i-1) lm trng thi ca i ( bi

    dy bit bt u t 0 ). D thy cu hnh cui cng l dy bit 11...11111 . Ta c chi ph nh nht

    s l Min(F[i, (1 shl n) -1]) vi 1 i n.

    Input: Output:

    6

    0 1 2 1 3 4

    5 0 3 2 3 4

    4 1 0 2 1 2

    4 2 5 0 4 3

    2 5 3 5 0 2

    5 4 3 3 1 0

    8