#P12558. [UOI 2024] Heroes and Monsters

[UOI 2024] Heroes and Monsters

题目描述

有 nn 个英雄和 nn 个怪物。英雄和怪物分别编号为 11 到 nn 的整数。第 ii 个英雄的战斗力为 aia_i,第 ii 个怪物的战斗力为 bib_i。保证所有 a1,a2,…,an,b1,b2,…,bna_1, a_2, \ldots, a_n, b_1, b_2, \ldots, b_n 的值都是两两不同的。

将进行总共 nn 场战斗。每场战斗中恰好有一个英雄和一个怪物参与,且每个英雄和每个怪物都恰好参与一场战斗。假设某场战斗由编号为 ii 的英雄和编号为 jj 的怪物进行。如果 ai>bja_i > b_j,则编号为 ii 的英雄会感到高兴;否则,他会感到悲伤。

定义 anskans_k 为大小为 kk 的不同英雄集合 SS 的数量,满足存在一种战斗分配方式使得集合 SS 中的所有英雄都高兴,而其他英雄都悲伤。

给定 qq 个形如 ll、rr 的查询。对于每个查询,计算 (∑i=lransi)mod  998244353(\sum\limits_{i=l}^{r} ans_i) \mod 998244353 的值。

输入格式

第一行包含一个整数 nn(1≤n≤5⋅1031 \leq n \leq 5 \cdot 10^3)—— 将进行的战斗场数。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤2⋅n1 \leq a_i \leq 2 \cdot n)—— 英雄的战斗力。

第三行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(1≤bi≤2⋅n1 \leq b_i \leq 2 \cdot n)—— 怪物的战斗力。

保证所有 a1,a2,…,an,b1,b2,…,bna_1, a_2, \ldots, a_n, b_1, b_2, \ldots, b_n 的值都是两两不同的。

第四行包含一个整数 qq(1≤q≤n+11 \leq q \leq n+1)—— 查询的数量。

接下来的 qq 行每行包含两个整数 ll 和 rr(0≤l≤r≤n0 \leq l \leq r \leq n)—— 对应查询的参数。

保证所有 a1,a2,…,an,b1,b2,…,bna_1, a_2, \ldots, a_n, b_1, b_2, \ldots, b_n 的值都是两两不同的。

输出格式

对于每个查询,输出一个整数 —— 所求的值 (∑i=lransi)mod  998244353(\sum\limits_{i=l}^{r} ans_i) \mod 998244353。

3
3 4 6
1 2 5
3
1 2
2 3
3 3
2
3
1

提示

下图展示了第一个样例中的英雄和怪物。英雄位于上方,怪物位于下方。方块中的数字表示对应英雄或怪物的战斗力。

在样例中,存在三个可能的高兴英雄集合:{1,2,3}\{1,2,3\}、{2,3}\{2,3\} 和 {1,3}\{1,3\}。以下是三种可能的战斗分配方式,使得对应的英雄集合高兴。注意,可能存在多种战斗分配方式使得同一个英雄集合高兴。

评分标准

  • (33 分):对于所有 1≤i,j≤n1 \leq i,j \leq n,满足 ai<bja_i < b_j;
  • (99 分):q=1q = 1,l=1l = 1,r=1r = 1;
  • (66 分):对于所有 1≤i≤n1 \leq i \leq n,满足 ai=2⋅i−1a_i = 2 \cdot i - 1,bi=2⋅ib_i = 2 \cdot i;
  • (1616 分):n≤500n \leq 500,q=1q = 1,l=0l = 0,r=nr = n;
  • (1414 分):q=1q = 1,l=0l = 0,r=nr = n;
  • (1515 分):q=1q = 1,l=rl = r;
  • (1717 分):n≤500n \leq 500;
  • (2020 分):无额外限制。

翻译由 DeepSeek V3 完成