CF1967E2.Again Counting Arrays (Hard Version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

这是本问题的困难版,两个版本的区别在于 nn、mm 和 b0b_0 的具体限制,以及时间限制。只有当你解决了两个版本的问题后,你才能进行 hack。

小 R 之前数过很多集合,现在她打算数数组。

在小 R 看来,一个由非负数组成的数组 b0,…,bnb_0, \ldots, b_n 是否连续有一个判定条件:对于每个满足 1≤i≤n1 \leq i \leq n 的位置 ii,需要满足 ∣bi−bi−1∣=1\lvert b_i - b_{i-1} \rvert = 1。小 R 特别偏好连续的数组,因此她只想生成这样的连续数组。

如果给定起始元素 b0b_0 和数组 a1,…,ana_1, \ldots, a_n,小 R 会尝试生成一个与数组 aa 无相似性的非负连续数组 bb。更具体地说,对于所有的 1≤i≤n1 \leq i \leq n,都需要满足 ai≠bia_i \neq b_i。

但现在,小 R 没有数组 aa。相反,她给了你 nn、mm 和 b0b_0。她希望找出符合下列条件的不同整数数组 a1,…,ana_1, \ldots, a_n 的数目:

  • 每个元素 aia_i 满足 1≤ai≤m1 \leq a_i \leq m;
  • 至少能生成一个符合条件的非负连续数组 b0,…,bnb_0, \ldots, b_n。

请注意,虽然 bi≥0b_i \geq 0,但 bib_i 可以不受限制地大。

考虑到最终答案可能非常巨大,请输出答案对 998 244 353998\,244\,353 取模后的结果。

输入格式

输入包含多组测试用例。第一行是测试用例的数量 t (1≤t≤104)t\ (1 \leq t \leq 10^4)。接下来是各个测试用例的详细描述。

每个测试用例的输入在一行中,包含三个整数 nn、mm 和 b0b_0(1≤n≤2⋅1061 \leq n \leq 2 \cdot 10^6,1≤m≤2⋅1061 \leq m \leq 2 \cdot 10^6,0≤b0≤2⋅1060 \leq b_0 \leq 2 \cdot 10^6),分别代表数组 a1,…,ana_1, \ldots, a_n 的长度,它们最大可能的值,以及数组 b0,…,bnb_0, \ldots, b_n 的起始元素。

保证所有测试用例的 nn 之和不超过 10710^7。

输出格式

对于每个测试用例,输出一个整数,表示符合条件的不同数组 a1,…,ana_1, \ldots, a_n 的数目,并对 998 244 353998\,244\,353 取模。

输入输出样例

  • 输入#1

    6
    3 2 1
    5 5 3
    13 4 1
    100 6 7
    100 11 3
    1000 424 132

    输出#1

    6
    3120
    59982228
    943484039
    644081522
    501350342

说明/提示

举个例子,在第一个测试用例中,当 a=[1,2,1]a = [1, 2, 1] 时,可以设置 b=[1,0,1,0]b = [1, 0, 1, 0];当 a=[1,1,2]a = [1, 1, 2] 时,可以设置 b=[1,2,3,4]b = [1, 2, 3, 4]。总共有 66 种有效的 a1,…,ana_1, \ldots, a_n,事实上,只有 a=[2,1,1]a = [2, 1, 1] 和 a=[2,1,2]a = [2, 1, 2] 这两种情况下,我们无法构造出这样一个非负连续的 b0,…,bnb_0, \ldots, b_n,所以答案是 23−2=62^3 - 2 = 6。

本翻译由 AI 自动生成

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

首页