Description
在 Pigeland 有 n 所大学,编号为 1 到 n。每年,一些排名机构会发布这些大学的排名。今年共有 k 份排名列表,每份列表都是 1 到 n 的一个排列,代表大学在该列表中的排名。对于每份排名,越靠近排列前面的大学排名越好。
:::align{center}

这是 2024 ICPC World Final 的真实故事。
:::
Supigar 是一名准备申请博士项目的大四学生,他有自己评判 n 所大学综合水平的方法。他认为,如果满足下列条件之一,则大学 x 被认为优越于大学 y:
- x 在至少一份排名中比 y 排名更靠前,或者
- 存在某个 z (z=x,z=y),使得 x 在至少一份排名中比 z 靠前,且 z 优越于 y。
显然,在这种定义下,可能存在某些大学对 (x,y) 关系满足 x<y 时 x 优越于 y,但同时 y 也优越于 x。Supigar 将这类关系的大学对称为模糊对。
Supigar 有 q 个询问,第 i 个询问由三个整数 idi、li 和 ri 表示(li≤ri)。对于每个询问,他会关注第 idi 份排名列表中从第 li 个位置到第 ri 个位置(两端都包含),对应的大学,并想知道在这些大学中,有多少对(x,y)(x<y)是模糊对。注意,模糊对的定义需综合考虑所有 k 份排名列表的优越关系。
有多组测试数据。输入的第一行为整数 T(1≤T≤2×105),表示测试数据组数。对于每组测试数据:
第一行包含三个整数 n、k 和 q(1≤n,k,q≤2×105, 1≤n×k≤2×105),分别表示大学数、排名列表数和询问数。
接下来 k 行,每行有 n 个互不相同的整数 ai,1,ai,2,…,ai,n(1≤ai,j≤n),表示第 i 份排名列表。
接下来 q 行,每行有三个整数 idi′、li′ 和 ri′(0≤idi′<k, 0≤li′,ri′<n),表示经过编码的排名列表编号和询问区间。
- 真正的 idi 等于 ((idi′+vi−1)modk)+1。
- 真正的 li 等于 ((li′+vi−1)modn)+1。
- 真正的 ri 等于 ((ri′+vi−1)modn)+1。
其中 vi−1 表示第 (i−1) 个询问的答案。定义 v0=0。由于采用了编码,你需要先计算出每次询问的答案才能处理下一个询问。保证 1≤idi≤k 且 1≤li≤ri≤n。
还保证所有测试数据中 n×k 之和与 q 之和都不超过 2×105。
对于每组测试数据,输出 q 行。每行一个整数,表示第 i 个询问的模糊对数量。
2
5 2 2
1 2 3 4 5
5 4 3 2 1
1 0 2
1 2 1
5 3 3
1 2 3 4 5
1 3 2 4 5
1 2 3 5 4
0 0 2
0 2 3
1 0 3
3
10
1
1
2
Hint
对于第一个样例测试,经过解码后的两次询问分别为 2 1 3 和 1 1 5。
对于第二个样例测试,经过解码后的三次询问分别为 1 1 3、2 4 5 和 3 2 5。
由 ChatGPT 5 翻译