AT_abc445_g.[ABC445G] Knight Placement

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在一个有 NN 行 NN 列的网格上,第 ii 行(自上而下)第 jj 列(自左而右)的格子称为格子 (i,j)(i, j),其中 1≤i≤N,1≤j≤N1 \le i \le N, 1 \le j \le N。

每个格子要么是空格子,要么是墙格子。整个网格由 NN 个长度为 NN 的字符串 (S1,S2,…,SN)(S_1, S_2, \ldots, S_N) 表示。如果 SiS_i 的第 jj 个字符是 .,则 (i,j)(i, j) 是空格子;如果是 #,则是墙格子。

你想在这个网格上尽可能多地放置棋子,放棋子需要满足以下约束:

  • 棋子不能放在墙格子上。
  • 每个格子最多只能放一个棋子。
  • 如果在 (i,j)(i, j) 放了一个棋子,那么对于如下八个相对位置的格子,不允许再放下棋子(如果这些格子在网格范围内):(i+A,j+B)(i+A, j+B)、(i+B,j+A)(i+B, j+A)、(i+B,j−A)(i+B, j-A)、(i+A,j−B)(i+A, j-B)、(i−A,j−B)(i-A, j-B)、(i−B,j−A)(i-B, j-A)、(i−B,j+A)(i-B, j+A)、(i−A,j+B)(i-A, j+B)。也就是说,从当前格子竖直走 AA 个单元、水平走 BB 个单元,或交换 AA 和 BB 的走法(正负方向)到达的格子,都不能再放置棋子。

设 KK 为在上述约束条件下能放置的最大棋子数。请找出一种合法的放置方案,使得能放 KK 个棋子。

输入格式

输入按以下格式从标准输入读入:

N A BN\ A\ B
S1S_1
S2S_2
⋮\vdots
SNS_N

输出格式

请输出一种满足约束条件并放置了 KK 个棋子的方案。输出共 NN 行,第 ii 行(1≤i≤N1 \le i \le N)为一个长度为 NN 的字符串,只含有 ., o, #。

  • 如果第 ii 行第 jj 列是空格子并且没有棋子,输出 .。
  • 如果该格子是空格子且有棋子,输出 o。
  • 如果该格子是墙格子,输出 #。

如果有多种方案,输出任意一种都可以。

输入输出样例

  • 输入#1

    5 1 2
    ..#..
    ..##.
    .#..#
    ##..#
    .#...

    输出#1

    o.#.o
    oo##.
    o#..#
    ##.o#
    o#ooo
  • 输入#2

    4 0 1
    .###
    ##.#
    #.##
    ###.

    输出#2

    o###
    ##o#
    #o##
    ###o
  • 输入#3

    20 3 4
    #...#...........##.#
    ..##........#.......
    .....##..#....###.#.
    .#...##.##.#.#.#..#.
    #...#.....###..#...#
    #...##......##.##.#.
    .#....#.##.##...#...
    #..##..........#...#
    ##.#..........##....
    ...#..#....#.#.#...#
    #.....#.##.#...#....
    ##................#.
    .#....#..#....#.....
    ........#........#.#
    ........#.#..##....#
    .##.....#....#......
    .##.#.##....#.#...##
    ......#...#..#......
    .........##...#..#.#
    ###.....#...#....#..

    输出#3

    #ooo#....ooo....##o#
    oo##o...oooo#..ooooo
    ooooo##oo#ooo.###o#o
    o#ooo##.##o#o#.#oo#o
    #ooo#....o###..#ooo#
    #...##...oo.##.##o#.
    .#o...#.##.##...#oo.
    #.o##.....o....#..o#
    ##o#.....o.o..##oo..
    ooo#oo#.ooo#.#.#ooo#
    #oooo.#o##o#oo.#oooo
    ##ooo...oooo..o.oo#o
    .#oo..#o.#oo..#oooo.
    ........#.o......#o#
    ..oo....#.#o.##..o.#
    .##.o...#.o..#....o.
    .##o#.##...o#.#.oo##
    oooooo#.oo#oo#o.oooo
    .oooo..o.##ooo#oo#o#
    ###oooo.#ooo#.o.o#oo

说明/提示

样例解释 1

例如,可以按如下方式放置 1010 个棋子,并满足所有条件:

不能再放下第 1111 个棋子了。

所以上述布局对应的输出:

o.#.o
oo##.
o#..#
##.o#
o#ooo

也是合法答案。

注意,如果有多种方案,任意方案都可以。例如,下面也是 1010 个棋子的方案:

输出:

oo#oo
o.##o
.#..#
##..#
o#ooo

同样被判为正确。

样例解释 2

对于该情况,可以在每个空格子上都放一个棋子,并满足所有条件。

数据范围

  • 1≤N≤3001 \le N \le 300
  • 0≤A≤B≤N0 \le A \le B \le N
  • 1≤B1 \le B
  • N,A,BN, A, B 为整数
  • SiS_i 为长度为 NN 仅由 . 和 # 组成的字符串(1≤i≤N1 \le i \le N)

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页