64 条题解

  • 0
    @ 2009-10-01 22:20:28

    三维的顺推

    c表示三辆车分别走到的城市i,j,k时的最优解

    l=max(i,j,k)+1,则

    c[l,j,k]=min(c[l,j,k],c+d);

    c=min(c,c+d[j,l]);

    c=min(c,c+d[k,l]);

    当l=n时更新最优解ans

  • 0
    @ 2009-09-11 18:40:18

    var a:array[1..100,1..100]of integer;

    car:array[1..100]of integer; n:integer;

    procedure re;

    var i,j:integer;

    begin

    readln(n);

    fillchar(a,sizeof(a),0);

    for i:=1 to n-1 do

    begin

    for j:=i+1 to n do read(a);

    readln;

    end;

    fillchar(car,sizeof(car),0);

    car[1]:=3;

    end;

    procedure solve;

    var i,j,min,k,w:integer;

    begin

    w:=0;

    for i:=2 to n do

    begin

    min:=30000;

    for j:=1 to i-1 do if car[j]>0 then

    if min>a[j,i] then begin min:=a[j,i]; k:=j; end;

    car[k]:=car[k]-1; car[i]:=car[i]+1; w:=w+min;

    end;

    writeln(w);

    end;

    begin

    re;

    solve;

    end.

  • 0
    @ 2009-08-26 11:05:47

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    感谢 唐钰小宝 的顺推法。。。

  • 0
    @ 2009-08-19 19:42:27

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    赤裸裸的一次AC

    暴汗ing...

    首先说:这题很水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水

    ,水到我们学校有一个资料是有写它的——《DP专题》。。。

    记忆化搜索啊啊啊啊啊啊!!!!三维的记忆化搜索。。。。

    即便是这样,我还是救护车(220)个AC的。。。

    这么水的题都没什么人做,暴汗啊啊啊啊啊啊!!!!!

    http://lifeich1.spaces.live.com/blog/cns!9AB465A9D807BE22!127.entry

    这是我的程序。。。

  • 0
    @ 2009-08-19 15:19:56

    话说这跟逆转有什么关系

  • 0
    @ 2009-08-10 22:34:26

    裸搜啊,全裸的。。

    就加了一个最优化剪枝。。

  • 0
    @ 2009-08-10 00:42:48

    。。。。。。。。。。。。

    我是沙茶............读了很久很久....结果把题意理解错了.........

  • 0
    @ 2009-08-09 11:41:24

    如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html

  • 0
    @ 2009-08-09 08:46:25

    DP的题目为什么我递归也能过.......

  • 0
    @ 2009-08-08 12:32:39

    逆转,然后再见...

  • 0
    @ 2009-08-06 13:08:13

    我~~~爱~~~水~~~题~~~!!!

  • 0
    @ 2009-08-04 21:13:33

    这题的状态

    不是 AC 就是 NC

    这很成问题

    而且数据貌似有一定漏洞

    正解应为3维DP

  • 0
    @ 2009-08-03 11:36:46

    题目中:(P.S.没有人喜欢走回头路……)

    我觉得这样讲不行,必须说是不能走已经走过的城市,这样DP才没有后效性.

    对不对啊?????如果按题目描述Dp严格来说还是有漏洞的...

  • 0
    @ 2009-07-26 15:37:31

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    动规

    就是题目的意思太难懂!

  • 0
    @ 2009-07-21 12:37:43

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    感觉楼下的"WJΨ"的做法实在太妙了!

  • 0
    @ 2009-07-13 20:55:19

    这题名字咋回事……

  • 0
    @ 2009-07-13 08:37:48

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    果然难度1......

    好像不用3维DP的说

    刚好抢到第100个...

  • 0
    @ 2009-07-09 14:55:42

    我觉的这种题用当前状态去推未知状态更好

  • 0
    @ 2009-07-08 21:52:16

    To fs302:

    for i:=2 to n do

    for j:=1 to i-1 do

    这就说明对于第i个城市,只从1-(i-1)中查找.就保证从前往后找.

  • 0
    @ 2009-07-02 20:21:21

    支持Dev的!形象,妙。但是如何保证递推过程中个城市已经访问,还是有点疑惑。

    Program vijos_1547;

    Var

    n,i,j,k,min:longint;

    a:array[0..101,0..101]of longint;

    v:array[0..101]of longint;

    f:array[0..101]of longint;

    Begin

    readln(n);

    for i:=1 to n-1 do

    for j:=i+1 to n do

    begin

    read(a);

    a[j,i]:=a;

    end;

    fillchar(f,sizeof(f),0);

    fillchar(v,sizeof(v),0);

    v[1]:=3;

    for i:=2 to n do

    begin

    min:=maxlongint;

    k:=0;

    for j:=1 to i-1 do

    if (a0)and(a0) then

    begin

    min:=a;

    k:=j;

    end;

    dec(v[k]);

    inc(v[i]);

    f[i]:=f+min;{注意是f,而不是我们常用的f[k]}

    end;

    writeln(f[n]);

    End.

信息

ID
1547
难度
1
分类
搜索 | 记忆化搜索 点击显示
标签
(无)
递交数
884
已通过
590
通过率
67%
被复制
5
上传者