比赛场次 | 605 |
---|---|
比赛名称 | SYOI 专题 5:扫描线 |
比赛状态 | 已结束比赛成绩 |
开始时间 | 2024-04-23 19:00:00 |
结束时间 | 2024-04-26 22:00:00 |
开放分组 | 全部用户 |
注释介绍 | 部分题目无公开链接, 见讲稿:https://www.luogu.com/paste/zbkw262g |
题目名称 | 丹钓战 |
---|---|
输入输出 | noi_online2022_stack.in/out |
时间限制 | 1000 ms (1 s) |
内存限制 | 512 MiB |
测试点数 | 20 简单对比 |
用户 | 结果 | 时间 | 内存 | 得分 |
---|
有$n$个二元组$(a_i,b_i)$,编号为$1$到$n$。
有一个初始为空的栈 $S$,向其中加入元素$(a_i,b_i)$时,先不断弹出栈顶元素直至栈空或栈顶元素$(a_j,b_j)$满足$a_i\neq a_j$且 $b_i< b_j$,然后再将其加入栈中。
如果一个二元组入栈后栈内只有这一个元素,则称该二元组是“成功的”。
有 $q$ 个询问$[l_i,r_i]$,表示若将编号在$[l_i,r_i]$中的二元组按编号从小到大依次入栈,会有多少个二元组是“成功的”。
询问之间相互独立。
第一行两个正整数 $n,q$。
第二行 $n$ 个正整数表示 $a_i$。
第三行 $n$ 个正整数表示 $b_i$。
接下来 $q$ 行,每行两个正整数 $l_i,r_i$, 表示一组询问。
$q$ 行,每行一个自然数表示一组询问的答案。
10 4 3 1 3 1 2 3 3 2 1 1 10 10 2 9 7 5 4 7 6 1 1 4 7 8 7 10 1 8
3 2 2 3
以第一次询问 [1,4] 为例。
一开始栈为 {}。
加入 1 号二元组后栈为 {(3,10)},栈中只有一个元素,该二元组是“成功的”。
加入 2 号二元组 (1,10) 时,栈顶的 (3,10) 的 b 值不大于 2 号二元组的,因此弹栈。此时栈空,2号二元组入栈,栈为 {(1,10)},该二元组是“成功的”。
加入 3 号二元组 (3,2),此时栈顶元素与之 a 值不同,b 值比它更大,因而不需要弹栈,直接将3 号二元组入栈,栈为 {(1,10),(3,2)},栈中有多个元素,该二元组不是“成功的”。
加入 4 号二元组 (1,9),此时栈顶元素 (3,2) 的 b 值比它小,弹栈。弹栈后栈顶元素 (1,10) 与(1,9) 的 a 值相同,继续弹栈。此时栈空,4 号二元组入栈,栈为 {(1,9)},该二元组是“成功的”。
共有 3 个二元组是“成功的”,因而答案为 3。
对于所有测试点:$1\leq n,q\leq 5\times 10^5,1\leq a_i,b_i\leq n,1\leq l_i,r_i\leq n$。
每个测试点的具体限制见下表:
NOI Online 2022 1st 提高组 T1