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. -
02009-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
-
02009-08-05 09:51:16@
庆祝双星!!
-
02009-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 -
02009-08-03 20:05:46@
AC20题,纪念一下!
嘿嘿…… -
02009-08-02 20:20:17@
背包,14行搞定,秒
---|---|---|---|---|---|---|---|---|---|-
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-08-02 20:11:23@
---|---|---|---|---|---|---|---|--
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-08-02 14:59:51@
由于DP学的不精通,因此没用DP做。
数据不大可以打表~
一次AC~^_^ -
02009-08-01 22:11:45@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-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. -
02009-08-01 14:21:22@
void dfs(long s,long nn,long kk)
{
if(kk -
02009-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看了好多解释,都有一点疏漏。就把楼下某大神的解释修正了下,供参考..
-
02009-07-30 18:22:18@
我做的是完全背包,k值大了就不知道怎么做了
-
02009-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 -
02009-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
-
02009-07-28 16:13:01@
int search(int s,int p) {
if(p==1) return 1;
else {
int i,sum;
sum=0;
for(i=0;i -
02009-07-26 20:58:39@
动规
f:=f+f -
02009-07-25 08:33:05@
编译通过...
├ 测试数据 01:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 72ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:80 有效耗时:72ms谁能告诉我这是为什么?
我深搜的!
-
02009-07-24 12:43:53@
program 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.
终于把公式推出来了。。 -
02009-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
---|---|---|---|---|---|---|---|-