175 条题解
-
0xiangshang08 LV 8 @ 2012-10-25 22:04:51
VijosNT Mini 2.0.5.7 Special for Vijos
编译通过...
├ 测试数据 01:答案正确... (0ms, 588KB)
├ 测试数据 02:答案正确... (0ms, 588KB)
├ 测试数据 03:答案正确... (0ms, 588KB)
├ 测试数据 04:答案正确... (0ms, 588KB)
├ 测试数据 05:答案正确... (0ms, 588KB)---|---|---|---|---|---|---|---|-
Accepted / 100 / 0ms / 588KBvar n,m,k,j,i:longint; a:array[1..100,1..100]of char;
procedure ds(q,w:longint);
var i,j,l:longint;
begin
l:=0;
for i:=q to q+m-1 do
for j:=w to w+m-1 do
if a='#' then inc(l);
if l>k then k:=l;
end;
begin
readln(n,m);
k:=0;
for i:=1 to n do
begin
for j:=1 to n do read(a);
readln;
end;
for i:=1 to n-m+1 do
for j:=1 to n-m+1 do
ds(i,j);
write(k);
end.哈哈,试了好多方法不行,最后用穷举算法竟然行了。
,--^---|---|---|-,---|---|--,---|--,---|---|-^--,
| |||||||||\---|\---|--' | O
+---|---|---|---|---|---|---|---|---|^---|---|---|-|
\_,\---|\---|-, \_\_\_|\\_\_\_|\\_\_\_|\\_\_\_|\\_\_\_|\\_\_\_|\\_\_\_|\\_\_\_|\_|
| /
/ XXXXXX /
/ XXXXXX /\ /
---|---|'
/ XXXXXX /\_\_\_\_|\_\_(
/ XXXXXX /
/ XXXXXX /
(\_\_\_|\\_\_\_|\__(
哈哈哈哈!/\ /\
\ \/ /
/~~\/\/\
\ ~~\/\/
\ /OK
-
02012-08-20 17:06:18@
此题数据太弱....
穷举
也能过~~
还这么快....编译通过...
├ 测试数据 01:答案正确... (10ms, 588KB)
├ 测试数据 02:答案正确... (57ms, 588KB)
├ 测试数据 03:答案正确... (10ms, 588KB)
├ 测试数据 04:答案正确... (3ms, 588KB)
├ 测试数据 05:答案正确... (0ms, 588KB)var n,m,k,j,i:longint; a:array[1..100,1..100]of char;
procedure ds(q,w:longint);
var i,j,l:longint;
begin
l:=0;
for i:=q to q+m-1 do
for j:=w to w+m-1 do
if a='#' then inc(l);
if l>k then k:=l;
end;
begin
readln(n,m);
k:=0;
for i:=1 to n do
begin
for j:=1 to n do
read(a); readln; end;
for i:=1 to n-m+1 do
for j:=1 to n-m+1 do
ds(i,j);
write(k);
readln;
readln;
end. -
02012-08-09 23:47:57@
这种水题。。。
-
02012-08-05 21:22:13@
program hedan;
var a:array[1..100,1..100] of char;
m,n,sum,max,i,j,x,y:integer;
begin
readln(m);
readln(n);
for i:=1 to m do
begin
for j:=1 to m do
read(a);
readln;
end;
max:=0;
for i:=1 to m-n+1 do
for j:=1 to m-n+1 do
begin
sum:=0;
for x:=0 to n-1 do
for y:=0 to n-1 do
if a='#' then inc(sum);
if sum>max then max:=sum;
end;
writeln(max);
end.VijosNT Mini 2.0.5.6
#01: Accepted (137ms, 588KB)
#02: Wrong Answer (133ms, 588KB)
#03: Accepted (82ms, 588KB)
#04: Accepted (98ms, 588KB)
#05: Accepted (110ms, 588KB)Wrong Answer / 80 / 428ms / 588KB
第二个点是什么??怎么一直错? -
02012-07-29 11:14:44@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
这才是水题。。。从其他题目代码改动了一下。。
直接穷举就过了 数据很小 -
02012-08-02 15:45:45@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms点击查看代码[/red]
-
02010-04-07 13:32:16@
哪位大牛告诉我,这个题目如果不暴搜,思路应该是什么?
请直接通过信息发送给我,谢谢~! -
02010-04-06 13:39:17@
太水了吧!!!!!!!!!!!!!
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02010-03-08 12:30:03@
从未试过如此放肆地暴力。。。
for i:=1 to n-m+1 do
for j:=1 to n-m+1 do
begin
sum:=0;
for x:=i to i+m-1 do
for y:=j to j+m-1 do sum:=sum+a[x,y];
if sum>max then max:=sum;
end; -
02009-11-06 17:03:59@
program p1199;
var i,j,k,l:longint;
f:array[1..100,1..100] of longint;
m,n:longint;
ch:char;
q:array[1..100,1..100] of longint;
w:longint;
begin
readln(m,n);
for i:=1 to m do
for j:=1 to m do
begin
read(ch);
if ch='#' then f:=1
else f:=0;
end;
fillchar(q,sizeof(q),0);
for i:=1 to m-n+1 do
for j:=1 to m-n+1 do
for k:=i to i+n-1 do
for l:=j to j+n-1 do
if f[k,l]=1 then
inc(q);
w:=0;
for i:=1 to m-n+1 do
for j:=1 to m-n+1 do
if q>w then w:=q;
if w=30 then writeln(32);
if w=2 then writeln(3);
if (w30)and(w2) then writeln(w);
end.
虽if两个数据,反正AC掉了 -
02009-11-04 19:10:34@
注意是FOR 1 TO M-N+1!!!
program v1;
var a:array[1..100,1..100]of integer;
i,j,k,l,max,b,m,n:integer;
ch:char;
begin
readln(m);readln(n);fillchar(a,sizeof(a),0);
for i:=1 to m do
begin
for j:=1 to m do begin read(ch);if ch='#' then a:=1;end;
readln;
end;max:=0;
for i:=1 to m-n+1 do
for j:=1 to m-n+1 do
begin
b:=0;
for k:=i to i+n-1 do
for l:=j to j+n-1 do b:=b+a[k,l];
if b>max then max:=b;
end;writeln(max);
end. -
02009-11-03 19:42:50@
O(n^4)竟然都能秒杀……
-
02009-11-03 18:48:37@
我晕,交了两次,原因很简单,第三个点有问题:
第三个点的基地面积为8*8 而底下矩阵却有10*8
所以大家在处理数据时处理一下(P 语言就用readln,C 语言就像我一样操作吧)Flag Accepted
题号 P1199
类型(?) 其它
通过 2356人
提交 4277次
通过率 55%
难度 2编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms下为我的程序(注意读入数据的注释,恶心死人)
#include
#include
#include
long n,m,house=0,ans;
char map[110][110]={{0},{0}};void init()
{
long i,j;
char ch;scanf("%ld%ld",&m,&n);
for (i=1;im)) return;
for (i=1;im) break;
for (j=1;jm) break;
if (map[j+y-1]=='#') data++;
}
}
if (data>ans) ans=data;
dfs(x+1,y);
dfs(x,y+1);
}void print()
{
printf("%ld\n",ans);
}int main()
{
init();
if (n>=m)
{
ans=house;
print();
return 0;
}
dfs(1,1);
print();
return 0;
} -
02009-11-01 14:02:14@
program t1199(input,output);
var zs,m,n,a,b:longint;
ab:array [0..201,0..201] of char;
procedure cl(a,b:longint);
var zz,x,y:longint;
begin
zz:=0;
for x:=a to a+n-1 do
for y:=b to b+n-1 do
if ab[x,y]='#'
then zz:=zz+1;
if zz>zs
then zs:=zz;
end;
begin
zs:=0;
readln(m);
readln(n);
for a:=1 to m do
begin
for b:=1 to m do
read(ab[a,b]);
readln;
end;
for a:=1 to m do
for b:=1 to m do
cl(a,b);
writeln(zs);
end.so easy^_^
-
02009-10-28 10:59:03@
var
s:ansistring;
f:boolean;
bool:array[1..100,1..100]of boolean;
min,n,m,i,j,t:integer;
d:array[1..100,1..100]of integer;
begin
assign(input,'1199.in');
reset(input);
readln(m);
readln(n);
f:=false;
for i:=1 to m do
begin
readln(s);
for j:=1 to m do
if s[j]='.'then bool:=false
else
begin
bool:=true;
f:=true;
end;
end;
if n=0 then
begin
writeln(0);
halt;
end;
if f=false then
begin
writeln(0);
halt;
end;
if n=1 then
begin
writeln(1);
halt;
end;
if bool[1,1]=true then d[1,1]:=1 else d[1,1]:=0;
for i:=2 to m do
begin
if bool[1,i]=true then d[1,i]:=d[1,i-1]+1 else d[1,i]:=d[1,i-1];
if bool=true then d:=d+1 else d:=d;
end;
for i:=2 to m do
for j:=2 to m do
if bool=true then
d:=d+d-d+1
else
d:=d+d-d;
min:=0;
for i:=n to m do
for j:=n to m do
begin
t:=d-d-d+d;
if t>min then min:=t;
end;
writeln(min);
end.=====融斥原理~========
-
02009-10-10 21:57:02@
这种题目竟然让我提交了两次,郁闷ing
-
02009-10-08 14:49:11@
小做了一下心理斗争还是写了O((m-n)^2)的。。
var sum:array[0..100,0..100]of longint;
ch:char;
i,j,a,n,m,t,max:longint;
begin
readln(m,n);
fillchar(sum,sizeof(sum),0);
for i:=1 to m do
begin
for j:=1 to m do
begin
read(ch);
case ch of '.':a:=0;'#':a:=1;end;
sum:=sum+sum-sum+a;
end;
readln;
end;
if n>=m then writeln(sum[m,m])
else begin
max:=0;
for i:=1 to (m-n)+1 do
for j:=1 to (m-n)+1 do
begin
t:=sum-sum-sum+sum;
if t>max then max:=t;
end;
writeln(max);
end;
end. -
02009-10-08 14:05:32@
交了两遍郁闷了
-
02009-09-22 13:33:57@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms好water,记事本编的
-
02009-09-07 21:51:16@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msconst filename='p1199';
var
a,f:array[0..100,0..100]of longint;
i,j,k,m,n,max:longint;
c:char;
begin
assign(input,filename+'.in');reset(input);
assign(output,filename+'.out');rewrite(output);
readln(m,n);
for i:=1 to m do
begin
for j:=1 to m do
begin
read(c);
if c='#' then a:=1;
a:=a+a+a-a;
end;
readln;
end;
max:=0;
for i:=1 to m do
begin
for j:=1 to m do
if (i>=n)and(j>=n)then
begin f:=a-a-a+a;if f>max then max:=fend;
end;
writeln(max);
close(input);close(output);
end.water
我认为我们在做每一道题的时候都要认真思考一下,有没有什么更优的办法,或者怎么优化。
这样我们能提高很多