245 条题解
- 
  0lianlian LV 4 @ 2009-08-07 15:02:47 var a,b:array[1..200]of longint; 
 n,k,sum,x:longint;
 procedure find(st,m,k:longint);
 var i,j:integer;
 begin
 if k=x then begin
 inc(sum);
 exit;
 end;
 for i:=st to (m div 2) do
 begin
 b[k]:=i;
 a[k]:=m-i;
 find(b[k],a[k],k+1);
 end;
 end;
 begin
 read(n,x);
 find(1,n,1);
 write(sum);
 end.
- 
  0@ 2009-08-05 09:57:30普通的递归题 var 
 n,k,s:LONGINT;
 procedure dg(x,y,n:LONGINT);
 var
 i:integer;
 begin
 if (x=k)and(n>=y)
 then begin
 inc(s);
 exit;
 end;
 for i:=y to n-1 do
 dg(x+1,i,n-i)
 end;
 begin
 readln(n,k);
 s:=0;
 dg(1,1,n);
 writeln(s);
 end.290Ms ---|---|-Ac 
- 
  0@ 2009-08-05 09:51:16庆祝双星!! 
- 
  0@ 2009-08-03 20:28:21模拟也ok 
 #include
 using namespace std;
 int n,k,s;
 bool fenjie(int x,int l,int c)
 {
 int i;
 bool b=true;
 if(c==k)
 {
 if(x>=l)s++;else return false;
 return true;
 }
 for(i=l;i>n>>k;
 fenjie(n,1,1);
 cout
- 
  0@ 2009-08-03 20:05:46AC20题,纪念一下! 
 嘿嘿……
- 
  0@ 2009-08-02 20:20:17背包,14行搞定,秒 
 ---|---|---|---|---|---|---|---|---|---|-
 编译通过...
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms
- 
  0@ 2009-08-02 20:11:23---|---|---|---|---|---|---|---|-- 
 编译通过...
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms
- 
  0@ 2009-08-02 14:59:51由于DP学的不精通,因此没用DP做。 
 数据不大可以打表~
 一次AC~^_^
- 
  0@ 2009-08-01 22:11:45编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms
- 
  0@ 2009-08-01 16:18:08{短小精悍} 
 program leo;
 var n,k,ans:longint;
 procedure dfs(now,c,s:longint);
 var i:longint;
 begin
 if c=k-1 then inc(ans); else
 for i:=now to (s div (k-c)) do dfs(i,c+1,s-i);
 end;
 begin
 readln(n,k);
 dfs(1,0,n);
 writeln(ans);
 end.
- 
  0@ 2009-08-01 14:21:22void dfs(long s,long nn,long kk) 
 {
 if(kk
- 
  0@ 2009-07-31 19:09:01把7分为3份 有4种分法 这个是样例 
 可分为1 1 5 1 2 4 1 3 3 2 2 3
 而1 1 5 1 2 4 1 3 3又可以看作
 15 24 33 +1
 223 可以看作 1 1 2 +1 1 1
 那就是a[7,3]:=a[7-1,3-1]+a[7-3,3]
 状态转移方程:a:=a+a
 因为是不要重的 所以就把方程做的条件设为 i>=j
 a[0,0]:=1看了好多解释,都有一点疏漏。就把楼下某大神的解释修正了下,供参考.. 
- 
  0@ 2009-07-30 18:22:18我做的是完全背包,k值大了就不知道怎么做了 
- 
  0@ 2009-07-30 12:06:37编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms
 1 2 3 有了这个表
 1 1 0 0 规律很明显
 2 1 1 0 仔细看
 3 1 1 1 你就会发现
 4 1 2 1 F[I, J] := F[I-J, J] + F[I-1, J-1]
 5 1 2 2
 6 1 3 3
 7 1 3 4
- 
  0@ 2009-07-29 14:26:58#include 
 using namespace std;
 int n,k,f[ 201 ][ 7 ];int main() 
 {
 cin >> n >> k;for(int i = 1 ; i 
- 
  0@ 2009-07-28 16:13:01int search(int s,int p) { 
 if(p==1) return 1;
 else {
 int i,sum;
 sum=0;
 for(i=0;i
- 
  0@ 2009-07-26 20:58:39动规 
 f:=f+f
- 
  0@ 2009-07-25 08:33:05编译通过... 
 ├ 测试数据 01:答案错误... ├ 标准行输出
 ├ 错误行输出
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 72ms
 ---|---|---|---|---|---|---|---|-
 Unaccepted 有效得分:80 有效耗时:72ms谁能告诉我这是为什么? 我深搜的! 
- 
  0@ 2009-07-24 12:43:53program vijos1117; 
 var n,k,i,j,s,jj,kk:integer;dp:array[1..201,1..6] of longint;
 begin
 readln(n,k);
 for i:=1 to n do dp:=1;
 for i:=2 to n do
 dp:=i div 2;
 for j:=3 to k do
 for i:=j to n do
 begin
 for jj:=1 to i div j do
 begin
 s:=i+j-(j-1)*jj-1-jj;
 if s>0 then
 dp:=dp+dp;
 end;
 end;
 writeln(dp[n,k]);
 end.
 终于把公式推出来了。。
- 
  0@ 2009-07-21 07:46:07递归咋不行???? 
 program dk;
 var
 a,n,m:qword;
 procedure jk(s,l,b:integer);
 var
 i:integer;
 begin
 if s=2 then m:=m+l div 2-b+1
 else for i:=b to l div s do
 jk(s-1,l-i,i);
 end;
 begin
 read(n,a);
 m:=0;
 jk(a,n,1);
 write(m);
 end.
 编译通过...
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-