题解

85 条题解

  • 0
    @ 2009-11-03 21:19:06

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    1999ms!!!

    太巧了

  • 0
    @ 2009-11-03 10:56:02

    编译通过...

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

     ├ 错误行输出 impo...

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

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

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

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

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

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

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

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

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

    为什么会这样?

    program p1625;

    var n,v,c,i,j:longint;

    f:Array[0..10000] of longint;

    m,cc:longint;

    ans:longint;

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

    begin

    if a>b then exit(a);

    exit(b);

    end;

    begin

    readln(v,n,c);

    for i:=1 to n do

    begin

    readln(cc,m);

    for j:=c downto m do

    f[j]:=max(f[j],f[j-m]+cc);

    end;

    for i:=0 to c do

    if f[i]>=v then

    begin

    writeln(c-i);

    halt;

    end;

    writeln('Impossible');

    end.

  • 0
    @ 2009-11-01 16:13:57

    一维要注意内外循环

  • 0
    @ 2009-10-31 19:14:14

    没秒杀,可惜

  • 0
    @ 2009-10-27 11:13:07

    个人认为,秒杀-需要二维,不秒杀就可以一维

  • 0
    @ 2009-10-10 18:49:41
  • 0
    @ 2009-10-09 13:04:58

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

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

    很puzzled,因为我自己觉得算法是有问题的,竟然过了,虽然未能秒杀。。。。

    还有就是题目描述超级不准确,原来以为只有土堆体积正好为欠缺的体积才是合法解,后来发现只要土堆体积>=欠缺体积 就是合法解,害我WA了一次

  • 0
    @ 2009-10-06 21:17:05

    无语了,样例都没过竟然秒杀了

    编译通过...

    ├ 测试数据 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-10-06 20:05:57

    悲剧了 交了十几次才过

  • 0
    @ 2009-10-06 17:22:04

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

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

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

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

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

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

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

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

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

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

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

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

    不能秒杀啊,太不完美!

  • 0
    @ 2009-09-27 14:01:20

    const

    maxn=100;

    var

    f1,f2,w,c:array[0..maxn]of longint;

    i,j,k,l,m,n:longint;

    function min(x,y:longint):longint;

    begin

    if x>y then exit(x) else exit(y);

    end;

    begin

    readln(l,m,n);

    for i:=1 to m do readln(w[i],c[i]);

    fillchar(f1,sizeof(f1),255);

    f2:=f1;

    for i:=1 to 1 do begin

    for j:=1 to l do

    begin

    if w[i]>=j then

    begin

    if f2[j]=-1 then f1[j]:=c[i]

    else f1[j]:=min(f2[j],c[i]);

    end

    else

    begin

    if f2[j-w[i]]=-1 then f1[j]:=-1

    else begin

    if f2[j]=-1 then f1[j]:=f2[j-w[i]]+c[i];

    if f2[j]-1 then f1[j]:=min(f2[j],f2[j-w[i]]+c[i]);

    end;

    end;

    end;

    f2:=f1;

    end;

    if (f1[l]=-1)or(f1[l]>n) then writeln('Impossible')

    else writeln(n-f1[l]);

    end.

  • 0
    @ 2009-09-23 17:05:07

    求秒杀的代码

  • 0
    @ 2009-09-19 13:21:35

    var

    v,n,c,i,j,k,m:longint;

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

    begin

    readln(v,n,c);

    for i:=1 to n do

    begin

    readln(k,m);

    for j:=c downto m do

    if f[j]=v then

    begin

    writeln(c-i);

    halt;

    end;

    writeln('Impossible');

    end.

  • 0
    @ 2009-09-16 23:12:15

    一样的程序

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

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

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

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

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

    ├ 测试数据 06:运行超时|无输出...

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

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

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

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

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

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

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    做完这道题顿时想砸电脑了,看到是01背包就打记事本了,结果这个题目写的可真含糊,WA了无数次,还有V的评测机,真帅

  • 0
    @ 2009-09-15 19:46:36

    var

    v,n,c,i,j,m,k,l:longint;

    f,jv,jc:array[0..10000]of integer ;

    begin

    k:=maxint;

    readln(v,n,c);

    for i:=1 to n do begin

    readln(jv[i],jc[i]);

    m:=m+jv[i];

    if jv[i]c)) then

    begin

    writeln('Impossible');

    halt;

    end;

    if (jv[l]=v)and(jc[l]=c)

    then begin

    writeln('0');

    halt;

    end;

    for i:=1 to n do

    for j:=c downto 1 do

    if j>=jc[i] then

    if f[j]=v then begin

    writeln(c-i);

    halt;

    end;

    writeln('Impossible');

    end.

  • 0
    @ 2009-09-07 18:27:32

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    program vijos1625;

    var x,v,i,j,n,c:longint;

    f,k,m:array[0..10000]of longint;

    begin

    read(v,n,c);

    for i:=1 to n do

    read(k[i],m[i]);

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

    x:=maxlongint;

    for i:=1 to n do

    for j:=c downto 1 do

    if j>=m[i] then

    if f[j]=v then

    if (x

  • 0
    @ 2009-09-05 22:29:11

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    秒不掉..

  • 0
    @ 2009-09-04 17:54:12

    就是01背包.......

  • 0
    @ 2009-09-03 23:57:41

    严重被雷

  • 0
    @ 2009-09-03 00:11:12

    数据很弱?

    明明题中范围是10000

    写个O(n^2)的背包理论上是要超时的吧.

    为什么那么多人AC了?

    真搞不懂啊.

信息

ID
1625
难度
5
分类
动态规划 | 背包 点击显示
标签
递交数
3733
已通过
1354
通过率
36%
被复制
12
上传者