题解

95 条题解

  • 0
    @ 2009-10-27 13:06:37

    -_-||有时候,一个小小的等号能耗掉你一上午....囧!

  • 0
    @ 2009-10-13 12:19:00

    感谢1s的题解!

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

    编译通过...

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

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

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

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

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

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

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

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

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

    var m,i,j,g,k,v,n,all:longint;a,b:array[0..202]of longint;

    f:array[0..5000,0..40]of longint;

    z1,z2,c1,c2,c3:longint;

    t1,t2:array[0..40]of longint;

    begin

    readln(k,v,n);

    for i:=1 to n do readln(a[i],b[i]);

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

    f[0,0]:=1;

    for i:=1 to n do

    begin

    for j:=v downto a[i] do

    begin

    if f[j-a[i],0]0 then

    begin

    c1:=f[j,0];c2:=f[j-a[i],0];

    c3:=c1+c2;

    if c3>k then c3:=k;

    t1:=f[j];t2:=f[j-a[i]];

    for g:=1 to c3 do

    begin

    t2[g]:=t2[g]+b[i];

    end;

    z1:=1;z2:=1;

    for g:=1 to c3 do

    begin

    if (t1[z1]>t2[z2])or (z2>c2) then

    begin

    f[j,g]:=t1[z1];

    inc(z1);

    end

    else

    begin

    f[j,g]:=t2[z2];

    inc(z2);

    end;

    end;

    f[j,0]:=c3;

    end;

    end;

    end;

    all:=0;

    for i:=1 to k do

    begin

    all:=all+f[v,i];

    end;

    writeln(all);

    end.

  • 0
    @ 2009-10-03 16:29:01

    编译通过...

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

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

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

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

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

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

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

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

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

    时间不好看

  • 0
    @ 2009-10-01 23:16:37

    From 飞过海

    多人背包 DD的冒险 系列

    编译通过...

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

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

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

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

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

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

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

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

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

    快排过不了,一定要插排 或 冒泡排序!

    for i:=sum[j] downto 2 do //insert sort

    if answer[j,i]>answer[j,i-1] then

    begin

    temp:=answer[j,i];

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

    answer[j,i-1]:=temp;

    end else break;

  • 0
    @ 2009-08-31 19:59:07

    一点优化都没有

    编译通过...

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-08-30 22:09:34

    编译通过...

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

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

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

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

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

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

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

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

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

    orz

  • 0
    @ 2009-08-26 15:02:51

    裸过去了.....

    不过 真的算好题 赞个

  • 0
    @ 2009-08-24 14:41:12

    编译通过...

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

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

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

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

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

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

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

    216 的朋友注意,数组有没有越界。

    一维背包+K个状态

  • 0
    @ 2009-08-23 20:29:55

    到底怎么做才可以让背包刚好用完啊??????????????????????????????

    跪求大牛指教

  • 0
    @ 2009-08-12 10:47:10

    背包九讲里有....

    最好优化一下....

  • 0
    @ 2009-08-10 15:15:23

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

  • 0
    @ 2009-08-07 13:36:21

    tle O(n*v*k)

    Why!!??!!??!

  • 0
    @ 2009-08-07 09:48:49

    编译通过...

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

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

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

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

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

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

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

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

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

    ORZ.......

    队列真强大

  • 0
    @ 2009-05-26 17:26:27

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

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

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

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

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

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

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

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

    wo chao dui le

  • 0
    @ 2009-05-26 09:56:12

    求一个01背包的前k优解,注意背包要放满。

    还有这题要降维,不然会内存溢出(Vijos连50MB的空间也不给用啊……)

  • 0
    @ 2009-05-14 15:32:22

    编译通过...

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

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

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

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

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

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

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

  • 0
    @ 2009-03-28 19:47:28

    类似于 冒泡排序

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

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

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

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

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

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

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

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

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

    贴一段

    void kpackage(int v,int i)

    {

    for(int j=1;f[v-a[i].v][j]!=-1&&jf[v][K];j++)

    {

    f[v][K]=f[v-a[i].v][j]+a[i].c;

    for(int k=K-1;k>=1;k--) //冒泡

    {

    if(f[v][k]

  • 0
    @ 2009-03-21 21:43:44

    核心代码,事实证明:水题虽然简单,但请不要直接到网上下载代码,因为很多都是错的

    procedure insert(num,j:longint);

    var t,temp:longint;

    begin

    g[j]:=true;

    inc(sum[j]);

    opt[j,sum[j]]:=num;

    for t:=sum[j] downto 2 do

    if opt[j,t]>opt[j,t-1] then

    begin

    temp:=opt[j,t];

    opt[j,t]:=opt[j,t-1];

    opt[j,t-1]:=temp;

    end

    else

    if opt[j,t]k then dec(sum[j]);

    end;

  • 0
    @ 2009-03-18 17:32:58

    编译通过...

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

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

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

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

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

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

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

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

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

    少打一句BREAK!!!

  • 0
    @ 2009-03-11 20:38:40

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

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

    用 write 会: 输出比正确答案长…… Why???

信息

ID
1412
难度
6
分类
动态规划 | 背包 点击显示
标签
(无)
递交数
1940
已通过
596
通过率
31%
被复制
3
上传者