logo AlgoBeat OnlineJudge
登录 注册

#214520. [OII 2025] 双色金字塔 / Piramide bicolore

内存限制:1024 MiB 时间限制:2000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

译自 Italian Olympiad in Informatics (OII) 2025 - Piramide bicolore

建造 OII 纪念金字塔的准备工作一切就绪,现在轮到 Nicoletta 向乌迪内市议会提交项目方案了。


金字塔由黑色和白色的立方体构成。为了加快进度,项目按以下方式执行:

  1. 首先,Nicoletta 将设计底座(第 层):这一层是一个 的立方体方阵,其颜色可以用矩阵 描述。具体来说,如果 上的立方体就是黑色,否则是白色的。
  2. 然后,她将继续建造第 层到第 层。第 层的每个立方体都恰好位于其下方四个立方体的公共顶点之上。如果在它下方的四个立方体中,相邻的立方体都不同色,这个立方体就是黑色,否则是白色的。

:::align{center} Figure 1
图 1:Nicoletta 提出的金字塔方案之一。 :::

市议会对该项目仍不完全信服,并希望获得有关金字塔最终外观的更多信息。为了更清楚地了解情况,议会决定向 Nicoletta 提出 个问题:在每个问题中,他们会询问位于第 层、位置 的立方体是什么颜色。

金字塔中的立方体可由一个三元组 表示,其中 是立方体的层数, 是其在层内的坐标。特别地,立方体 恰好位于其下方四个立方体的公共顶点之上:。在样例解释中你可以看到一个示例。

实现方式

附件中包含一个实现示例 concessione.cpp

你需要实现如下函数:

void init(int N, vector<string> M);
  • :金字塔的大小。
  • :二维数组,每一维下标从 ,表示金字塔的第 层(底座)。
  • 对于每个测试点,该函数都只会被调用一次。
bool query(int h, int x, int y);
  • 整数 表示立方体的位置是
  • 如果位置 上的立方体是黑色的,则该函数需要返回 true;否则返回 false
  • 对于每个测试点,该函数将被调用 次。

输入格式

评测程序的输入格式如下:

  • 行:两个整数
  • 行():一个只包含字符 01 的字符串 ,表示
  • 行():三个整数

输出格式

评测程序的输出格式如下:

输出包含 行,内容为 query 函数返回的值。

样例

样例输入 1

4 6
0111
1010
1101
0110
1 0 0
2 0 1
2 0 0
2 1 1
3 0 0
1 1 2

样例输出 1

1
0
1
0
0
1

数据范围与提示

【样例解释】

该图展示了第一个样例:

Sample Explanation

位置 上的立方体是黑色的,因为它下方的四个立方体中,相邻的立方体都不同色。
位置 上的立方体是白色的,因为它下方的立方体 相邻且同色。

【数据范围】

  • 对于所有的
  • 对于每次询问,,

【子任务】

子任务编号 分值 约束条件
样例
,即底座中的黑色立方体全在一条对角线上
且仅询问金字塔塔尖的颜色
无额外限制