276 条题解
-
0qiusheng320 LV 8 @ 2010-07-04 17:36:43
简单题当然多多益善咯。
-
02010-04-16 19:19:39@
#include
using namespace std;
char s[101][101];
int a[101][101],n,m,v[101][101],ans;
int way[12][2]={{0,1},{0,2},{1,0},{2,0},{-1,0},{-2,0},{0,-1},{0,-2},{1,1},{1,-1},{-1,1},{-1,-1}};
bool ok(int x,int y)
{
if(x>0&&x0&&yn>>m)
{
int i,j;
memset(a,0,sizeof(a));
memset(v,0,sizeof(v));
for(i=1;i>s[i]+1;
for(j=1;j -
02010-04-14 17:31:19@
N早前已不信数据那么小~
结果爆掉了。。。
只好乖乖一个个调用打,少占内存~~~ -
02010-04-13 21:12:06@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:运行时错误...|错误号: 202
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:90 有效耗时:0ms
program dhxx;
const
dx:array[1..12]of integer=(0,0,1,-1,1,1,-1,-1,2,-2,0,0);
dy:array[1..12]of integer=(1,-1,0,0,1,-1,1,-1,0,0,2,-2);
var
a:array[1..100,1..100]of char;
i,j,k,l,m,n,sum:longint;
p,q:char;
procedure dfs(x,y:longint);
var
i,j,k:longint;
begin
a[x,y]:='-';
for i:=1 to 12 do
if (x+dx[i]>=1)and(x+dx[i]=1)
and(dy[i]+y -
02010-04-08 19:18:15@
太诡异了,第一次测评10分
我一个程序搞了我半个小时实在找不出.再交一次原程序.更悲剧0分
我再找不到什么原因了.再将原程序交上去 100!!!!!
我实在说不出话来了....编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include
#include
#include
using namespace std;
FILE *fin;
char map[40000];
long i,j,k,l,m,n;
long f[4000][4000];
long way[13][2]={{0,0},{1,1},{2,0},{0,2},{-1,1},{-2,0},{-1,-1},{0,-2},{1,-1},{1,0},{0,1},{-1,0},{0,-1}};
long dfs(long x,long y)
{ long xx;long yy;
if(f[x][y]==1)
{f[x][y]=0;
for(int i=1;i0&&xx0&&yy -
02010-03-18 20:58:57@
如果用DFS要注意,如果只是单纯的搜最后一个数据会202,因为深度最多可达到N*M
-
02009-11-08 11:10:12@
program light;
const
di:array[1..12] of longint=(-1,-2,-1,0,0,1,1,2,1,0,0,-1);
dj:array[1..12] of longint=(0,0,1,1,2,1,0,0,-1,-1,-2,-1);
var
num,n,m,i,j,ms:longint;
q:array[1..1000,1..2] of longint;
g:array[1..1000,1..1000] of char;
procedure one(i,j:longint);
var f,r,ii,x,y:longint;
begin
if g='-' then exit;
inc(num);
f:=1;
r:=1;
q[1,1]:=i;
q[1,2]:=j;
repeat
for ii:=1 to 12 do
begin
x:=q[f,1]+di[ii];
y:=q[f,2]+dj[ii];
if (x>0) and (x0) and (yr;
end;
begin
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do read(g);
readln;
end;
num:=0;
ms:=n*m;
for i:=1 to n do for j:=1 to m do one(i,j);
writeln(num);
end.为什么最后一个点错?
-
02009-11-04 15:58:22@
BFS,队列的两个数组开大点,我是开了2000没过,又开了40000就过了
program v1;
const k:array[1..12,1..2]of -2..2 =((2,0),(-2,0),(0,2),(0,-2),(0,1),(1,0),(-1,0),(0,-1),(-1,-1),(-1,1),(1,1),(1,-1));
var n,m,i,j,s,kk,h,t,x1,y1,l:integer;
ch:char;
map:array[-2..200,-2..200]of char;
x,y:array[0..40000]of integer;
begin
readln(n,m); fillchar(map,sizeof(map),'-');
for i:=1 to n do
begin
for j:=1 to m do read(map);
readln
end;
s:=0;
for i:=1 to n do
for j:=1 to m do
if map='#' then
begin
inc(s);x[1]:=i;y[1]:=j;h:=0;t:=1;map:='-';
repeat
inc(h);
for kk:=1 to 12 do
begin
x1:=x[h]+k[kk,1];y1:=y[h]+k[kk,2];
if map[x1,y1]='#' then begin map[x1,y1]:='-';inc(t);x[t]:=x1;y[t]:=y1;end;
end;
until h>=t;
end;write(s);
end. -
02009-11-04 10:46:30@
抑郁啦,真的是逼我啦,自己测都对,vijos来个堆栈溢出错,气死我啦,最终还是开了编译开关过的!vijos不检查编译开关!吼吼!
{$m 1000000,0,2000000}两兆的系统栈我就不信还出错!哼!
果然AC哈哈! -
02009-11-02 21:41:34@
program big;
var
n,m,s,i,j:integer;
a:array[-2..102,-2..102]of char;procedure dfs(i,j:integer);
begin
if a='-' then exit;
if a='#' then
begin
a:='-';
dfs(i,j-2);
dfs(i,j+2);
dfs(i-2,j);
dfs(i+2,j);
dfs(i+1,j+1);
dfs(i+1,j-1);
dfs(i-1,j+1);
dfs(i-1,j-1);
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j+1);
dfs(i,j-1);
end;
end;
procedure init;
var
i,j:integer;
begin
readln(n,m);
for i:=-2 to 102 do
for j:=-2 to 102 do
a:='-';
for i:=1 to n do
begin
for j:=1 to m do
read(a);
readln;
end;
end;begin
init;
s:=0;
for i:=1 to n do
for j:=1 to m do
if a'-' then
begin
inc(s);
dfs(i,j);
end;
writeln(s);
end. -
02009-10-25 09:48:28@
测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案错误... ├ 标准行输出 1
├ 错误行输出 2
BFS,最后一组什么猥琐数据`\
逼我IF啊`\
-
02009-10-23 08:24:27@
存好12个方向
然后Floodfill即可编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-10-22 16:13:28@
种子填充法,很好很强大。
程序23行,一次性秒杀。 -
02009-10-21 21:26:57@
var
n,m,s,i,j:longint;
map:array[1..100,1..100]of char;
procedure dfs(x,y:longint);
var
i,j:longint;
begin
map[x,y]:='-';
for i:=x-2 to x+2 do
for j:=y-2 to y+2 do
if (i=1)and(j=1) then
begin
if ((abs(i-x)+abs(j-y)) -
02009-10-21 21:12:48@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
并查集才是王道!!floodfill的dfs我只有弱弱的90分。。哎。。 -
02009-10-20 10:42:30@
深搜堆栈溢出真糟糕。。。
-
02009-10-15 09:19:13@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 212ms
├ 测试数据 03:答案正确... 181ms
├ 测试数据 04:答案正确... 197ms
├ 测试数据 05:答案正确... 197ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 181ms
├ 测试数据 10:答案正确... 744ms有些恶心...
但我这是一次AC啊..
鼓励鼓励..... -
02009-10-14 20:33:05@
我是中规中矩的搜索,但......
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:运行时错误...|错误号: 202
哪位大牛看一看啊?
谢了!!! -
02009-10-13 16:44:15@
这样写,最后一点202
p:array[1..12,1..2] of longint=((2,0),(-2,0),(0,2),(0,-2),(0,1),(1,0),(-1,0),(0,-1),(-1,-1),(-1,1),(1,1),(1,-1));
procedure dfs(i,j:longint);
var c,xx,yy:longint;
begin
a:=false;
for c:=1 to 12 do
begin
xx:=i+p[c,1];
yy:=j+p[c,2];
if a[xx,yy] then dfs(xx,yy);
end;
end;
这样写:
p:array[1..12,1..2] of longint=((2,0),(-2,0),(0,2),(0,-2),(0,1),(1,0),(-1,0),(0,-1),(-1,-1),(-1,1),(1,1),(1,-1));
procedure dfs(i,j:longint);
var c,xx,yy:longint;
begin
if not a then exit;
a:=false;
for c:=1 to 12 do
begin
//xx:=i+p[c,1];
//yy:=j+p[c,2];
//if a[xx,yy]='#' then
dfs(i+p[c,1],j+p[c,2]);
end;
end;
AC
why?? -
02009-10-11 20:34:37@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms简单的BFS