AT_xmascon21_a.At Random

通过率:0%

AC君温馨提醒

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

题目描述

本题为交互题。 评测程序最多使用约 100 毫秒的运行时间和 8 MB 的内存。

有一个宽 500500 像素、高 500500 像素的画布,像素的位置由整数对 (x, y)(x,\ y) 表示(0≤x<5000\leq x<500,0≤y<5000\leq y<500)。**请注意,xx 坐标增加的方向是从左到右,yy 坐标增加的方向是从上到下。**每个像素要么是白色,要么是黑色。初始时,画布上的所有像素都是白色。

现在,有两只狐狸 00 和 11,它们都拿着巨大的铅笔,站在像素 (0, 0)(0,\ 0) 上。你需要通过最多 10 00010\,000 次操作,绘制出给定的目标设计图像。

  • 操作:指定像素 (x, y)(x,\ y),并对狐狸说“请移动到像素 (x, y)(x,\ y)”。然后,狐狸 00 和狐狸 11 中随机等概率地选择一只移动到像素 (x, y)(x,\ y)。你可以指定已经有狐狸(无论是一只还是两只)所在的像素进行操作。

狐狸在移动时,会从移动前的像素到移动后的像素画出一条黑色的线段。具体来说,使用布雷森汉姆算法确定线段经过的所有像素,并将这些像素全部变为黑色。(详细实现可参考提供的本地测试器)

今年的招牌设计

输入格式

  1. 输入一行,包含三个整数 W,H,TW,H,T,以空格分隔。
    • 这表示目标设计和画布的宽为 WW 像素,高为 HH 像素,最多可以进行 TT 次操作。
    • 在本题中,输入保证 W=500W=500,H=500H=500,T=10 000T=10\,000。
  2. 接下来 HH 行,每行一个仅由 . 和 # 组成的长度为 WW 的字符串。
    • 第 yy 行(0≤y<H0\leq y<H)的第 xx 个字符(0≤x<W0\leq x<W)表示目标设计中像素 (x, y)(x,\ y) 的颜色。白色用 . 表示,黑色用 # 表示。
  3. 以下内容最多重复 TT 次:
    1. 你的程序需要输出两个整数 x, yx,\ y,以空格分隔。
      • 若 (x, y)=(−1, −1)(x,\ y)=(-1,\ -1),表示不再进行操作,循环结束。此后不再有输入。
      • 否则,0≤x<W0\leq x<W 且 0≤y<H0\leq y<H,表示指定像素 (x, y)(x,\ y) 进行操作。
    2. 操作结果中,若狐狸 kk(k=0,1k=0,1)移动,则输入一个整数 kk。

请参考输入输出示例。

输出格式

每次操作输出两个整数 x yx\ y,以空格分隔,并及时刷新输出流。

说明/提示

达成条件

目标设计是一张 500×500500\times500 的黑白图像。若通过操作生成的图像同时满足以下两个条件,则认为“符合设计”:

  • 在目标设计中为黑色的像素中,生成的图像中也为黑色的像素比例不少于 85%85\%。
  • 在目标设计中为白色的像素中,生成的图像中也为白色的像素比例不少于 70%70\%。

数据

**本题所需的相关数据可从这里下载。**zip 包内包含以下文件:

  • atrandom/input.png:目标设计的图片。图片尺寸为 500×500500\times500。
  • atrandom/input.txt:目标设计按下述输入输出格式文本化的文件。实际评测时,最先输入的数据与此文件内容完全一致。
  • atrandom/interactive_tester.py:用于本地测试交互的 Python 3 工具。
    • 使用方法:python3 interactive_tester.py <input_file> <seed> -- <cmd_line_solution>。
      • <input_file> 为目标设计的文本文件路径。要与实际评测一致,可使用附带的 input.txt。
      • <seed> 为决定移动狐狸时使用的随机数种子。该工具的随机数生成方式与实际评测时不一定完全一致。
      • <cmd_line_solution> 为你的解答程序的命令行字符串。
    • 例如,若你的 C++ 解答编译为 solver.out,可在同一目录下运行:python3 interactive_tester.py input.txt 0 -- ./solver.out。
    • 若你的 Python 解答为 solver.py,可运行:python3 interactive_tester.py input.txt 0 -- python solver.py。
    • 该工具中的 drawline 函数实现了布雷森汉姆算法,可供参考。
  • atrandom/visualize.html:用于可视化本地测试工具输出的详细图片数据的可视化工具。
    • 本地测试工具运行后,会在同一目录下生成 interactive_tester.dump 文件。将该文件输入到可视化工具中,可查看你程序生成的图像并保存。

注意事项

所有操作结束后,你的程序必须立即退出。若未能及时退出,评测结果不确定。此外,若输出不合法,结果也不确定(不一定会返回 WA)。

所有操作结束并退出后,若生成的图像满足达成条件,则判为正确。

请注意,输出后必须立即刷新输出流。如果未刷新,可能会导致 TLE。

各语言的输入输出方法可参考 AtCoder 以往的交互题(如:ABC 019 D: 高桥君与树的直径)。

输入输出示例

以下为 W=5, H=5, T=10W=5,\ H=5,\ T=10 时的输入输出示例。

实际测试数据与提供的数据完全一致,以下仅为说明示例。

输入 输出 说明

5 5 10

给出 W,H,TW,H,T。

..##.
.####
####.
###..
.#...

给出目标设计。

2 4

操作 (x, y)=(2,4)(x,\ y)=(2,4)。

1

狐狸 11 移动。

3 3

操作 (x, y)=(3,3)(x,\ y)=(3,3)。

1

狐狸 11 移动。

3 0

操作 (x, y)=(3,0)(x,\ y)=(3,0)。

0

狐狸 00 移动。

-1 -1

不再进行操作(共进行了 33 次操作)。

由 ChatGPT 4.1 翻译

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

首页