码迷,mamicode.com
首页 > 其他好文 > 详细

[agc004c]and grid

时间:2018-10-18 23:56:53      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:构造   题解   define   size   grid   code   efi   为什么   不能   

别问我为什么咕了两天

题意:

给出一个$H\times W$的网格图A,仅由‘.‘和‘#‘构成,边界上没有‘#‘且至少有一个‘#‘。构造两个网格图B和C,大小均为$H\times W$,要求A中为‘#‘的位置B、C中也为‘#‘,A中为‘.‘的位置B、C中不能都为‘#‘,且B、C中由‘#‘构成的联通块有且只有一个。

$3\leq H,W\leq 500$

本题有SPJ

题解:

这种题貌似跟数据范围没什么关系。。。

敢写敢过?

B中第一列和奇列填‘#‘,C中偶列和最后一列填‘#‘,必定满足条件

别问我怎么证的,orzwzd

代码:

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 #include<queue>
 7 #define inf 2147483647
 8 #define eps 1e-9
 9 using namespace std;
10 typedef long long ll;
11 int n,m;
12 char a[501][501],b[501][501],c[501][501];
13 int main(){
14     scanf("%d%d",&n,&m);
15     for(int i=1;i<=n;i++)scanf("%s",a[i]+1);
16     for(int i=1;i<=n;i++){
17         for(int j=1;j<=m;j++){
18             if(a[i][j]==#)b[i][j]=c[i][j]=#;
19             else b[i][j]=c[i][j]=.;
20         }
21     }
22     for(int i=1;i<=m;i++)b[1][i]=c[n][i]=#;
23     for(int i=1;i<=m;i++){
24         for(int j=2;j<n;j++){
25             if(i&1)b[j][i]=#;
26             else c[j][i]=#;
27         }
28     }
29     for(int i=1;i<=n;i++)printf("%s\n",b[i]+1);
30     printf("\n");
31     for(int i=1;i<=n;i++)printf("%s\n",c[i]+1);
32     return 0;
33 }

[agc004c]and grid

标签:构造   题解   define   size   grid   code   efi   为什么   不能   

原文地址:https://www.cnblogs.com/dcdcbigbig/p/9813339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!