zoukankan      html  css  js  c++  java
  • 3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵

    3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵

    Time Limit: 3 Sec  Memory Limit: 128 MB
    Submit: 87  Solved: 49
    [Submit][Status][Discuss]

    Description

    Input

      第1行:4个由空格隔开的整数X,K Mx,My.
        第2到第Y+1行:每行由X个字符描述草地.

    Output

        一个单独的整数表示最后一个不是大石块的格子被乳草占领的星期数

    Sample Input

    4 3 1 1
    ....
    ..*.
    .**.

    Sample Output

    4

    HINT

     

    Source

    题解:题目本身很水,一道灌水法,BFS秒杀
    但还是WA了一下,表示题目描述简直坑爹不解释,注意看清题目描述再下手(还有OI经常很良心的让你就算题目理解错了也能过样例TT)
     1 /**************************************************************
     2     Problem: 3406
     3     User: HansBug
     4     Language: Pascal
     5     Result: Accepted
     6     Time:20 ms
     7     Memory:444 kb
     8 ****************************************************************/
     9  
    10 const dir:array[1..8,1..2] of longint=((1,0),(-1,0),(0,1),(0,-1),(1,1),(-1,-1),(-1,1),(1,-1));
    11 var
    12    i,j,k,l,m,n,x,y,x0,y0,f,r:longint;
    13    a:array[0..101,0..101] of longint;
    14    d:array[0..15000,1..3] of longint;
    15    ch:char;
    16 begin
    17      readln(m,n,y,x);x:=n+1-x;
    18      for i:=0 to n+1 do
    19          begin
    20               a[i,m+1]:=1;
    21               a[i,0]:=1;
    22          end;
    23      for i:=0 to m+1 do
    24          begin
    25               a[n+1,i]:=1;
    26               a[0,i]:=1;
    27          end;
    28      for i:=1 to n do
    29          for j:=1 to m do
    30              begin
    31                   read(ch);
    32                   if ch='.' then a[i,j]:=0 else a[i,j]:=1;
    33                   if j=m then readln;
    34              end;
    35      d[1,1]:=x;d[1,2]:=y;d[1,3]:=0;f:=1;r:=2;
    36      while f<r do
    37            begin
    38                 for i:=1 to 8 do
    39                     begin
    40                          x0:=d[f,1]+dir[i,1];
    41                          y0:=d[f,2]+dir[i,2];
    42                          if a[x0,y0]=0 then
    43                             begin
    44                                  d[r,1]:=x0;
    45                                  d[r,2]:=y0;
    46                                  d[r,3]:=d[f,3]+1;
    47                                  inc(r);a[x0,y0]:=1;
    48                             end;
    49                     end;
    50                 inc(f);
    51            end;
    52      writeln(d[f-1,3]);
    53      readln;
    54 end.      
  • 相关阅读:
    什么时候是个头?
    生活就是这样
    差距究竟在哪里?
    认识到三个问题
    研究生三件事
    重写DNN6.2注册、登陆、修改等个人中心
    SQL游标的使用
    SQL UPDATE实现多表更新
    SQL 百万级两表数据间更新和添加
    DNN路径
  • 原文地址:https://www.cnblogs.com/HansBug/p/4418698.html
Copyright © 2011-2022 走看看