题解

265 条题解

  • 0
    @ 2009-09-06 16:24:33

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    100个背包

  • 0
    @ 2009-08-28 09:39:16

    var

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

    b:array[0..10000]of boolean;

    n,x:integer;

    i,s:integer;

    max,an:integer;

    begin

    readln(n);

    b[0]:=true;

    for i:=1 to n do

    begin

    max:=0;

    read(x);

    while x-1 do

    begin

    inc(max,x);

    for s:=max downto x do

    if band(not b) then

    begin

    b:=true;

    a:=a+1;

    end;

    read(x);

    end;

    readln;

    for s:=1 to max do b:=false;

    end;

    an:=0;

    for s:=1 to max do

    if a=n then an:=s;

    writeln(an);

    end.

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-08-23 08:48:08

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    program ex;

    var i,j,n,max:longint;

    flag:array[0..100000]of boolean;

    g:array[0..100000]of longint;

    procedure dp;

    var i,j,x,h:longint;

    begin

    readln(n);

    for i:=1 to n do

    begin

    read(x);

    h:=0;

    fillchar(flag,sizeof(flag),false);

    flag[0]:=true;

    while (x-1) do

    begin

    inc(h,x);

    for j:=h downto 0 do

    if flag[j] and not flag[j+x] then

    begin

    flag[j+x]:=true;

    inc(g[j+x]);

    end;

    read(x);

    end;

    if h>max then max:=h;

    readln;

    end;

    end;

    procedure print;

    var i,j:longint;

    begin

    for i:=max downto 0 do

    if g[i]=n then

    begin

    writeln(i);

    halt;

    end;

    writeln(0);

    end;

    begin

    dp;

    print;

    end.

  • 0
    @ 2009-08-22 20:49:11

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    他喵的 无语了

  • 0
    @ 2009-08-16 11:24:52

    本人实在是罪过,该水题的通过率一下子被我降了这么多,给没做过的朋友造成无谓的心理负担,贴个程序忏悔下!!!!

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    program p1059;

    var i,j,n,m,top,max:integer;

    a:array[0..11111] of integer;

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

    begin

    max:=0;

    readln(n);

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

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

    f[0]:=true;

    for i:=1 to n do

    begin

    top:=0;

    read(m);

    while m -1 do

    begin

    inc(top,m);

    for j:=top downto m do

    if (f[j-m]) and (not(f[j])) then

    begin

    inc(a[j]);

    f[j]:=true;

    end;

    read(m);

    end;

    if top>max then max:=top;

    for j:=1 to top do

    f[j]:=false;

    end;

    for i:=max downto 1 do

    begin

    if a[i]=n then

    begin

    write(i);halt;

    end;

    end;

    write('0');

    end.

  • 0
    @ 2009-08-15 11:03:27

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    第一次写成重复背包了……wa了一次 囧囧囧囧囧囧囧囧囧囧

    var

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

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

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

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

    begin

    readln(n);

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

    for i:=1 to n do

    begin

    j:=1; max:=0;

    read(v[j]);

    while v[j]-1 do

    begin

    max:=max+v[j];

    inc(j);

    read(v[j]);

    end;

    dec(j);

    fillchar(h,sizeof(h),0);

    h[0]:=1;

    for k:=1 to j do

    for l:=max downto v[k] do

    if h[l-v[k]]=1 then h[l]:=1;

    for k:=0 to max do ans[k]:=ans[k]+h[k];

    end;

    for i:=10000 downto 0 do if ans[i]=n then

    begin

    k:=i;

    break;

    end;

    writeln(k);

    end.

  • 0
    @ 2009-08-15 10:49:33

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var

    f:array[-1..100,0..10000]of boolean;

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

    t,v:array[1..100]of integer;

    n,m,i,j,k,l,p,max:integer;

    begin

    readln(n);

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

    for i:=1 to n do

    begin

    l:=0;

    read(m);

    while m-1 do

    begin

    inc(l);

    inc(t[i],m);

    a:=m;

    read(m);

    end;

    v[i]:=l;

    readln;

    end;

    for k:=1 to n do

    begin

    f[k,0]:=true;

    for i:=1 to v[k] do

    for j:=t[k] downto a[k,i] do

    f[k,j]:=f[k,j-a[k,i]] or f[k,j];

    end;

    for i:=1 to t[1] do

    begin

    p:=0;

    for k:=1 to n do

    if f[k,i] then inc(p);

    if p=n then max:=i;

    end;

    writeln(max);

    end.

  • 0
    @ 2009-08-15 09:51:39

    各位哥哥姐姐 帮帮忙咯

  • 0
    @ 2009-08-15 09:34:54

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var

    wood_no,total_no:array[0..1000]of longint;

    g:array[0..500,0..500]of longint;

    f:array[0..101,0..10000]of boolean;

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

    begin

    assign(input,'a.in');reset(input);

    readln(n);

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

    min:=maxlongint;

    for i:=1 to n do

    begin

    l:=0;

    read(m);

    while m-1 do

    begin

    inc(l);

    inc(total_no[i],m);

    g:=m;

    read(m);

    end;

    wood_no[i]:=l;

    readln;

    end;

    for k:=1 to n do

    begin

    f[k,0]:=true;

    for i:=1 to wood_no[k] do

    for j:=total_no[k]downto g[k,i] do

    f[k,j]:=f[k,j] or f[k,j-g[k,i]];

    if min>total_no[k] then

    min:=total_no[k];

    end;

    for i:=1 to total_no[1] do

    begin

    l:=0;

    for k:=1 to n do

    if f[k,i] then

    inc(l);

    if l=n then

    max:=i

    end;

    writeln(max);

    end.

    真的,是小骆写出来的

  • 0
    @ 2009-08-14 10:35:31

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-08-13 20:40:43

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    不知道怎么用01背包求积木高,就用最原始的方法搜索。。。这样也能ac。。本来都已经做好了超时的准备了的。。。只能说puppy跑得这的很快,还有我的rp真的不赖

  • 0
    @ 2009-08-13 18:02:19

    编译通过...

    ├ 测试数据 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-08-12 14:39:43

    各位大哥大姐……

    const

    maxn=10000;

    maxk=100;

    var

    g:array[1..maxn] of longint;

    i,j,k,t,h,n,x,maxh:longint;

    B:BOOLEAN;

    begin

    readln(n);

    for k:=1 to n do

    begin

    read(x);

    h:=0;

    while x-1 do

    begin

    inc(h,x);

    inc(g[h]);

    read(x);

    end;

    if h>maxh then maxh:=h;

    end;

    B:=FALSE;

    for i:=maxn downto 1 do

    if g[i]=n then

    begin

    writeln(i);B:=TRUE;

    BREAK;

    end;

    IF NOT B THEN writeln(0);

    end.

    惨不忍睹啊......

    编译通过...

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

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

     ├ 错误行输出

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

     ├ 错误行输出

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

     ├ 错误行输出

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

     ├ 错误行输出

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

     ├ 错误行输出

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

     ├ 错误行输出

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

    ├ 测试数据 09:答案错误...

     ├ Hint: 极限数据 ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 10:答案错误...

     ├ Hint: 极限数据 ├ 标准行输出

     ├ 错误行输出

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

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

    我的这种简单的方法有什么不足呢??

  • 0
    @ 2009-08-11 17:54:55

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

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

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

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

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

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

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

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

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

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

    太失败了

  • 0
    @ 2009-08-11 07:40:29

    编译通过...

    ├ 测试数据 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-08-10 14:01:29

    #define MaxN 101

    #define MaxL 2001

    #include

    int W[MaxN][MaxL],

    L[MaxN][MaxL], N;

    int main()

    {

    int i, j, K, Sum, MaxSum, Flag, Ans;

    scanf("%d", &N);

    MaxSum=-1;

    for(i=1; iMaxSum) MaxSum=Sum;

    break;

    }

    }

    }

    for(i=1; i

  • 0
    @ 2009-08-07 21:57:44

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    哈哈……^_^ 我最快——爱Puppy!

  • 0
    @ 2009-08-07 16:34:01

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

    拿dp还这么慢……用枚举的大牛不知比我快多少……膜拜

  • 0
    @ 2009-08-06 15:51:05

    周哥晒晒题解,哈哈哈哈哈哈,忽忽忽忽,西西西西西西

    var

    i,j,k,zhou,n,x,gaodu,max,l,t:longint;

    f:array[-10..10000]of boolean;

    a:array[-10..10000]of integer;

    begin

    readln(n);

    f[0]:=true;

    for zhou:=1 to n do

    begin

    read(x);

    while (x-1) do

    begin

    gaodu:=gaodu+x;

    for i:=gaodu downto 0 do

    if (f=false) and (f[i]=true)

    then

    begin

    f[x+i]:=true;

    a[x+i]:=a[x+i]+1;

    end;

    read(x);

    end;

    if max

信息

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