273 条题解
-
0SecretAgent LV 10 @ 2009-06-20 21:38:16
USACO上那题的简单版
开一个表然后扫描n次,更新最值program Agent;
var
n,m,cln:longint;
f:array[1..1000,1..1000]of boolean;procedure init;
var
i,x,y,t:longint;
begin
readln(n,m);
for x:= 1 to n do
for y:= 1 to m do
begin
read(t);
if t=1 then f[x,y]:=true else f[x,y]:=false;
end;
end;procedure main;
var
i,x,y,t:longint;
begin
for x:= 1 to n do
for y:= 1 to m do
if f[x,y] then
begin
cln:=1;
break;
end;
if m -
02009-06-03 13:42:55@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05?font color=#CC3366>答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
第五个点????????f:=min(ff,f)+1{a=1}
不太理解,那位大牛详细讲下? -
02009-05-31 14:20:37@
program p1057;
var
n ,m ,max :longint;
house :array[0..1005,0..1005]of longint;
procedure init;
var
i ,j :longint;
begin
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do
read(house);
readln;
end;
end;
function min(a,b,c:longint):longint;
begin
if a>b then if b>c then exit(c)
else exit(b)
else if a>c then exit(c)
else exit(a);
end;
procedure building;
var
i ,j :longint;
begin
max:=0;
for i:=1 to n do
for j:=1 to m do
if house=1 then
begin
house:=min(house,house,house)+1;
if max -
02009-05-23 20:47:49@
第一次:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:运行超时|无输出...
├ 测试数据 10:答案正确... 447ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:90 有效耗时:447ms
第二次:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:运行超时|无输出...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:90 有效耗时:0ms
第三次:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 416ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:416ms
三次程序一样,同样评测机,结果不同。Why?
AC率啊 -
02009-05-19 18:40:13@
注意两点:
1,状态转移方程是min,我当成max了。。。;
2, min(ans )最小值赋为1,以免出现边长为0的输出; -
02009-05-19 14:09:12@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 56ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:56ms -
02009-05-24 15:03:06@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 431ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:431ms
var
max,d,n,m,i,j,c,e,f:integer;
a:array[1..1000,1..1000]of integer;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(a);
max:=1;
for i:=1 to n do
for j:=1 to m do
if a=1 then
begin
c:=-1;
repeat
d:=1;
for e:=i to i+c do
begin
for f:=j to j+c do
if (a[e,f]=0)or (e>n) or (f>m)
then begin
d:=0;
break;
end;
if d=0 then break;
end;
inc(c);
if max -
02009-05-17 09:19:39@
var
max,min,i,j,n,m:integer;
f:array[1..1000,1..1000]of integer;
begin
readln(n,m);
max:=0;
for i:=1 to n do for j:=1 to m do read(f);
for i:=2 to n do for j:=2 to m do if f0 then
begin
min:=10000;
if f -
02009-05-10 10:22:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms50题纪念!!
-
02009-05-02 09:59:12@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
var
i,j,n,m,max:longint;
F:array[0..1000,0..1000]of longint;function min(a,b:longint):longint;
begin
if a>b then exit(b)
else exit(a);
end;begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(f);
max:=-maxint;
for i:=1 to n do
for j:=1 to m do
begin
if f0 then
f:=min(min(f,f),f)+1;
if f>max then max:=f;
end;
writeln(max);
end.
看了大牛们的代码,才知道用dp是这样做的。 -
02009-04-30 21:53:21@
program vijos1057;
var map:array[1..1000,1..1000] of 0..1;
t,i,j,n,m:integer;
procedure search(p,q:integer);
var s,ai,aj:integer;
begin
s:=0;
repeat
inc(s);
for ai:=0 to s-1 do
begin
for aj:=0 to s-1 do
if map[p+ai,q+aj]=0 then break;
if (ajs-1) or ((aj=s-1) and (map[p+ai,q+aj]=0)) then break;
end;until (ajs-1) or (ais-1) or ((aj=s-1) and (map[p+ai,q+aj]=0)) or ((ai=s-1) and (map[p+ai,q+aj]=0));
{writeln('s=',s);}
if t -
02009-04-27 13:03:10@
var f,a:array[0..1000,0..1000] of integer;
f1,f2:array[0..1000,0..1000] of integer;
i,j,k,n,m,max:integer;
function min(x,y:integer):integer;
begin
if x>y then min:=y else min:=x;
end;
begin
readln(n,m);
for i:=1 to n do for j:=1 to m do
read(a);
for i:=1 to n do for j:=1 to m do
begin
for k:=i downto 1 do if a[k,j]0 then f1:=f1+1 else break;for k:=j downto 1 do if a0 then f2:=f2+1 else break;
end;
for i:=1 to n do
for j:=1 to m do
if (f1>f) and (f2>f) then
f:=f+1
else f:=min(f1,f2);
for i:=1 to n do for j:=1 to m do if f>max then max:=f;
writeln(max);
end.
{3次} -
02009-04-13 21:03:45@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 72ms
├ 测试数据 10:答案正确... 742ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:814msprogram zk;
var
map:array [1..1000,1..1000] of integer;
x,y,a,b,c,i,j,m,n:integer;function work(x,y:integer):integer;
var
xo,yo:integer;
jie:boolean;
begin
xo:=x; yo:=y;
repeat
xo:=xo+1;
yo:=yo+1;
until (map[xo,y]=0) or (map[x,yo]=0);
work:=xo-x+1;
repeat
jie:=true;
work:=work-1;
for yo:=y to work+y-1 do
begin
for xo:=x to work+x-1 do
if map[xo,yo]=0 then begin jie:=false; break; end;
if map[xo,yo]=0 then begin jie:=false; break; end;
end;until jie=true;
end;begin
a:=0;
readln(n,m);
for y:=1 to n do
for x:=1 to m do
read(map[x,y]);
for y:=1 to n do
for x:=1 to m do
if map[x,y]=1
then
begin
if a -
02009-04-07 13:03:17@
真有这么简单?
-
02009-03-20 10:32:33@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
把1打成2了,我晕。。费了我3次 -
02009-03-19 17:26:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms想了半天,原来就一个字母写错了……
-
02009-03-12 12:34:15@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 03:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:70 有效耗时:0ms
#include
int a[2001][2001];
int max[2002][2002][3];
int sum;int small(int a,int b,int c)
{
if(a=1;j--)
if(a[i][j]==1)
{
max[i][j][2]=small(max[i][j][0],max[i][j][1],max[j+1][2]+1);
if(sum -
02009-02-05 12:00:33@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-12-15 13:28:15@
我只能贡献CE率了
这道题交了我7次;_;
-
02008-12-11 13:09:19@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar
n,m,i,j,ans:integer;
f:array[0..1001,0..1001] of integer;
function min(a,b:integer):integer;
begin
if a>b
then exit(b)
else exit(a);
end;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(f);
ans:=0;
for i:=1 to n do
for j:=1 to m do
begin
if f0
then f:=min(min(f,f),f)+1;
if ans