CF2150B.Grid Counting

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

ParagonX9 - HyperioxX

⠀

Alice 有一个 n×nn \times n 的网格。最开始,所有的格子都是白色的。Alice 想要涂黑一些格子,并需要满足某些属性。

设 (x1,y1),(x2,y2),…,(xm,ym)(x_1, y_1), (x_2, y_2), \ldots, (x_m, y_m) 是被涂成黑色的格子。你会得到一个长度为 nn 的数组 aa。下列条件必须被满足:

  • 对于每一行 kk(1≤k≤n1 \le k \le n),恰好有 aka_k 个不同的 ii(1≤i≤m1 \le i \le m)使得 xi=kx_i = k。也就是说,第 kk 行恰好有 aka_k 个黑色格子。
  • 对于每一个 kk(1≤k≤n1 \le k \le n),存在恰好一个 ii 使得 max⁡(xi,yi)=k\max(x_i, y_i) = k。
  • 对于每一个 kk(1≤k≤n1 \le k \le n),存在恰好一个 ii 使得 max⁡(xi,n+1−yi)=k\max(x_i, n + 1 - y_i) = k。

例如,当 a=[2,2,1,0,0]a = [2, 2, 1, 0, 0] 时,一组可能的黑色格子为 {(1,1),(2,2),(3,3),(2,4),(1,5)}\{(1,1), (2,2), (3,3), (2,4), (1,5)\}。对应的网格如下:

在给定黑色格子的条件下,统计可能的网格的方案数。只要存在某个格子在两个网格中黑白色不同,则认为两个网格不同。由于答案可能很大,请输出对 998 244 353998\,244\,353 取模的结果。

输入格式

每个测试用例包含多组数据。第一行为测试用例数量 tt(1≤t≤1041 \le t \le 10^4)。
紧接着每个测试用例包含两行:

第一行为一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5)。
第二行为 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤n0 \le a_i \le n)。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

每个测试用例输出一行,一个整数,表示符合条件的网格数,对 998 244 353998\,244\,353 取模。

输入输出样例

  • 输入#1

    5
    5
    2 2 1 0 0
    2
    2 0
    2
    1 1
    4
    3 1 0 0
    4
    0 0 0 0

    输出#1

    1
    1
    0
    2
    0

说明/提示

  • 第一个测试用例中,只有题目所示的那一种涂黑方案。
  • 第二个测试用例中,唯一的合法方案为 {(1,1),(1,2)}\{(1,1), (1,2)\}。
  • 第三个测试用例中,没有合法方案。

由 ChatGPT 5 翻译

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

首页