题解

244 条题解

  • 0
    @ 2008-09-11 19:24:39

    var

    n:integer;

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

    f:array[0..1000,-2000..2000] of integer;

    rst:integer;

    procedure init;

    var

    i:integer;

    begin

    read(n);

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

    fillchar(f,sizeof(f),255);

    f[0,0]:=0;

    end;

    procedure doit;

    var

    i,j,k:integer;

    t,m:integer;

    begin

    for i:=0 to n-1 do

    for j:=0 to 2000 do begin

    if f=-1 then continue;

    if f

  • 0
    @ 2008-09-09 21:48:18

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    program p1037;

    var

    a:array[1..100] of longint;

    f:array[1..100,0..2000] of longint;

    n,sum:longint;

    procedure init;

    var

    i:longint;

    begin

    sum:=0;

    readln(n);

    for i:=1 to n do begin

    read(a[i]);

    inc(sum,a[i]);

    end;

    end;

    procedure print;

    begin

    if f[n,0]>0 then writeln(f[n,0])

    else writeln('Impossible');

    end;

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

    begin

    max:=a; if max

  • 0
    @ 2008-09-02 19:46:36

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    终于,终于,,终于!~研究了我这么久!

    原来递归方程错了!!

    if j

  • 0
    @ 2008-09-01 14:30:17

    编译通过...

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

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

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

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

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

     ├ 错误行输出

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

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

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

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

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

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

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

    为什么

  • 0
  • 0
    @ 2008-08-26 10:42:54

    终于,知道了用f表示前I个水晶可以搭成差为J的矮塔高度,就好做了

  • 0
    @ 2008-08-25 19:55:42

    编译通过...

    ├ 测试数据 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-08-21 19:51:13

    最简单的动态转移#24....肯定简单

    AC= =~

    转化以下就成了普通的背包

    貌似有点漏洞

    哪只大牛举个反的例子0。0

    只限本题AC~ (*^_^*)

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

    c:array[0..2001]of boolean;

    b:array[0..2001]of set of 0..101;

    i,j,max,n:longint;

    procedure kuai(l,r:longint);{快排- -~不看也行}

    var i,j,k:integer;

    x,y:longint;

    begin

    i:=l;j:=r; x:=a[(l+r)shr 1];

    repeat

    while a[i]x do dec(j);

    if ij;

    if l

  • 0
    @ 2008-07-29 09:52:49

    f[i][j]=max{f[j],f[j+a[i]]+a[i],f[j-a[i]],f[a[i]-j]+j}

    好像有问题

    最后一部份是不是应该是f[a[i]-j]+a[i]-j

  • 0
    @ 2008-01-02 21:26:46

    搞错搞错,不好意思,新手上路。

  • 0
    @ 2007-11-24 17:27:45

    感谢begginer同学

  • 0
    @ 2007-11-13 18:11:43

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

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

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

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

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

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

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

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

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

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

    简单!

  • 0
    @ 2007-11-13 08:16:12

    在这里崇拜一下楼下的楼下的大牛!~

  • 0
    @ 2007-11-08 16:19:41

    ..............

  • 0
    @ 2007-11-08 10:20:26

    超时了,由此可见‘这个号是假的’的方法虽说思路简洁,但是不好使

  • 0
    @ 2007-11-04 01:27:53

    最近好多的动规都错在了没有防止后效性

    看来阶段的选择和状态转移的实现还要下一些功夫

  • 0
    @ 2007-11-03 15:59:15

    可以有高度一样的水晶么?

    应该不能有同样高度的水晶吧?

  • 0
    @ 2007-11-02 14:10:34

    LS的LS的LS的LS的LS的程序有问题!

    虽然可以通过本题的全部测试数据,但我找出了一个很简单的反例

    4

    1 2 3 3

    显而易见,答案是3。可是程序只会输出4

    可见本题数据还是很弱的~

  • 0
    @ 2007-11-02 11:44:49

    赞Jason911!

    Jason911太大牛了~~

  • 0
    @ 2007-10-30 21:34:07

    f[n,m] = max(f[n-1,m+h[i]](+A塔),f[n-1,m-h[i]]+h[i](+B塔),f[n-1,h[i]-m]+m(+B塔),f[n-1,m](不加))

    假设A塔比B塔高

    f[n,m]代表加了n块水晶,高度差为m低塔所能取得的最大高度

    O(nmk)

信息

ID
1037
难度
6
分类
动态规划 | 背包 点击显示
标签
(无)
递交数
10570
已通过
2750
通过率
26%
被复制
16
上传者