P1048风暴止息calm

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签期望 DP · 数论 · 模运算

【题目背景】

环锁开启后,CodeDay 进入风暴核心。维持海域稳定的定风楔已经大面积失稳,残留能量仍在不断改变它们的状态。

核心的控制阵式只能在随机模式与人工接管之间切换。过早接管会超出控制系统能够承受的范围,CodeDay 只能等待局面足够接近稳定,再完成最后的修复。

【题目描述】

风暴核心共有 nn定风楔,依次编号为 1n1\sim n。每枚定风楔有稳定与失稳两种状态,分别用 0011 表示。目标是使所有定风楔均处于稳定状态。

启动编号为 ii 的控制阵式,会翻转所有编号为 ii 的正约数的定风楔状态。也就是说,稳定状态会变为失稳状态,失稳状态会变为稳定状态。

例如,启动编号为 66 的控制阵式时,编号为 1,2,3,61,2,3,6定风楔状态会同时翻转,其他定风楔的状态保持不变。

同一个控制阵式可以被启动多次。每次启动后,系统都会根据新的定风楔状态重新判断接下来的行动方式。

对于任意局面,定义其最少操作数为从当前状态出发,使所有定风楔稳定所需的最少控制阵式启动次数。

最少操作数只由当前局面决定,与此前启动过哪些控制阵式无关。当所有定风楔已经稳定时,最少操作数为 00

CodeDay 按照以下方式行动:

  • 如果当前局面的最少操作数不超过 kk,CodeDay 会选择操作次数最少的方案完成剩余操作。
  • 否则,系统会在 1n1\sim n 中等概率随机选择一个编号,并启动对应的控制阵式。

随机模式下的每次选择彼此独立,同一个编号可能被连续选中。每次随机启动结束后,系统都会重新计算当前局面的最少操作数。

一旦最少操作数不超过 kk,CodeDay 便立即接管系统。此后不再进行随机选择,CodeDay 会直接按照操作次数最少的方案使全部定风楔稳定。

如果初始局面的最少操作数已经不超过 kk,CodeDay 会从一开始就直接接管,不会执行任何随机操作。如果随机操作使局面第一次满足接管条件,则该次随机操作仍计入总操作次数。

所有可能的随机过程共同决定最终操作次数。请你求按照上述方式使所有定风楔稳定所需操作次数的期望。

可以证明,这个期望乘以 n!n! 后一定为整数。你只需要输出该整数对 998,244,353998{,}244{,}353 取模的结果。

【输入格式】

从文件 calm.in\textbf{\textit{calm.in}} 中读入数据。

本题包含多组测试数据。

输入的第一行包含两个非负整数 c,Tc,T,分别表示测试点编号与测试数据的组数。c=0c=0 表示该测试点为样例。

对于每组测试数据:

第一行包含两个整数 n,kn,k

第二行包含 nn 个整数,第 ii 个整数表示编号为 ii定风楔初始状态。

【输出格式】

输出到文件 calm.out\textbf{\textit{calm.out}} 中。

对于每组测试数据输出一行一个整数,表示所求期望乘以 n!n! 后对 998,244,353998{,}244{,}353 取模的结果。

【样例 1 输入】

0 44 00 0 0 03 31 0 12 01 03 10 1 1

【样例 1 输出】

06618

【说明/提示】

【样例 1 解释】

第一组测试数据中,所有定风楔已经稳定,因此答案为 00

第二组测试数据的最少操作数为 11,不超过 kk。操作次数乘以 3!3! 等于 66

第三组测试数据中,完成操作所需次数的期望为 33。将其乘以 2!2! 后得到 66

【样例 2】

见选手目录下的 calm/calm2.in\textbf{\textit{calm/calm2.in}}calm/calm2.ans\textbf{\textit{calm/calm2.ans}}

该组样例符合测试点 151\sim 5 的数据范围。

【样例 3】

见选手目录下的 calm/calm3.in\textbf{\textit{calm/calm3.in}}calm/calm3.ans\textbf{\textit{calm/calm3.ans}}

该组样例符合测试点 6106\sim 10 的数据范围。

【样例 4】

见选手目录下的 calm/calm4.in\textbf{\textit{calm/calm4.in}}calm/calm4.ans\textbf{\textit{calm/calm4.ans}}

该组样例符合测试点 111511\sim 15 的数据范围。

【样例 5】

见选手目录下的 calm/calm5.in\textbf{\textit{calm/calm5.in}}calm/calm5.ans\textbf{\textit{calm/calm5.ans}}

该组样例符合测试点 161916\sim 19 的数据范围。

【样例 6】

见选手目录下的 calm/calm6.in\textbf{\textit{calm/calm6.in}}calm/calm6.ans\textbf{\textit{calm/calm6.ans}}

该组样例符合测试点 202520\sim 25 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证 1T201\leq T\leq 201n1051\leq n\leq 10^50kn0\leq k\leq n,单个测试点内 n105\sum n\leq 10^5,每枚定风楔的状态均为 0011

测试点编号nn特殊性质
151\sim 520\leq 20
6106\sim 10300\leq 300
111511\sim 155×103\leq 5\times 10^3
161916\sim 19105\leq 10^5
202520\sim 25105\leq 10^5

特殊性质:保证每组测试数据初始局面的最少操作数不超过 kk

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解