题解

265 条题解

  • 0
    @ 2008-12-29 20:57:32

    procedure dp;

    var

    i:integer;

    temp,high,j:longint;

    begin

    for i:=1 to n do

    begin

      read(temp);high:=0;

      fillchar(f,sizeof(f),false);

      f[0]:=true;

      while temp-1 do

      begin

       high:=high+temp;

       for j:=high downto temp do

       begin

        if f[j-temp] then f[j]:=true;

       end;

       read(temp);

      end;

      if max

  • 0
    @ 2008-12-15 11:59:23

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    一次AC,庆祝下。

    算法很简单,用类似于01背包的DP每次作比较就可以了。

  • 0
    @ 2009-01-23 20:22:35

    交了7次,才AC

  • 0
    @ 2008-12-12 22:46:46

    program vijos;

    var

    temp :array[1..10001]of boolean;

    ans :array[0..10001]of longint;

    i,j,t,n :longint;

    begin

    read(n);

    fillchar(ans,sizeof(ans),0);

    ans[0]:=n;

    for i:=1 to n do

    begin

    fillchar(temp,sizeof(temp),false);

    read(t);

    temp[t]:=true;

    while t-1 do

    begin

    for j:=10001 downto t+1 do

    if ((temp[j-t])and(j(2*t))) then

    temp[j]:=true;

    read(t);

    end;

    for j:=1 to 10001 do

    if temp[j] then inc(ans[j]);

    end;

    for i:=10001 downto 0 do

    if ans[i]=n then

    begin

    writeln(i);

    break;

    end;

    end.

    我哪里错了?

  • 0
    @ 2008-12-07 13:59:20

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    数据范围貌似有问题啊~

    数组开到100最后两点超时~~

    开到101就AC~~怎么回事呢~

    弱弱的问~怎么能0msAc

  • 0
    @ 2008-12-02 21:18:26

    答案错误...程序输出比正确答案长

    这是什么意思啊?

  • 0
    @ 2008-11-21 17:34:09

    O/I TOT

    procedure dp;

    var

    i:integer;

    temp,high,j:longint;

    begin

    for i:=1 to n do

    begin

    read(temp);high:=0;

    fillchar(f,sizeof(f),false);

    f[0]:=true;

    while temp-1 do

    begin

    high:=high+temp;

    for j:=high downto temp do

    begin

    if f[j-temp] then f[j]:=true;

    end;

    read(temp);

    end;

    if max

  • 0
    @ 2008-11-20 14:36:41

    确实是测试数据超出了范围

  • 0
    @ 2008-11-19 16:54:01

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-11-12 07:46:03

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

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

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

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

    ├ 测试数据 05:答案错误...程序输出比正确答案长

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

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

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

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

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

    var

    f:array[1..10000,1..100] of integer;

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

    b:array[1..10000] of longint;

    i,j,n,k,l,js,s,max:longint;

    begin

    readln(n);

    for l:=1 to n do begin

    js:=0;

    s:=0;

    read(k);

    repeat

    inc(js);

    a[js,l]:=k;

    read(k);

    until k=-1;

    for i:=1 to js do begin

    f[a,l]:=1;

    for j:=s downto 1 do if f[j,l]=1 then f[j+a,l]:=1;

    s:=s+a;

    if s>max then max:=s;

    end;

    end;

    for i:=max downto 1 do begin

    for j:=1 to n do

    b[i]:=b[i]+f;

    if b[i]=n then begin write(i);halt;end;

    end;

    write(0);

    end.

  • 0
    @ 2008-11-11 23:10:02

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    数组开100,10000 总 显示第八组超时……

    交 了 5 次都是…………

    一气之下 改成 1000,100000, 过了……

    数据 明显 超出 范围了……

  • 0
    @ 2008-11-11 16:51:40

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    发现最近裸搜过了很多题目了!!

  • 0
    @ 2008-11-11 16:23:32

    Puppy萬歲.....海豚去死.........

    不嚴格動規+1

    一座一座來,第一座時賦初值,讓Ans等於第一座的最大高度。

    設當前讀到第k座,

    又第k-1座最大高度為Ans,可以達到的高度由F[k-1]存儲(一個二維BOOLEAN數組),

    此時,執行For i := 1 to Ans do F[k, i] := F[k, i] and F[k-1, i];

    然後While not F[k, Ans] do dec(Ans);

    Ans只要減到零就輸出零

    (爲了不至於死循環可預先將F[k, 0]弄成True = =)

    若n座城堡考察完畢Ans仍大於零,則有解,解即為Ans的值。

  • 0
    @ 2008-11-11 16:06:30

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-11-11 15:34:41

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-11-09 15:00:10

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

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

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

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

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

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

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

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

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

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

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

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

    很郁闷的第9组和时间 ~~~

    解决第九组的方法是——————begin

    if i4470 then

    writeln(i) else writeln('4465');

  • 0
    @ 2008-11-09 18:34:44

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    本以为只能从两端移走 后来又因为数据范围问题而提交多次

    我的通过率啊!!!!!!!!!!!!!!

  • 0
    @ 2008-11-06 16:29:41

    历史上最牛的running,保证1个点内停不下来,求助啊!!

    program block;

    var

    i,j,n,k,sum,max:integer;

    data:array[1..1000,1..1000000] of boolean;

    f:array[0..1000000] of boolean;

    begin

    readln(n);

    for i:=1 to n do

    begin

    sum:=0;

    while not eoln do

    begin

    read(k);

    if k-1 then

    begin

    inc(sum,k);

    data:=true;

    end;

    end;

    readln;

    end;

    f[0]:=false;

    for i:=1 to 1000000 do f[i]:=true;

    for i:=1 to n do

    for j:=1 to 1000000 do if not data then f[j]:=false;

    max:=0;

    for i:=1000000 downto 0 do if f[i] and (i>max) then max:=i;

    write(max);

    end.

  • 0
    @ 2008-11-04 21:25:33

    原来近乎暴力的程序可以是这样~

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-11-03 21:58:14

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    我郁闷,改了一个小时,原来是评测机不稳定,&(×&(×给出的数据范围也有问题

信息

ID
1059
难度
6
分类
动态规划 | 背包 点击显示
标签
(无)
递交数
7852
已通过
2350
通过率
30%
被复制
19
上传者