244 条题解
-
0sxpeter LV 8 @ 2009-06-11 21:10:25
记得对输入数据进行排序!!!!!!
没排序的程序:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 228ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 321ms
├ 测试数据 07:答案正确... 633ms
├ 测试数据 08:运行超时...
├ 测试数据 09:运行超时...
├ 测试数据 10:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:70 有效耗时:1182ms排序后:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 87ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 150ms
├ 测试数据 07:答案正确... 321ms
├ 测试数据 08:答案正确... 415ms
├ 测试数据 09:答案正确... 508ms
├ 测试数据 10:答案正确... 696ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2177ms -
02009-06-11 20:06:47@
递推就可以完成这题
program test;
var n,i,j,k,m:word;
a:array[1..100]of word;
f:array[0..2000,0..2000]of boolean;begin
readln(n);
for i:=1 to n do read(a[i]);
readln;
for k:=1 to n do
begin
for i:=m downto 0 do
for j:=m-i downto 0 do
if fthen begin f[i,j+a[k]]:=true;f[i+a[k],j]:=true;end;
f[a[k],0]:=true;
f[0,a[k]]:=true;
inc(m,a[k]);
end;
for i:=m downto 0 do if f then begin writeln(i);break;end;
if i=0 then writeln('Impossible');
end.总耗时2400ms
-
02009-05-01 17:55:01@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-04-26 21:16:29@
var
i,j,k,n,t,s:integer;
a,b,c:array[0..2000]of integer;
f:array[0..2000]of boolean;
function max(x,y:integer):integer;
begin
if x>y then exit(x) else exit(y);
end;
begin
read(n);
t:=1;
fillchar(f,sizeof(f),false);
a[1]:=0;
fillchar(b,sizeof(b),0);
fillchar(c,sizeof(c),0);
f[0]:=true;
for i:=1 to n do
begin
read(k);
s:=t;
for j:=1 to s do
begin
if not f[abs(k-a[j])] then
begin
inc(t);
a[t]:=abs(k-a[j]);
f[a[t]]:=true;
end;
if not f[k+a[j]] then
begin
inc(t);
a[t]:=k+a[j];
f[a[t]]:=true;
end;
c[abs(k-a[j])]:=max(max(max(b[a[j]],k),b[abs(k-a[j])]),c[abs(k-a[j])]);
c[k+a[j]]:=max(max(k+b[a[j]],b[k+a[j]]),c[k+a[j]]);
end;
for j:=1 to t do
b[a[j]]:=c[a[j]];
end;
if b[0]=0 then writeln('Impossible') else writeln(b[0]);
end. -
02009-04-19 21:03:04@
咿兮呼……终于过了此水题……DP方程不再多说,底下的人都说得很好……另:
如果出现Wa On Test #5的诡异错误,那把f[0,x]的
初值定得小点……我就是这么错的…… -
02009-04-17 12:24:54@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
通过自己的努力AC。f[i][j]表示前i个塔中任选,两塔差距为j时,较矮的那个的最大高度。 -
02009-03-18 19:55:45@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms好吧 很弱的一题 扫水时初始化竟然扫掉2个百分点 滚动数组导致访问错误 OTZ
-
02009-03-14 19:42:11@
bool f[i][j]表示高塔高i矮塔高j的情况是否可以出现,当前的水晶为c[i],这种情况可以由f[j]推来,不过如果i-c[i]小于j,就是从f[j]推来的了;还可以从f[i][j-c[i]]推来。三重循环
for i=1; i=0
for k=j; k>=0
里面两层倒序是为了防止重取,[]里的数都不能小于零,除非你想小囧一下……
程序写出来还算简洁,就是时间猥琐了点:
有效耗时:790ms -
02009-03-02 13:17:49@
错第一个点的注意:不要忘记考虑加了高度以后 高塔和矮塔交换的情况
吃多了果然做不出题目 -
02009-02-17 13:35:27@
program p1037;
var f:array[0..2000]of boolean;
a:array[1..100]of integer;
n,i,j,h:integer;
begin
readln(n);
fillchar(f,sizeof(f),false);
for i:=1 to n do
read(a[i]);
h:=0;f[0]:=true;
for i:=1 to n do
begin
h:=h+a[i];
for j:=h downto a[i] do
if f[j-a[i]] then f[j]:=true;
end;
i:=1001;
repeat
dec(i);
until (i=0) or ((f[i]) and (f));
if i=0 then writeln('Impossible')
else
writeln(i);
end.
我的程序..
用这种做法显然是有问题的 当水晶是1 1 5 8时他的最大高度是7
而7有只有5+1+1
但是却过了9个点
剩一个不可能情况过不了..
大家看一下怎么改 谢谢了 -
02009-02-10 21:05:55@
program t7;
var
max,i,j,n:longint;
a:array[0..101,0..1000]of integer;
b,c:array[0..1000]of boolean;
h,l:array[0..100]of longint;
pn,p,pz:array[0..10000]of integer;
procedure fuz;
begin
l[0]:=1;
p[1]:=0;
for i:=0 to n do
for j:=0 to (max+1)div 2 do
a:=-1;
a[0,0]:=0;
end;
beginreadln(n);
for i:=1 to n do
begin
read(h[i]);
max:=max+h[i];
end;
fillchar(b,sizeof(b),false);
fuz;
for i:=0 to n-1 do
begin
for j:=1 to l[i] do
begin
if p[j]>=h then
begin
if (a[i+1,p[j]-h] -
02009-01-29 20:08:01@
#include
#include
using namespace std;
int main (void)
{
int n;
cin>>n;
int a[n+1],i,j,k=0;
for (i=1;i>a[i];k+=a[i];}
int f[n+1][k+1];
for (i=0;i -
02008-12-06 17:41:17@
var
f:array[0..100,0..2000]of integer;
n,m,i,j,k:integer;
a:array[1..100]of integer;
function max(x,y,z:integer):integer;
begin
max:=x;
if max -
02008-11-30 13:59:07@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms注意初始化和边界
***|Hpec killed P1037 with knife
-
02008-11-26 15:36:11@
vijos的测评机就是神奇
提交了四次都超时,但我坚信总有一次会过
所以,第五次:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 72ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 41ms
├ 测试数据 07:答案正确... 197ms
├ 测试数据 08:答案正确... 291ms
├ 测试数据 09:答案正确... 275ms
├ 测试数据 10:答案正确... 353ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1229ms -
02008-11-22 22:29:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms很经典问题。
-
02008-11-13 21:48:07@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms好可惜啊。。。没有看到IMPOSSIBLE这个东西。。。
-
02008-11-13 15:37:25@
Vijos Dragon
var dat:array[1..100] of longint;
data:array[0..100,-2000..2000] of boolean;
result:array[1..100,-2000..2000] of integer{longint};
n,i,j:longint;空间占用很大,可是....
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms -
02008-11-13 08:49:07@
vijos puppy万岁!!!!!!!!!!!!!!!!!!!!
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 119ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 134ms
├ 测试数据 07:答案正确... 353ms
├ 测试数据 08:答案正确... 525ms
├ 测试数据 09:答案正确... 478ms
├ 测试数据 10:答案正确... 634ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2243ms
…………………………危险…………………………
下面是tiger:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 244ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 259ms
├ 测试数据 07:答案正确... 541ms
├ 测试数据 08:答案正确... 791ms
├ 测试数据 09:答案正确... 806ms
├ 测试数据 10:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:90 有效耗时:2641ms
一样的程序……………………………… -
02008-11-12 21:13:45@
感谢ra224大牛