CF2150B.Grid Counting
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
⠀
Alice 有一个 n×n 的网格。最开始,所有的格子都是白色的。Alice 想要涂黑一些格子,并需要满足某些属性。
设 (x1,y1),(x2,y2),…,(xm,ym) 是被涂成黑色的格子。你会得到一个长度为 n 的数组 a。下列条件必须被满足:
- 对于每一行 k(1≤k≤n),恰好有 ak 个不同的 i(1≤i≤m)使得 xi=k。也就是说,第 k 行恰好有 ak 个黑色格子。
- 对于每一个 k(1≤k≤n),存在恰好一个 i 使得 max(xi,yi)=k。
- 对于每一个 k(1≤k≤n),存在恰好一个 i 使得 max(xi,n+1−yi)=k。
例如,当 a=[2,2,1,0,0] 时,一组可能的黑色格子为 {(1,1),(2,2),(3,3),(2,4),(1,5)}。对应的网格如下:

在给定黑色格子的条件下,统计可能的网格的方案数。只要存在某个格子在两个网格中黑白色不同,则认为两个网格不同。由于答案可能很大,请输出对 998244353 取模的结果。
输入格式
每个测试用例包含多组数据。第一行为测试用例数量 t(1≤t≤104)。
紧接着每个测试用例包含两行:
第一行为一个整数 n(2≤n≤2⋅105)。
第二行为 n 个整数 a1,a2,…,an(0≤ai≤n)。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
每个测试用例输出一行,一个整数,表示符合条件的网格数,对 998244353 取模。
输入输出样例
输入#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)}。
- 第三个测试用例中,没有合法方案。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?