244 条题解
-
0ilsweet LV 3 @ 2008-09-11 19:24:39
var
n:integer;
a:array[1..100] of integer;
f:array[0..1000,-2000..2000] of integer;
rst:integer;
procedure init;
var
i:integer;
begin
read(n);
for i:=1 to n do read(a[i]);
fillchar(f,sizeof(f),255);
f[0,0]:=0;
end;
procedure doit;
var
i,j,k:integer;
t,m:integer;
begin
for i:=0 to n-1 do
for j:=0 to 2000 do begin
if f=-1 then continue;
if f -
02008-09-09 21:48:18@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msprogram p1037;
var
a:array[1..100] of longint;
f:array[1..100,0..2000] of longint;
n,sum:longint;
procedure init;
var
i:longint;
begin
sum:=0;
readln(n);
for i:=1 to n do begin
read(a[i]);
inc(sum,a[i]);
end;
end;
procedure print;
begin
if f[n,0]>0 then writeln(f[n,0])
else writeln('Impossible');
end;
function max(a,b:longint):longint;
begin
max:=a; if max -
02008-09-02 19:46:36@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms终于,终于,,终于!~研究了我这么久!
原来递归方程错了!!if j
-
02008-09-01 14:30:17@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:90 有效耗时:0ms
为什么 -
02008-08-29 22:05:58@
-
02008-08-26 10:42:54@
终于,知道了用f表示前I个水晶可以搭成差为J的矮塔高度,就好做了
-
02008-08-25 19:55:42@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-08-21 19:51:13@
最简单的动态转移#24....肯定简单
AC= =~
转化以下就成了普通的背包
貌似有点漏洞
哪只大牛举个反的例子0。0
只限本题AC~ (*^_^*)
var a:array[1..100]of integer;
c:array[0..2001]of boolean;
b:array[0..2001]of set of 0..101;
i,j,max,n:longint;
procedure kuai(l,r:longint);{快排- -~不看也行}
var i,j,k:integer;
x,y:longint;
begin
i:=l;j:=r; x:=a[(l+r)shr 1];
repeat
while a[i]x do dec(j);
if ij;
if l -
02008-07-29 09:52:49@
f[i][j]=max{f[j],f[j+a[i]]+a[i],f[j-a[i]],f[a[i]-j]+j}
好像有问题
最后一部份是不是应该是f[a[i]-j]+a[i]-j -
02008-01-02 21:26:46@
搞错搞错,不好意思,新手上路。
-
02007-11-24 17:27:45@
感谢begginer同学
-
02007-11-13 18:11:43@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms简单!
-
02007-11-13 08:16:12@
在这里崇拜一下楼下的楼下的大牛!~
-
02007-11-08 16:19:41@
..............
-
02007-11-08 10:20:26@
超时了,由此可见‘这个号是假的’的方法虽说思路简洁,但是不好使
-
02007-11-04 01:27:53@
最近好多的动规都错在了没有防止后效性
看来阶段的选择和状态转移的实现还要下一些功夫 -
02007-11-03 15:59:15@
可以有高度一样的水晶么?
应该不能有同样高度的水晶吧? -
02007-11-02 14:10:34@
LS的LS的LS的LS的LS的程序有问题!
虽然可以通过本题的全部测试数据,但我找出了一个很简单的反例
4
1 2 3 3
显而易见,答案是3。可是程序只会输出4
可见本题数据还是很弱的~ -
02007-11-02 11:44:49@
赞Jason911!
Jason911太大牛了~~ -
02007-10-30 21:34:07@
f[n,m] = max(f[n-1,m+h[i]](+A塔),f[n-1,m-h[i]]+h[i](+B塔),f[n-1,h[i]-m]+m(+B塔),f[n-1,m](不加))
假设A塔比B塔高
f[n,m]代表加了n块水晶,高度差为m低塔所能取得的最大高度
O(nmk)