P1080旧词verse

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签动态规划 · 组合数学 · 计数

【题目背景】

河谷巡查结束后,众人在岸边整理一路带回的文字残卷。Pinewood 找到了一首记载归途的旧词,它的上下两阕已经散开,只留下彼此呼应的强弱音迹。

【题目描述】

这首旧词的上阕与下阕各有 nn 个词节。上阕第 ii 个词节的音迹强度为 aia_i,下阕第 jj 个词节的音迹强度为 bjb_j。全部 2n2n 个音迹强度两两不同。

旧谱要求将上阕与下阕的词节两两呼应。Pinewood 需要为每个上阕词节选择一个下阕词节,使每个下阕词节也恰好出现在一组配对中。

若一组配对中上阕词节的音迹更强,则称它为一组昂句,否则称它为一组抑句。一种编排中,若昂句的数量比抑句的数量恰好多 kk,那么这首旧词便能够恢复原有的声律。

两种编排不同,当且仅当存在一个上阕词节,它们为这个词节选择了不同的下阕词节。残卷中没有留下更多配对信息,请你求出所有能够恢复声律的编排数量,答案对 998,244,353998{,}244{,}353 取模。

形式化题意:给定两个长度为 nn 的序列 a,ba,b,统计满足

i=1n[ai>bpi]i=1n[ai<bpi]=k\sum_{i=1}^{n}[a_i>b_{p_i}]-\sum_{i=1}^{n}[a_i<b_{p_i}]=k

的排列 pp 的数量,其中 [][\cdot] 表示 Iverson 括号。

【输入格式】

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

本题包含多组测试数据。

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

对于每组测试数据:

第一行包含两个整数 n,kn,k,表示每阕的词节数量与要求的数量差。

第二行包含 nn 个正整数 a1,a2,,ana_1,a_2,\ldots,a_n,表示上阕词节的音迹强度。

第三行包含 nn 个正整数 b1,b2,,bnb_1,b_2,\ldots,b_n,表示下阕词节的音迹强度。

【输出格式】

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

对于每组测试数据输出一行一个整数,表示能够恢复声律的编排数量对 998,244,353998{,}244{,}353 取模后的结果。

【样例 1 输入】

0 24 24 1 8 63 5 7 23 15 1 92 6 8

【样例 1 输出】

82

【说明/提示】

【样例 1 解释】

在第一组测试数据中,需要恰好出现 33昂句11抑句,共有 88 种合法编排。

【样例 2】

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

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

【样例 3】

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

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

【样例 4】

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

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

【样例 5】

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

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

【样例 6】

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

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

【数据范围】

对于 100%100\% 的数据,保证 1T101\leq T\leq 101n2×1031\leq n\leq 2\times 10^30kn0\leq k\leq n1ai,bi1091\leq a_i,b_i\leq 10^9,全部 ai,bia_i,b_i 两两不同。对于同一个测试点,保证 n2×103\sum n\leq 2\times 10^3

测试点编号nnkk特殊性质
141\sim 49\leq 9n\leq n
595\sim 9120\leq 120n\leq n
101410\sim 142×103\leq 2\times 10^3=n=nA
151915\sim 192×103\leq 2\times 10^3n\leq nB
202520\sim 252×103\leq 2\times 10^3n\leq n

特殊性质 A:保证 k=nk=n

特殊性质 B:将全部 2n2n 个音迹强度从小到大排序后,任意两个相邻音迹分别来自上阕与下阕。

【题解】

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

查看题解