207 条题解
- 
  0695574648 LV 8 @ 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:11var 
 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:52program 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:48program 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 有效耗时:0msvar 
 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:39procedure 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:57program 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 有效耗时:0msprogram 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