AT_abc421_f.[ABC421F] Erase between X and Y
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个序列 A。起始时,A=(0)。也就是说,A 是一个长度为 1 且唯一元素为 0 的序列。
你需要依次处理 Q 个操作。第 i 个操作(1≤i≤Q)有如下两种形式之一:
1 x:在 A 中 x 出现的位置后面插入 i。具体地,记当前 A 的第 j 个元素为 Aj,n 为 A 当前长度。若 Ap=x,则更新 A 为 (A1,…,Ap,i,Ap+1,…,An)。保证本操作处理前 A 中必然包含 x。2 x y:删除 A 中 x 和 y 之间的所有元素,并输出被删除元素的和。具体地,记当前 A 的第 j 个元素为 Aj,n 为 A 当前长度。若 Ap=x,Aq=y,则输出 Amin(p,q)+1+⋯+Amax(p,q)−1,并将 A 更新为 (A1,…,Amin(p,q),Amax(p,q),…,An)。保证本操作处理前 A 中必然包含 x 与 y。
注意,对于任意一组操作序列,在处理操作过程中,A 中同样的值不会重复出现,因此某个值在 A 中的位置是唯一的(如果它存在的话)。
输入格式
输入按如下格式从标准输入读入:
Q
query1
query2
⋮
queryQ
其中,queryi 表示第 i 个操作,为下述两种格式之一:
1 x
2 x y
输出格式
设一共有 q 个 2 类型操作。请输出 q 行,第 i 行输出第 i 个 2 类型操作的输出结果。
输入输出样例
输入#1
6 1 0 1 1 1 0 2 2 3 1 2 2 0 5
输出#1
1 5
输入#2
2 1 0 2 0 1
输出#2
0
输入#3
10 1 0 1 1 2 0 2 2 0 2 1 0 1 5 2 0 5 2 2 6 1 6 1 9
输出#3
1 0 0 0
说明/提示
样例解释 1
初始时,A=(0)。
- 第 1 次操作:在 0 后插入 1。A 变为 (0,1)。
- 第 2 次操作:在 1 后插入 2。A 变为 (0,1,2)。
- 第 3 次操作:在 0 后插入 3。A 变为 (0,3,1,2)。
- 第 4 次操作:删除 2 和 3 之间的元素,也就是 1,输出 1。A 变为 (0,3,2)。
- 第 5 次操作:在 2 后插入 5。A 变为 (0,3,2,5)。
- 第 6 次操作:删除 0 和 5 之间的元素,即 3,2,输出 5。A 变为 (0,5)。
样例解释 2
第 2 次操作中,删除 0 和 1 之间的元素,但它们之间其实没有元素,所以输出 0。
数据范围
- 1≤Q≤5×105
- 对于第 i 个操作:
- 若为 1 类型操作:
- 0≤x<i
- 操作前 A 中一定包含 x。
- 若为 2 类型操作:
- 0≤x<y<i
- 操作前 A 中一定包含 x 和 y。
- 若为 1 类型操作:
- 所有输入均为整数。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?