#P13508. [OOI 2024] Burenka and Pether

[OOI 2024] Burenka and Pether

Description

曾几何时,Burlyandia 的公主 Burenka 决定让她的朋友 ReLu 开心一下。她知道 ReLu 也热衷于加密货币,于是 Burenka 决定创立属于自己的区块链加密货币,命名为 Pether

在接受了一位个人成长与网络安全领域专家的课程培训后,Burenka 决定要让 Pether 拥有最强的安全保护。结果,由于极其复杂且曲折的限制,并非所有用户都可以互相转账 Pether

Pether 区块链的结构确实复杂且曲折。所有用户编号为 11nn。每个用户都分配有一个唯一的标识符 aia_i。此外,货币系统还设定了一个安全参数 dd

用户 ii 只有在 i<ji < jai<aja_i < a_j 时,才能直接给用户 jj 转账。但这还不够!用户之间的直接转账还需要经过若干中间用户组成的交易链。在每一步交易中,每个后续中间用户(包括最终的 jj)的编号都必须递增,且每次编号增加不能超过 dd。此外,除 iijj 之外的所有中间用户,其标识符必须严格小于 aia_i

更正式地说,用户 ii 能否直接向用户 jj 转账,需要满足以下条件:

  • i<ji < j
  • ai<aja_i < a_j
  • 存在一组长度为 kk 的中间用户序列 xx,使得:
    • i=x1<x2<<xk1<xk=ji = x_1 < x_2 < \ldots < x_{k-1} < x_k = j
    • 对所有 1tk11 \le t \le k-1,有 xt+1xtdx_{t+1} - x_t \le d
    • 对所有 2tk12 \le t \le k-1,有 axt<aia_{x_t} < a_i

Burenka 现在请你这位熟悉编程的朋友,帮她理解这个系统,并判断一些用户对之间能否转账 Pether

你需要回答 qq 个询问。每个询问给定一对用户,询问是否存在一条(可能经过中间用户的)直接转账路径,使得可以从 uiu_i 转账到 viv_i。部分询问还要求最小化转账次数(即最少经过多少次直接转账,从 uiu_iviv_i)。注意,在每次直接转账的实现过程中,不要求最小化中间用户数。

Input Format

第一行包含三个整数 nnddgg,分别表示用户数、安全参数和测试组编号,1n,d3×1051 \leq n, d \leq 3\times10^50g120 \leq g \leq 12

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n,表示每个用户的唯一标识符,1ain1 \leq a_i \leq n,保证所有 aia_i 互不相同。

第三行一个整数 qq,表示询问数量,1q3×1051 \leq q \leq 3\times10^5

接下来 qq 行,每行三个整数 ti,ui,vit_i, u_i, v_iti{1,2}t_i \in \{1, 2\}1ui<vin1 \leq u_i < v_i \leq n。其中 uiu_i 是付款用户,viv_i 是收款用户。若 ti=1t_i = 1,只需判断能否转账;若 ti=2t_i = 2,还需输出从 uiu_iviv_i 的最少直接转账次数。

Output Format

输出 qq 行,第 ii 行为第 ii 个询问的答案。

若不能从 uiu_i 转账到 viv_i,输出 00。否则,若 ti=1t_i = 1,输出 11;若 ti=2t_i = 2,输出从 uiu_iviv_i 的最小直接转账次数。

6 1 0
2 1 3 4 5 6
6
2 1 3
2 1 2
1 1 4
2 1 5
2 1 6
1 2 6
1
0
1
3
4
1
6 2 0
1 2 3 4 5 6
6
2 1 5
2 2 5
2 1 6
2 2 6
2 1 4
2 2 4
2
2
3
2
2
1
10 2 0
2 1 4 3 5 6 8 7 10 9
10
2 1 5
1 2 5
2 3 5
2 1 9
2 5 8
2 3 9
2 1 8
1 1 2
2 3 8
2 1 9
2
1
1
4
2
3
3
0
2
4

Hint

说明

在第一个样例中,用户之间的直接转账关系如下图:

第一个询问中,用户 11 可通过用户 22 作为中间人,经过 22 次直接转账,将 Pether 转给用户 33

第二个询问,用户 11 无法直接转账给用户 22,因为 a1=2>a2=1a_1 = 2 > a_2 = 1

第三个询问,1341 \rightarrow 3 \rightarrow 4,共 22 次直接转账即可到达。因 t3=1t_3 = 1,只需判断可达性,输出 11

第四个询问,可以 13451 \rightarrow 3 \rightarrow 4 \rightarrow 5,共 33 次直接转账。

第二个样例中,直接转账关系如下:

第三个样例中,直接转账关系如下:

计分方式

本题共十二组测试。只有通过该组及其所有依赖组全部测试,才能获得该组分数。部分组不要求通过样例测试。Offline-evaluation 表示该组结果仅在赛后可见。

组别 分值 nn qq 依赖组 特殊限制
0 3×105\le 3\times 10^5 样例。
1 10 100\le 100 ^ 无特殊限制。
2 7 1000\le 1000 3×105\le 3\times 10^5 11 ^
3 14 3×105\le 3\times 10^5 ^ an=n,vi=na_n = n, v_i = n
4 10 ^ =1= 1 ^ vi=nv_i = n
5 9 3×105\le 3\times 10^5 3,43,4 ^
6 7 ^ ti=2t_i=2,答案不超过 1010
7 1,61,6 ti=2t_i=2,答案不超过 150150
8 13 ti=1t_i = 1
9 10 5×104\le 5\times10^4 11 无特殊限制。
10 4 105\le 10^5 1,91,9 ^
11 2×105\le 2\times10^5 1,9,101,9,10
12 5 3×105\le 3\times 10^5 0110\sim11 Offline-evaluation.

翻译由 ChatGPT-4.1 完成。