AT_jsc2026_final_g Glass Overflow

题目描述

有 $N$ 个玻璃杯,以及 $N$ 个装满水的瓶子。玻璃杯和瓶子均从 $1$ 到 $N$ 编号。第 $i$ 个玻璃杯的容量为 $C_i$,第 $i$ 个瓶子中装有 $W_i$ 单位的水。 你可以选择一个 $1$ 到 $N$ 的排列 $P=(P_1,P_2,\ldots,P_N)$。接着,对于每一个 $i=1,2,\ldots,N$,把第 $i$ 个瓶子里的水全部倒入编号为 $P_i$ 的玻璃杯。这时,若水量超过杯子的容量,则会溢出,溢出水的量为 $\max(0, W_i-C_{P_i})$。 请你求出所有可能的排列中,溢出水量总和的最大值,以及能够达到最大总溢出量的排列 $P$ 的个数,答案对 $998244353$ 取模。 共有 $T$ 组测试数据,请分别作答。

输入格式

输入以以下格式从标准输入中给出。 > $T$ > $\text{case}_1$ > $\text{case}_2$ > $\vdots$ > $\text{case}_T$ 每个测试用例的输入格式如下: > $N$ > $C_1\ C_2\ \ldots\ C_N$ > $W_1\ W_2\ \ldots\ W_N$

输出格式

输出共 $T$ 行。 第 $i$ 行请输出第 $i$ 个测试用例的答案,即溢出水量的最大可能总和,与使该总和达到最大值的排列 $P$ 的个数(对 $998244353$ 取模),以空格分隔。

说明/提示

### 样例解释 1 对于第 $1$ 个测试用例,排列 $(3,2,1)$ 和 $(3,1,2)$ 都可以达到最大溢出水量。无论是哪种排列,总溢出水量都是 $8$。 对于第 $2$ 个测试用例,没有水会溢出。 ### 约束条件 - $1 \le T \le 10^5$ - $1 \le N \le 2 \times 10^5$ - $1 \le C_i \le 10^9$ - $1 \le W_i \le 10^9$ - 所有测试用例中,$N$ 的总和不超过 $2 \times 10^5$ - 输入的所有值都是整数。 由 ChatGPT 5 翻译