207 条题解

  • 0
    @ 2009-07-14 21:19:44

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    第一次写记搜就AC。

    var

    n,i,t:longint;

    f:array[0..50,0..50] of longint;

    procedure try(x,y:longint);

    begin

    if f[x,y]0

    then begin

    t:=t+f[x,y];

    exit;

    end;

    if (x=0) and (y=0)

    then begin

    t:=t+1;

    exit;

    end;

    if x>0

    then begin

    try(x-1,y+1);

    f[x,y]:=f[x,y]+f[x-1,y+1];

    end;

    if y>0

    then begin

    try(x,y-1);

    f[x,y]:=f[x,y]+f[x,y-1];

    end;

    end;

    begin

    readln(n);

    for i:=0 to n do

    f[0,i]:=1;

    try(n,0);

    writeln(t);

    end.

  • 0
    @ 2009-07-10 17:19:11

    var

    i,j,n:longint;

    a:array[1..30,1..30] of qword;

    begin

    readln(n);

    for i:=1 to 2*n do

    a:=i;

    for i:=2 to 2*n do

    for j:=2 to i do

    a:=a+a;

    writeln(a[2*n,n] div (n+1));

    end.

    用卡特兰数写的

  • 0
    @ 2009-07-03 12:22:45

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    小弟不才,看了大牛们的方法,照葫芦画瓢写了个搜索,AC的感觉真好~呵呵

  • 0
    @ 2009-06-26 23:25:17

    使用卡特兰数:

    卡特兰数(引用)

    令h(1)=1,catalan数满足递归式:

      h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)

      另类递归式:

      h(n)=((4*n-2)/(n+1))*h(n-1);

      该递推关系的解为:

      h(n)=C(2n,n)/(n+1) (n=1,2,3,...)

  • 0
    @ 2009-06-19 11:21:52

    program p1122;

    var i,j,k,n,m,ans:longint;

    sum:int64;

    function c(x,y:longint):longint;

    var g,t,s:longint;

    begin

    if y=0 then exit(x) else begin

    t:=x-y; s:=1;

    for g:=1 to y do

    s:=s*(g+t) div g;

    c:=s;

    end; end;

    function katelan(x:longint):longint;

    var g,t:longint;

    begin

    katelan:=c(2*x,x) div (x+1);

    end;

    begin

    readln(n);

    sum:=katelan(n);

    writeln(sum);

    end.

  • 0
    @ 2009-06-12 12:14:48

    program zhan;

    var

    f:array[1..100] of int64;

    i,j,n:longint;

    begin

    readln(n);

    f[1]:=1;

    f[2]:=2;

    f[3]:=5;

    if n>3 then

    begin

    for j:=4 to n do begin

    f[j]:=f[j-1]*2;

    for i:=2 to j-1 do begin

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

    end;

    end;

    end;

    writeln(f[n]);

    end.

  • 0
    @ 2009-05-30 11:12:58

    前33个:

    1

    2

    5

    14

    42

    132

    429

    1430

    4862

    16796

    58786

    208012

    742900

    2674440

    9694845

    35357670

    129644790

    477638700

    1767263190

    6564120420

    24466267020

    91482563640

    343059613650

    1289904147324

    4861946401452

    18367353072152

    69533550916004

    263747951750360

    1002242216651368

    3814986502092304

    14544636039226909

    55534064877048198

    212336130412243110

  • 0
    @ 2009-04-27 13:37:13

    笨蛋都知是卡特兰数

    const

    a:array[1..15]of int64=

    (1, 2, 5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845);

    var

    n:integer;

    begin

    read(n);

    writeln(a[n]);

    end.

  • 0
    @ 2009-04-05 16:48:18

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    #include

    using namespace std;

    int main()

    {

    int n;

    long ans[16] = {0,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845};

    cin>>n;

    cout

  • 0
    @ 2009-03-26 17:44:23

    又忘记用longint了...

  • 0
    @ 2009-03-12 19:31:08

    /*

    卡塔兰

    cartalan

    设f[n]为n辆车出栈的所有顺序

    f[n]=f[0]*f[n-1]+f[1]*f[n-2]……+f[n-2]*f[1]+f[n-1]*f[0]

    经化简,通项公式

    f[n]=c[2n][n]/(n+1)

    (其中c为组合)

    */

    #include

    using namespace std;

    int C[31][31];

    int c(int x,int y)

    {

    if(C[x][y]>0)return C[x][y];

    if(x==y||y==0)return C[x][y]=1;

    if(y==1)return C[x][y]=x;

    return C[x][y]=c(x-1,y-1)+c(x-1,y);

    }

    int main()

    {

    int n;

    cin>>n;

    cout

  • 0
    @ 2009-03-10 13:51:17

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    水,

    用暴搜DFS

    var

    s,s1,s2,n:integer;

    t:longint;

    procedure dg(dep:integer);

    begin

    if dep=n*2 then begin

    inc(t);

    // writeln;

    end

    else begin

    if(s-1>=0)and(s2+1

  • 0
    @ 2009-03-07 13:05:01

    很水……

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var

    n,i:integer;

    ans:int64;

    begin

    readln(n);

    ans:=1;

    for i:=1 to n do

    ans:=(ans*(n+i)) div i;

    ans:=ans div (n+1);

    writeln(ans);

    end.

    Flag    Accepted

    题号   P1122

    类型(?)   搜索

    通过   2693人

    提交   3987次

    通过率   68%

    难度   2

    提交 讨论 题解

  • 0
    @ 2009-02-23 18:09:40

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

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

    拜读了《解题报告》,用了个记忆化搜索,AC。

  • 0
    @ 2009-02-20 21:14:49

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-12-19 19:21:30

    水!!

    program p1122;

    var

    n,i:longint;

    ans:int64;

    begin

    readln(n);

    ans:=1;

    for i:=1 to n do

    ans:=ans*(n+i) div i;

    ans:=ans div (n+1);

    writeln(ans);

    end.

  • 0
    @ 2008-12-17 18:29:28

    看了鱼丸的程序....数据太弱了吧!BS题目,我还用DP还U掉了...某鱼丸的纯模拟居然A了...

  • 0
    @ 2008-11-23 22:43:39

    procedure try(a,b,c:longint);{a代表当前未进过栈的个数,b代表当前栈内含有数,而c代表当前以出栈数}

    begin

    if c=n then inc(ans){ans是计数器} else

    begin

    if a>0 then try(a-1,b+1,c);{尝试进栈}

    if b>0 then try(a,b-1,c+1);{尝试出栈}

    end;

    end;

  • 0
    @ 2008-11-19 20:17:57

    program p_1(input,output);

    var

    n,sum:longint;

    procedure p(i,j:longint);

    var

    m:longint;

    begin

    sum:=0;

    if j-1=n then

    begin inc(sum);exit; end;

    m:=j;

    p(i+1,j+1);

    if i-1>=0 then p(i-1,j);

    end;

    begin

    readln(n);

    p(1,2);

    writeln(sum);

    end.

  • 0
    @ 2008-11-13 21:11:31

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    program v1122;

    var

    n,i,j:dword;

    s,ans:extended;

    function f(n:dword):extended;

    var

    i:dword;

    begin

    if n=1

    then exit(1)

    else exit(n*f(n-1));

    end;

    begin

    readln(n);

    ans:=(f(2*n))/(f(n)*f(n))/(n+1);

    writeln(ans:0:0);

    end.

    so easy

信息

ID
1122
难度
2
分类
组合数学 | Catalan数列 点击显示
标签
递交数
4093
已通过
2516
通过率
61%
被复制
22
上传者