249 条题解

  • 0
    @ 2009-07-15 09:16:15

    为什么我在自己的电脑上测就ac,在vijos上就错误号200?

  • 0
    @ 2009-07-09 19:16:09

    这个不是个简单的动态么?= =

  • 0
    @ 2009-07-03 13:09:02

    多进程DP,先直接从下面传上来,然后找到当前层最小的向左向右更新最优解。

    时间复杂度 O(n^2)

  • 0
    @ 2009-06-23 09:45:14

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    无敌简单

  • 0
    @ 2009-06-11 20:28:04

    program test;

    var n,i,j:word;

    a,f:array[1..1000,1..1000]of longword;

    function min(a,b:longword):longword;

    begin if a

  • 0
    @ 2009-06-06 20:30:48

    有图吗?好难理解

  • 0
    @ 2009-05-30 12:41:01

    最短路,我看还是算了吧,是稀疏图诶.

    继承下面一层的值,然后处理一下第一个数和最后一个数,在左右扫一遍就行了。

    Main Code:

    for i:=n-1 downto 1 do

    begin

    for j:=1 to i do

    f:=min(f,f)+data;

    f:=min(f,f+data);

    f:=min(f,f+data);

    f:=min(f,f+data);

    for j:=2 to i do

    f:=min(f,f+data);

    f:=min(f,f+data);

    for j:=i-1 downto 1 do

    f:=min(f,f+data);

    end;

    一定要细心....

  • 0
    @ 2009-05-28 10:58:11

    我觉得比动态方程更重要的在这里

    for i:=1 to n-1 do

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

    for i:=1 to n do read(f[n,i]);

    for i:=2 to n do f[n,i]:=f[n,i-1]+f[n,i];//从(1,1)开始做

    方程把数字金字塔改一下就可以了....

    (我觉得我的程序比下面两位大哥短得多......)

  • 0
    @ 2009-05-22 21:13:02

    program sunzhiyong1006;

    var a:array [1..1000,1..1000] of byte; b:array [1..4] of byte;

    i,n,m,j,q,w:integer; min,k:byte;

    procedure inset;

    begin

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

    for i:=1to n do

    for j:= 1to i do

    readln( a);

    end;

    procedure init(min,a:byte);

    begin

    if ji then a:=a;

    b[1]:= a; b[2]:=a;

    b[3]:=a; b[4]:=a;

    for k:=1to 4do

    if b[k]+a

  • 0
    @ 2009-05-14 17:52:14

    v001]of longint;

    n,i,j,kngint;ongint):l

    min:=a

    ifin:=b;

    pr

    eg

    +1 to i d,ji,j];

    i,1] then f+a;

    fornj-1 do

    if f,j] t]+a;

    for j do

    if f[i,i:=f+a;

    if f[i,ithen f:=f+a;

    for j:=+1 do

    if f>f[i,jf[ii,j];

    en;

    bein

    readln(n);

    for i:=1 to n do

    for j:=1 to i do begin

    read(a);a:=a;

    end;

    f[n,1]:=a[n,1];

    for j:=2 to n do f[n,j]:=f[n,j-1]+a[n,j];

    if f[n,n]>f[n,1]+a[n,n] then f[n,n]:=f[n,1]+a[n,n];

    for j:=n-1 downto 2 do

    if f[n,j]>f[n,j+1]+a[n,j] then f[n,j]:=f[n,j+1]+a[n,j];

    for i:=n-1 downto 1 do begin

    f:=min(f,f,f)+a;

    f:=min(f,f,f)+a;

    for j:=2 to i-1 do if ff then begin

    minj:=j;mi:=f;

    end;

    if i>1 then scan;

    end;

    writeln(f[1,1]);

    end.

  • 0
    @ 2009-05-11 16:19:04

    ├ Hint: 注意:每个点最多只有四个出发的方向,但不代表最多只有四个到达的方向!

  • 0
    @ 2009-05-10 10:26:56

    program sunzhiyong1006;

    var a:array [1..1000,1..1000] of byte; b:array [1..4] of byte;

    i,n,m,j,q,w:integer; min,k:byte;

    procedure inset;

    begin

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

    for i:=1to n do

    for j:= 1to i do

    readln( a);

    end;

    procedure init(min,a:byte);

    begin

    if ji then a:=a;

    b[1]:= a; b[2]:=a;

    b[3]:=a; b[4]:=a;

    for k:=1to 4do

    if b[k]+a

  • 0
    @ 2009-05-06 09:14:35

    小岛的方法有误

    向两边扫时不能用while

    int key=f[i][1],k=1;

    for(j=2;jf[i][mod(j-1,i)]+a[i][j])

    f[i][j]=f[i][mod(j-1,i)]+a[i][j];

    if(j==mod(k,i)) break;

    }

  • 0
    @ 2009-04-27 23:26:41

    C++的!! 第一次写这么长的程序,没有一处错误,一遍AC,虽然速度慢了点。

    我的网站正在建设:

    编译通过...

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

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

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

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

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

    ├ 测试数据 06:答案正确... 25ms

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

    ├ 测试数据 08:答案正确... 25ms

    ├ 测试数据 09:答案正确... 56ms

    ├ 测试数据 10:答案正确... 353ms

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

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

    #include

    #define MIN(x,y) (x>y)?y:x

    #define DP_N 2 //同层从最小点左右双向搜的次数

    using namespace std;

    int n,a[1001][1001],b[1001][1001],minNum,minI;

    int main(){

    int i,j,k;

    cin>>n;

    for(i=1;ia[i][j];

    b[i][j]=a[i][j];

    }

    for(i=2;i

  • 0
    @ 2009-04-27 23:01:52

    这什么破题,考语文呢?!

  • 0
    @ 2009-04-27 13:21:03

    program v1006;

    var a,f:array[1..1000,1..1001]of longint;

    n,i,j,k,minj,mi:longint;

    function min(a,b,c:longint):longint;

    begin

    min:=a;

    if min>b then min:=b;

    if min>c then min:=c;

    end;

    procedure scan;

    begin

    for j:=minj+1 to i do

    if f>f+a then f:=f+a;

    if f>f+a then f:=f+a;

    for j:=2 to minj-1 do

    if f>f+a then f:=f+a;

    for j:=minj-1 downto 1 do

    if f>f+a then f:=f+a;

    if f>f+a then f:=f+a;

    for j:=i-1 downto minj+1 do

    if f>f+a then f:=f+a;

    end;

    begin

    readln(n);

    for i:=1 to n do

    for j:=1 to i do begin

    read(a);a:=a;

    end;

    f[n,1]:=a[n,1];

    for j:=2 to n do f[n,j]:=f[n,j-1]+a[n,j];

    if f[n,n]>f[n,1]+a[n,n] then f[n,n]:=f[n,1]+a[n,n];

    for j:=n-1 downto 2 do

    if f[n,j]>f[n,j+1]+a[n,j] then f[n,j]:=f[n,j+1]+a[n,j];

    for i:=n-1 downto 1 do begin

    f:=min(f,f,f)+a;

    f:=min(f,f,f)+a;

    for j:=2 to i-1 do if ff then begin

    minj:=j;mi:=f;

    end;

    if i>1 then scan;

    end;

    writeln(f[1,1]);

    end.

  • 0
    @ 2009-04-25 19:33:45

    编译通过...

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

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

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

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

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

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

    ├ 测试数据 07:答案错误... ├ 标准行输出

     ├ 错误行输出

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

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

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

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

    Unaccepted 有效得分:90 有效耗时:0ms

    为什么啊

  • 0
    @ 2009-04-24 19:14:34

    很有语文味.....

    害我WA了一次

  • 0
    @ 2009-04-21 15:33:46

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    10

    1

    9 1

    1 1 9

    9 9 9 1

    9 9 9 1 9

    1 1 1 1 9 1

    9 9 9 9 9 1 9

    1 1 1 1 1 1 9 1

    9 9 9 9 9 9 9 1 9

    1 9 1 1 1 1 1 1 1 9

    ans:27

    这个样例很有用!

  • 0
    @ 2009-04-11 16:33:52

    扫了4遍.....

信息

ID
1006
难度
6
分类
动态规划 点击显示
标签
递交数
8992
已通过
2077
通过率
23%
被复制
26
上传者