题解

265 条题解

  • 0
    @ 2009-08-04 23:11:46

    先对每个城堡写装箱,当满足f[i]=i时,记录结果进布尔组。把布尔组的全设为true。

    一个循环downto 0,满足全部为true的输出并结束。

    提交后我目不转睛地盯着“记录”,等着AC

    running

    No Compiled

    Accepted(闪了一瞬间)

    No Compiled

    我就纳闷了,样例都一次AC了,怎么会是No Compiled呢?

    点击进入一看:

    编译失败...|错误号:-1

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

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

    右边的Flag显示Accepted。

    无语……

  • 0
    @ 2009-08-03 10:51:27

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

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

    看来我写的比较烂啊

    程序30行

  • 0
    @ 2009-08-03 09:35:21

    同楼上的...

  • 0
    @ 2009-08-02 16:42:53

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    可怜的我把01背包写成了.....

  • 0
    @ 2009-08-01 11:41:29

    朴素DP+优化+hash=AC

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-08-01 10:53:00

    编译通过...

    ├ 测试数据 01:运行时错误...|错误号: 128

    ├ 测试数据 02:运行时错误...|错误号: 128

    ├ 测试数据 03:运行时错误...|错误号: 128

    ├ 测试数据 04:运行时错误...|错误号: 128

    ├ 测试数据 05:运行时错误...|错误号: 128

    ├ 测试数据 06:运行时错误...|错误号: 128

    ├ 测试数据 07:运行时错误...|错误号: 128

    ├ 测试数据 08:运行时错误...|错误号: 128

    ├ 测试数据 09:运行时错误...|错误号: 128

    ├ 测试数据 10:运行时错误...|错误号: 128

    这是第十次了,无奈啊!

  • 0
    @ 2009-07-31 18:16:05

    记录号 Flag 得分 记录信息 环境 评测机 程序提交时间

    R1371185 Accepted 100 From Ylen-

      P1059 FPC Vijos Dragon 2009-7-31 18:14:26

    From ycglovewxx

    积木城堡

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    随便写了01pack,效率低了,不过题目挺好的,值得一做。

  • 0
    @ 2009-07-28 19:55:18

    囧死了...01背包写成可重复背包...居然还70分...数据害人呀...

  • 0
    @ 2009-07-28 11:47:13

    我用枚举做的。把每个塔能达到的所有高度用bool变量保存,再从最大到最小搜索所有塔能达到的共同高度。

    竟然AC了。。

    编译通过...

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

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

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

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

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

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

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

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

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

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

    #include

    using namespace std;

    const int oo=2147483647;

    int n,minn=oo,sum,maxn;

    bool c_reach[101][10001];

    struct tower

    {

    int num;

    int height;

    int j[101];

    }A[101];

    void init()

    { int a;

    for(int i=1;i>a;

    if (a!=-1)

    { A[i].num++;

    A[i].height+=a;

    A[i].j[A[i].num]=a;

    }

    else break;

    }

    if (A[i].heightmaxn) maxn=A[i].height;

    }

    }

    void chuli(int nou)

    { c_reach[nou][0]=true;

    int maxns=0;

    for(int i=A[nou].num;i>=1;i--)

    {

    for(int j=maxns;j>=0;j--)

    if (c_reach[nou][j]) c_reach[nou][j+A[nou].j[i]]=1;

    maxns+=A[nou].j[i];

    }

    }

    void solve()

    { int ofn=0;

    int nul=0;

    for(int i=1;i=1;j--)

    { ofn=0;

    for(int i=1;i

  • 0
    @ 2009-07-27 15:09:22

    我两次提交一样的程序,看看差距有多大:

    编译通过...

    ├ 测试数据 01:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 02:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 03:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 04:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 05:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 06:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 07:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 08:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 09:运行时错误...| 错误号: 202 | 堆栈溢出错

    ├ 测试数据 10:运行时错误...| 错误号: 202 | 堆栈溢出错

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

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

    编译通过...

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-07-26 18:16:34

    就一个提醒:数组别只开10000,至少开到15000

    被害惨了!

    别太相信数据范围。

  • 0
    @ 2009-07-25 15:37:59

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    没赶上puppy,慢了点

    首先找最低的积木高度MIN(再高不能高过它吧)

    其次把每组积木能达到的高度用布尔数组存起来(动态规划之背包)

    然后从MIN→0去看,如果每组积木都达到此高度,就打印。。。

  • 0
    @ 2009-07-24 14:10:30

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var i,j,k,l,m,n,max,max0:integer;

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

    b:array[0..15000] of integer;

    begin

    readln(n);

    fillchar(b,sizeof(b),0);

    for i:=1 to n do

    begin

    j:=0;m:=0;

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

    f[0]:=true;

    max0:=0;

    read(m);

    while m-1 do

    begin

    max0:=max0+m;

    for j:=max0 downto 0 do

    if (f[j])and(f[j+m]=false)then

    begin

    f[j+m]:=true;

    b[j+m]:=b[j+m]+1;

    end;

    read(m);

    end;

    if max0>max then max:=max0;

    end;

    for i:=max downto 1 do

    if b[i]=n then

    begin

    writeln(i);

    halt;

    end;

    writeln(0);

    end.

    为什么我把第一个read(m)放到while里时候就过不了呢。。。

    我弱弱的说。。。

  • 0
    @ 2009-07-24 10:36:52

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    program li;

    var i,j,k,n,x,high,max,l:longint;

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

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

    begin

    readln(n);

    f[0]:=true;

    for k:=1 to n do

    begin

    read(x);

    while (x-1) do

    begin

    inc(high,x);

    for i:=high downto 0 do

    if not(f) and (f[i]) then

    begin

    f[x+i]:=true;

    inc(a[x+i]);

    end;

    read(x);

    end;

    if max

  • 0
    @ 2009-07-23 21:51:32

    http://www.vijos.cn/Record_Show.asp?id=1345135

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    我怎么这么慢??????????

    我是先01背包,然后把所有城堡and在一起,再扫描一遍找最大可行解。

    请问9ms的程序是怎么样的?

    难道这蜗牛速度和我用了结构体(记录)有关系?

    不过我是一次AC的,庆祝一下。

  • 0
    @ 2009-07-15 18:39:56

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    可算AC了==

  • 0
    @ 2009-07-14 10:21:34

    哪个拧写的数据范围......

    拉出去打....

    同志门,数组开大点

  • 0
    @ 2009-07-12 15:01:14

    var a,b,c:array[1..10000]of longint;

    n,i,k,x,ii,j:longint;

    begin

    read(n);

    for i:=1 to n do

    begin

    read(x);

    k:=0;

    fillchar(b,sizeof(b),0);

    fillchar(c,sizeof(c),0);

    while x-1 do

    begin

    j:=k;

    for ii:=1 to j do

    begin

    if c[x+b[ii]]=0 then begin k:=k+1;b[k]:=x+b[ii];inc(c[b[k]]);inc(a[b[k]]); end;

    end;

    if c[x]=0 then begin k:=k+1;b[k]:=x;inc(a[x]);inc(c[x]);end;

    read(x);

    end;

    end;

    for i:=10000 downto 1 do

    if a[i]=n then begin write(i);exit;end;

    end.

    后面几个有点慢……

    108m/s

    01背包怎么弄 啊……

    我是小菜的说.....

  • 0
    @ 2009-07-10 09:02:17

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

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

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

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

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

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

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

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

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

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

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

    爽!!!!!

  • 0
    @ 2009-07-08 15:52:25

    很简单的01背包,我写了不下20min,检查不下40min,四次,AC...

    不能只怪RP,这次犯的错有些还是有意义的。在比赛之前犯完一切错误!!!

    1.文件 ERROR106 我readln(n) 后就close(input) 了,之后就有文件打不开的问题

    2.i 这个题我写了两个循环,都用了i, VIOJS编译时就显现错误了,我的FP没这功能,用了几min检查出来

    3.改完2之后,for j:=1 to maxn do f[i]:=true; 后面的没改完,又挂了一次

    4.常数问题 先开的是maxn=10 方便debug,结果过了一个点(输出的全是0)

    再交,直接开到100001,又超时4个点 开到10001 ,过了

    注意细节,注意AC率,提高速度! 写题着急的后果是,写的很慢。

信息

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