/ Vijos / 题库 / 采药 /

题解

303 条题解

  • 0
    @ 2008-10-08 05:57:24

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    当年noip我背标程,结果搞反两个变量,悔恨啊。

  • 0
    @ 2008-10-04 21:47:39

    0-1背包问题……

    好囧readln(w[i],v[i])过不去,得用read。害得我白白浪费了两次提交……

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var

    w,v:array[0..100]of longint;

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

    n,m,i,j,ans:longint;

    function max(a,b:longint):longint;

    begin

    if a>b then exit(a) else exit(b);

    end;

    begin

    readln(m,n);

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

    for i:=1 to n do

    for j:=m downto w[i] do

    f[j]:=max(f[j-w[i]]+v[i],f[j]);

    writeln(f[m]);

    end.

  • 0
    @ 2008-10-04 21:14:48

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    噢~~~1☆纪念

  • 0
    @ 2009-07-06 20:36:50

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    背包,一眼望去就知道

  • 0
    @ 2008-09-27 21:03:56

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

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

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

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

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

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

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

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

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

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

    对于刚开始为什么出问题 很无奈....

    终于AC了!

    oh,YES!

  • 0
    @ 2008-09-25 22:58:07

    终于A了。。。

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

    for i:=1 to m do begin

    readln(a,b);

    for j:=t-a downto 0 do if (w[j]+b)>w[j+a] then w[j+a]:=w[j]+b;

    end;

    只是背包我一向用背的,没理解到的说。。。

  • 0
    @ 2008-09-25 21:52:28

    练习一维背包中`\`

  • 0
    @ 2008-09-22 12:27:50

    program p1104;

    var t,m,i,j,a,b:integer;

    w:array[0..1000] of integer;

    begin

    readln(t,m);

    fillchar(w,sizeof(w),0);

    for i:=1 to m do begin

    readln(a,b);

    for j:=t-a downto 0 do if (w[j]+b)>w[j+a] then w[j+a]:=w[j]+b;

    end;

    writeln(w[t]);

    end.

  • 0
    @ 2008-09-22 09:21:11

    无聊的0/1背包 别说DP了 我刚看见这题时候DFS搞定的

    Program Medic;

    Const

    Maxt = 1001;

    Maxm = 101;

    Type

    GArr = Record

    t, v: Longint;

    End;

    Var

    G: Array [0..Maxm] Of GArr;

    Opt: Array [0..Maxm,0..Maxt] Of Longint;

    i, j, t, m, Ans :Longint;

    Function Max (a, b: Longint): Longint;

    Begin

    If a > b Then Max := a Else Max := b;

    End;

    Procedure Find(i, j: Longint);

    Begin

    If (i = 0) Or (j = 0) Then Begin

    Opt[i, j] := 0;

    Exit;

    End;

    If j < G[i].t Then Begin

    If Opt[i - 1, j] = -1 Then Find(i - 1, j);

    Opt[i, j] := Opt[i - 1, j];

    End Else Begin

    If Opt[i - 1, j - G[i].t] = -1 Then Find(i - 1, j - G[i].t);

    If Opt[i - 1, j] = -1 Then Find(i - 1, j);

    Opt[i, j] := Max(Opt[i - 1, j - G[i].t] + G[i].v, Opt[i - 1, j]);

    End;

    End;

    Begin

    FillChar(G, SizeOf(G), 0);

    FillChar(Opt, SizeOf(Opt), 255);

    ReadLn(t, m);

    For i:= 1 To m Do ReadLn(G[i].t, G[i].v);

    Find(m, t);

    Ans := Opt[m, t];

    Write(Ans);

    End.

  • 0
    @ 2008-09-18 13:01:31



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

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

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

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

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

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

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

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

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

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

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

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

    FP里面根本就解不出来,

    丢上来这样。

  • 0
    @ 2008-09-14 21:25:52

    变态,居然超时~

  • 0
    @ 2008-10-20 21:15:44

    好难啊!

  • 0
    @ 2008-09-09 16:55:09

    program p1104;

    var n,t,i,j,x,y:longint;

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

    begin

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

    readln(t,n);

    for i:=1 to n do

    begin

    read(x,y);

    for j:=t downto x do

    if v[j-x]+y>v[j] then v[j]:=v[j-x]+y;

    end;

    writeln(v[t]);

    end.

    可怜啊~~输入READ多了个LN就挂了两次~~

  • 0
    @ 2008-09-06 14:56:40

    program p_1;

    var x:array[0..1000] of longint;

    i,j,t,n,t1,v:longint;

    begin

    readln(t,n);

    for i:=1 to n do

    begin

    readln(t1,v);

    if t1x[j] then x[j]:=x[j-t1]+v;

    end;

    write(x[t]);

    end.

    学的某牛

    好崇拜

  • 0
    @ 2008-09-05 12:42:35

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    一颗星纪念

  • 0
    @ 2008-09-03 19:33:09

    program ads;

    var

    v,p:array[1..1000]of integer;

    a:array[0..100,0..1000]of integer;

    i,j,m,t:integer;

    begin

    read(t,m);

    for i:=1 to m do

    readln(v[i],p[i]);

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

    for i:=1 to m do

    for j:=1 to t do

    begin

    if j>=v[i] then

    begin

    if (a+p[i])>a then

    a:=a+p[i]

    else a:=a

    end

    else a:=a;

    end;

    writeln(a[m,t]);

    end.

  • 0
    @ 2008-09-01 09:03:41

    太简单了吧,,,。

    郁闷,,

    最弱智的DP···

  • 0
    @ 2008-08-31 12:53:45

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    i和j写反了,交了N遍

  • 0
    @ 2008-08-27 17:56:06

    正的是完全背包的做法,倒着是01背包的做法……

    意义、作用不同。。

    去看《背包九讲》吧。

  • 0
    @ 2008-08-27 17:22:00

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

信息

ID
1104
难度
4
分类
动态规划 | 背包 点击显示
标签
递交数
16859
已通过
6541
通过率
39%
被复制
39
上传者