CF2032F.Peanuts

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

拥有神奇豆茎的 Jack 最近收集了许多花生。最终,他得到了 nn 袋花生,这些花生袋从左到右依次编号为 11 到 nn。第 ii 袋中有 aia_i 个花生。

Jack 和他的童年好友 Alice 决定围绕这些花生玩一个游戏。首先,Alice 会将这些花生袋分成若干个盒子;每个盒子必须包含至少一个连续的花生袋,并且每个花生袋只能属于一个盒子。与此同时,Alice 不会改变盒子的顺序,也就是说,盒子的编号按照其中花生袋的编号递增排列。

之后,Alice 和 Jack 将轮流进行操作,Alice 先手。

每一回合,当前玩家必须从最左边的非空盒子(即最左边至少有一个非空花生袋的盒子)中的某一个花生袋中取出正数个花生。换句话说,只有当前面所有盒子都已经没有花生时,玩家才能从更右边的盒子中取花生。无法进行有效操作的玩家判负。

由于 Alice 可以自行决定如何分盒,她确信自己能够获胜。因此,她想知道有多少种分盒方式可以保证她获胜(假设双方都采取最优策略)。你能帮她计算这个方案数吗?

由于答案可能非常大,请输出对 998 244 353998\,244\,353 取模后的结果。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——表示测试用例的数量。接下来是每组测试用例的描述。

每组测试用例的第一行包含一个整数 nn(1≤n≤1061 \leq n \leq 10^6)——表示花生袋的数量。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \leq a_i \leq 10^9)——表示每个花生袋中的花生数量。

保证所有测试用例中 nn 的总和不超过 10610^6。

输出格式

对于每个测试用例,输出一个整数,表示 Alice 能够保证获胜的分盒方式数,对 998 244 353998\,244\,353 取模后的结果。

输入输出样例

  • 输入#1

    5
    3
    1 2 3
    4
    1 2 3 1
    5
    1 1 1 1 1
    2
    1 1
    10
    1 2 3 4 5 6 7 8 9 10

    输出#1

    1
    4
    16
    0
    205

说明/提示

在第一个测试用例中,Alice 获胜的唯一分盒方式是将花生袋分为两个盒子:([1,2],[3])([1, 2], [3])(第一个盒子包含第 1 和第 2 袋,第二个盒子包含第 3 袋)。Alice 通过从第二袋取走所有花生获胜,剩下 ([1],[3])([1], [3])。Jack 被迫从第一个盒子中唯一的袋子取花生,Alice 就能取走第二个盒子剩下的花生。

在第二个测试用例中,Alice 获胜的分盒方式有 ([1],[2,3,1])([1], [2, 3, 1])、([1,2,3,1])([1, 2, 3, 1])、([1,2],[3],[1])([1, 2], [3], [1]) 和 ([1,2],[3,1])([1, 2], [3, 1])。

在第三个测试用例中,无论 Alice 如何分盒,她都能获胜。

在第四个测试用例中,无论 Alice 如何分盒,她都无法获胜。

由 ChatGPT 4.1 翻译

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

首页