题解

239 条题解

  • 0
    @ 2009-04-16 17:41:09

    var v:integer;

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

    n,i,j,min:integer;

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

    begin

    min:=0;

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

    f[0]:=true;

    readln(v);

    readln(n);

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

    for i:= 1 to n do

    for j:= v downto a[i] do

    if f[j-a[i]] then begin f[j]:=true; if j > min then min:=j ; end;

    writeln(v-min);

    end.

  • 0
    @ 2009-04-10 19:37:54

    编译通过...

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

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

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

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

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

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

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

    难度为2?

  • 0
    @ 2009-03-29 10:07:20

    #include

    int max(int a,int b)

    {

    if(a>b)

    return a;

    else return b;

    }

    int main()

    {

    int i,j,v,n;

    int f[30000]={0},g[100];

    scanf("%d%d",&v,&n);

    for(i=0;i

  • 0
    @ 2009-03-26 18:59:39

    编译通过...

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

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

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

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

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

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

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

    差点被气死了,这么简单的题目真是想复杂了,唉~~~~~~~~~~~

  • 0
    @ 2009-03-21 11:10:53

    编译通过...

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

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

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

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

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

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

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

    哇,好神气耶

  • 0
    @ 2009-02-21 18:20:37

    var

    n:integer;

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

    b:array[1..100] of boolean;

    min:longint;

    vv,v:integer;

    y:integer;

    procedure tryy(wu:integer);

    var i,j:integer;

    begin

    for i:=1 to n do begin

    if b[i] then begin

    if a[i]

  • 0
    @ 2009-01-30 20:32:49

    天哪,为什么CPP开不了20000*31的数组!!!

    桂尔·阿玛拉桑

    编译通过...

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

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

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

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

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

  • 0
    @ 2009-01-19 10:25:55

    注意!

    1:箱子可以装满.(虽然不写'if j>=a[i]'也可以过)

    2:数组开大一点.

    好弱的数据啊!

  • 0
    @ 2009-01-19 10:24:25

    var

    v,m,n,i,j,t:longint;

    a,b:array[0..20000]of longint;

    begin

    readln(v);

    readln(n);

    for i:=1 to n do

    readln(a[i]);

    for i:=1 to n do

    for j:=v downto 1 do

      if j-a[i]>=0

      then if b[j-a[i]]+a[i]>b[j]

         then b[j]:=b[j-a[i]]+a[i];

    for i:=1 to v do

    if b[i]>t

    then t:=b[i];

    write(v-t);

    end.

    好神奇啊!!!!!!!!!!!!!!!!!!!!

  • 0
    @ 2009-01-19 10:22:57

    var

    v,m,n,i,j,t:longint;

    a,b:array[0..20000]of longint;

    begin

    readln(v);

    readln(n);

    for i:=1 to n do

    readln(a[i]);

    for i:=1 to n do

    for j:=v downto 1 do

    if j-a[i]>=0

    then if b[j-a[i]]+a[i]>b[j]

    then b[j]:=b[j-a[i]]+a[i];

    for i:=1 to v do

    if b[i]>t

    then t:=b[i];

    write(v-t);

    end.

    好神奇啊!!!!!!!!!!!!!!!!!!!!

  • 0
    @ 2009-01-16 20:03:43

    编译通过...

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

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

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

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

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

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

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

  • 0
    @ 2009-08-26 17:05:12

    编译通过...

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

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

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

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

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

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

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

    var

    v,n,i,j:integer;

    vv:array[1..30] of integer;

    f:array[0..20000] of integer;

    begin

    readln(v);readln(n);

    for i:=1 to n do

    readln(vv[i]);

    for i:=1 to n do

    for j:=v downto vv[i] do

    if f[j-vv[i]]+vv[i]>f[j]

    then f[j]:=f[j-vv[i]]+vv[i];

    writeln(v-f[v]);

    end.

    短小的dp(01背包)

    其实重要的部分只有:

    for i:=1 to n do

    for j:=v downto vv[i] do

    if f[j-vv[i]]+vv[i]>f[j]

    then f[j]:=f[j-vv[i]]+vv[i];

  • 0
    @ 2008-12-29 13:23:16

    PROGRAM JJ;

    VAR

    V,N,I,J,C,S:INTEGER;

    A:ARRAY [1..20000] OF BOOLEAN;

    BEGIN

    ASSIGN(INPUT,'IN.IN');

    RESET(INPUT);

    ASSIGN(OUTPUT,'OUT.OUT');

    REWRITE(OUTPUT);

    READLN(V,N);

    FOR I:=1 TO N DO

    BEGIN

    READ(C);

    FOR J:=S DOWNTO 1 DO

    IF (A[J]) AND (C+JS THEN S:=J+C;

    END;

    IF (S+C

  • 0
    @ 2008-12-12 13:27:10

    编译通过...

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

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

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

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

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

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

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

    program p1133;

    const

    maxv=20000;

    maxn=30;

    var

    v,n,i,j:integer;

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

    f:array[0..maxv+1] of integer;

    begin

    readln(v);

    readln(n);

    for i:=1 to n do

    readln(a[i]);

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

    for i:=1 to n do

    for j:=v downto a[i] do

    if f[j-a[i]]+a[i]>f[j]

    then f[j]:=f[j-a[i]]+a[i];

    writeln(v-f[v]);

    end.

  • 0
    @ 2008-12-12 13:25:47

    编译通过...

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

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

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

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

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

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

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

    program p1133;

    const

    maxv=20000;

    maxn=30;

    var

    v,n,i,j:integer;

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

    f:array[0..maxv+1] of integer;

    begin

    readln(v);

    readln(n);

    for i:=1 to n do

    readln(a[i]);

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

    for i:=1 to n do

    for j:=v downto a[i] do

    if f[j-a[i]]+a[i]>f[j]

    then f[j]:=f[j-a[i]]+a[i];

    writeln(v-f[v]);

    end.

  • 0
    @ 2008-12-08 13:33:08

    program p1133;

    var

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

    v,n,i,j:integer;

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

    begin

    readln(v);

    readln(n);

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

    f[0]:=true;

    for i:=1 to n do

    for j:=v-a[i] downto 0 do

    if f[j]=true then f[j+a[i]]:=true;

    i:=v;

    while not(f[i]) do dec(i);

    writeln(v-i);

    end.

  • 0
    @ 2008-12-06 18:55:40

    因为你的rp大涨。。

  • 0
    @ 2008-11-28 23:05:19

    第一次全都是无输出。。。。发现i打成m了。。。

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

    .........01背包居然2次才AC.....

    var

    i,j,n,w:integer;

    v:array[0..30] of integer;

    f:array[0..20000] of integer;

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

    begin

    if a=v[i] then f[j]:=max(f[j-v[i]]+v[i],f[j]);

    writeln(w-f[w]);

    end.

    ....第一次j循环没有downto.......我的AC率啊~~~

  • 0
    @ 2008-11-13 17:27:22

    #include

    using namespace std;

    bool f[20005];

    int n,v1,res;

    int v[40];

    int main( )

    {

    int i,j;

    cin>>v1>>n;

    f[0]=true;

    for(i=1;i>v[i];

    for(i=1;i=v[i];j--)

    {

    if(f[j-v[i]])

    {f[j]=f[j-v[i]];

    if(j>res) res=j;}

    }

    cout

信息

ID
1133
难度
4
分类
动态规划 | 背包 点击显示
标签
递交数
10795
已通过
4484
通过率
42%
被复制
25
上传者