CF1967E2.Again Counting Arrays (Hard Version)
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是本问题的困难版,两个版本的区别在于 n、m 和 b0 的具体限制,以及时间限制。只有当你解决了两个版本的问题后,你才能进行 hack。
小 R 之前数过很多集合,现在她打算数数组。
在小 R 看来,一个由非负数组成的数组 b0,…,bn 是否连续有一个判定条件:对于每个满足 1≤i≤n 的位置 i,需要满足 ∣bi−bi−1∣=1。小 R 特别偏好连续的数组,因此她只想生成这样的连续数组。
如果给定起始元素 b0 和数组 a1,…,an,小 R 会尝试生成一个与数组 a 无相似性的非负连续数组 b。更具体地说,对于所有的 1≤i≤n,都需要满足 ai=bi。
但现在,小 R 没有数组 a。相反,她给了你 n、m 和 b0。她希望找出符合下列条件的不同整数数组 a1,…,an 的数目:
- 每个元素 ai 满足 1≤ai≤m;
- 至少能生成一个符合条件的非负连续数组 b0,…,bn。
请注意,虽然 bi≥0,但 bi 可以不受限制地大。
考虑到最终答案可能非常巨大,请输出答案对 998244353 取模后的结果。
输入格式
输入包含多组测试用例。第一行是测试用例的数量 t (1≤t≤104)。接下来是各个测试用例的详细描述。
每个测试用例的输入在一行中,包含三个整数 n、m 和 b0(1≤n≤2⋅106,1≤m≤2⋅106,0≤b0≤2⋅106),分别代表数组 a1,…,an 的长度,它们最大可能的值,以及数组 b0,…,bn 的起始元素。
保证所有测试用例的 n 之和不超过 107。
输出格式
对于每个测试用例,输出一个整数,表示符合条件的不同数组 a1,…,an 的数目,并对 998244353 取模。
输入输出样例
输入#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] 时,可以设置 b=[1,0,1,0];当 a=[1,1,2] 时,可以设置 b=[1,2,3,4]。总共有 6 种有效的 a1,…,an,事实上,只有 a=[2,1,1] 和 a=[2,1,2] 这两种情况下,我们无法构造出这样一个非负连续的 b0,…,bn,所以答案是 23−2=6。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?