题解

237 条题解

  • 0
    @ 2009-10-31 17:53:50

    编译通过...

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

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

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

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

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

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

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

    var i,j,k,n:longint;

    a:array[0..1001] of longint;

    begin

    readln(n);

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

    for i:=1 to n do

    for j:=1 to i div 2 do

    a[i]:=a[i]+a[j];

    writeln(a[n]);

    end.

  • 0
    @ 2009-10-31 17:36:32

    DFS一次搞定

  • 0
    @ 2009-10-30 15:02:33

    同一个程序:

    第一次 80

    第二次 100

    无语中~~~~~

    太水了

  • 0
    @ 2009-10-28 10:36:22

    var

    n,i,j:integer;

    a:Array[1..1000]of longint;

    begin

    readln(n);

    a[1]:=1;

    for i:=2 to n do

    begin

    a[i]:=1;

    for j:=1 to i div 2 do

    a[i]:=a[i]+a[j];

    end;

    writeln(a[n]);

    end.

    ======简单DP=====

  • 0
    @ 2009-10-25 21:33:38

    var n,pl:longint;

    f:array[0..1010] of int64;

    function search(a:longint):int64;

    var ans,k:longint;

    begin

    if f[a]=0 then begin

    ans:=0;

    ans:=ans+1;

    for k:=(a div 2) downto 1 do

    ans:=ans+search(k);

    search:=ans;

    f[a]:=ans;exit;

    end else

    begin

    search:=f[a];

    exit;end;

    end;

    begin

    read(n);

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

    writeln(search(n));

    end.

    不说什么了......

  • 0
    @ 2009-10-21 12:56:00

    终于看懂了。

    解释一下样例吧。

    针对输入的6,有以下几种情况。

    6 1·不作任何处理:

    3 6 2·茬它的左边加上一个自然数,但该自然数不能超过原数的一半;

    2 6  3·加上数后,继续按此规则进行处理,直到不能再立生自然数为止。

    1 6

    1 3 6

    1 2 6

    共6种。

    所以,输出6

    又比如: 输入8



    8

    4 8

    3 8

    2 8

    1 8

    2 4 8

    1 4 8

    1 3 8

    1 2 8

    1 2 4 8

    共十种,所以输出10。

    这样理解题意应该没有问题。

    数据貌似比较弱,普通的DFS(深搜)就可以过了。 代码楼下的大牛们都贴了。

  • 0
    @ 2009-10-20 17:54:15

    var i,n,j:longint;

    d:array[1..1000] of longint;

    begin

    readln(n);

    for i:=1 to n do

    d[i]:=1;

    for i:=1 to n do

    for j:=1 to (i div 2) do

    inc(d[i],d[j]);

    writeln(d[n]);

    end.

  • 0
    @ 2009-10-19 21:11:59

    好奇怪的题目……

    都不知道什么意思……

    真不知道为什么有这么高的通过率……

  • 0
    @ 2009-10-08 11:58:22

    编译失败...|错误号:217

    Fatal: Compilation aborted

    An unhandled exception occurred at \(0041D996 :
    Exception : Unknown Run-Time error : 112
    \)0041D996

    \(00447E74
    \)0043B450

    \(00431A7F
    \)004AA3F2

    \(0042A5AB
    \)0040FB98

    $00401776

    囧死 记录里面给0分 上面那个错误 但本题算AC了。再交同样的,没加通过率,但显示AC…….

    记忆化搜索

  • 0
    @ 2009-10-05 19:29:51

    var i,n:longint;

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

    begin

    readln(n);

    a[1]:=1;a[2]:=2;a[3]:=2;

    for i:=4 to n do

    begin

    if odd(i) then a[i]:=a

    else a[i]:=a+a[i div 2];

    end;

    writeln(a[n]);

    end.

  • 0
    @ 2009-10-05 13:16:14

    这题啥意思- -可以加上去的方案总数?还是可以加的次数?还是啥?

  • 0
    @ 2009-09-27 13:26:57

    program a556;

    const maxn= 1000;

    var n,i,j:longint;

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

    begin

    read(n);

    for i:=1 to n do

    begin

    h[i]:=1;

    for j:=1 to i div 2 do inc(h[i],h[j]);

    end;

    writeln(h[n]);

    readln;

    readln;

    end.

  • 0
    @ 2009-09-20 18:42:34

    编译通过...

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

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

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

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

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

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

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

    program ex;

    var i,j,n:longint;

    f:array[0..1000]of longint;

    procedure doit;

    var i,j:longint;

    begin

    f[0]:=1;

    for i:=1 to n do

    begin

    for j:=0 to (i div 2) do

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

    end;

    end;

    begin

    readln(n);

    doit;

    writeln(f[n]);

    end.

    这么水

    开始我还以为搜索 结果超时。。

  • 0
    @ 2009-09-14 21:29:18

    #include

    using namespace std;

    int s=1;

    int Work(int x)

    {

    if(x/2>=1)

    {s=s+x/2;

    for(int i=1;i>n;

    Work(n);

    cout

  • 0
    @ 2009-10-15 19:58:13

    鄙视这个题目

    1.没有说明输出说明 是个数还是……

    2.没有说明是否可以重复

    哪位牛X的,将题目补充一下,让大家都AC下升升AC率……

    虽然通过率蛮高诶。

    科学研究显示:地球上80%以上是水,vijos也不例外……

  • 0
    @ 2009-09-14 14:11:36

    其实……这题可以DP的……

    d[i]表示以数字i开始,逐渐往它前面按题目要求添加数字,所能得到的方案总数。

    则有d[i]=sigma(d[j])

    其中i=2 to n并且j=1 to i/2

    边界条件:d[i]=1,i=1 to n

    最后输出d[n]即可

  • 0
    @ 2009-09-12 15:57:58

    纯模拟

    编译通过...

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

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

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

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

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

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

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

    const filename='p1130';

    var

    n,i,j:longint;

    ans:int64;

    procedure make(n:longint);

    var i:longint;

    begin

    for i:=n div 2 downto 1 do

    begin inc(ans); make(i);end;

    end;

    begin

    assign(input,filename+'.in');reset(input);

    assign(output,filename+'.out');rewrite(output);

    readln(n);

    ans:=1;

    make(n);

    writeln(ans);

    close(input);close(output);

    end.

  • 0
    @ 2009-09-09 19:50:51

    鄙视= =、

    忘记用longint

    高效代码

    program p1130;

    var s,n:longint;

    procedure try(i:longint);

    var j:longint;

    begin

    inc(s);

    for j:=1 to i div 2 do

    try(j);

    end;

    begin

    //read

    readln(n);

    s:=0;

    try(n);

    //write

    writeln(s);

    end.

  • 0
    @ 2009-09-05 16:25:11

    //比较高效的代码

    var n,i,j:longint;

    a:array[0..1200] of longint;

    begin

    readln(n);

    for i:=1 to n do

    a[i]:=1;

    for i:=2 to n do

    for j:=1 to (i div 2) do

    a[i]:=a[i]+a[j];

    writeln(a[n]);

    end.

    //若用递归当数据到1000甚至更高时,小心运算会超时

  • 0
    @ 2009-09-05 14:58:19

    编译通过...

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

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

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

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

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

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

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

    program p1130;

    var tot,q,n:longint;

    procedure work(q:longint);

    var i:longint;

    begin

    tot:=tot+1;

    for i:=1 to q div 2 do work(i);

    end;

    begin

    readln(n);

    tot:=0;

    work(n);

    writeln(tot);

    readln;

    end.

    其实这个问题并不需要把每一个数都构造出来,那样反而浪费时间,我们只需要用递归来模拟每一位上可加的数字就可以了。

信息

ID
1130
难度
2
分类
递推 点击显示
标签
递交数
7063
已通过
4163
通过率
59%
被复制
29
上传者