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 翻译