EVERYTHING HAPPENS FOR THE BEST!|

wnsyou

园龄:2年4个月粉丝:19关注:16

2023-03-14 23:07阅读: 24评论: 0推荐: 0

CF1066C Books Queries 题解

Books Queries

题意

有一个序列,初始为空。

q 次询问,每次询问为以下三种操作中的一种:

  1. L x,一个大写字母 L,和一个编号 x,表示将 x 放入序列最左边。
  2. R x,一个大写字母 R,和一个编号 x,表示将 x 放入序列最右边。
  3. ? x,一个问号 ?,和一个编号 x,询问 x 距离序列最左端或者最右端的距离最小值,每行输出一个答案

保证 x 在询问时已经在序列中,保证 x 不会重复放入序列。

数据范围

  • 1q,x2×105

思路

这题其实绕一点点思路。

这里只是问它距离序列最左端和最右端的距离的最小值,并不要求整个序列,所以只需要记录一下每个 x、队头还有队尾对应着哪个数值即可。

注意,为了不出现队列中有空的部分导致的答案出错的问题,队尾对应的数值应该初始化为-1

复杂度

  • 时间:O(q)
  • 空间:O(x)

Code

点击查看代码
#include <iostream>
using namespace std;
const int N = 2e5 + 10;
int t_, x, a[N], h, t = -1; // 初始化细节
char c;
int main(){
ios::sync_with_stdio(0), cin.tie(0);
for (cin >> t_; t_; t_--) {
cin >> c >> x;
if (c == 'L') {
a[x] = --h; // 记录对应数值
} else if (c == 'R') {
a[x] = ++t;
} else {
cout << min(t - a[x], a[x] - h) << '\n'; // O(1) 处理询问!
}
}
return 0;
}

本文作者:wnsyou の blog

本文链接:https://www.cnblogs.com/wnsyou-blog/p/17216820.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wnsyou  阅读(24)  评论(0编辑  收藏  举报
  1. 1 勝利への道 安藤浩和
  2. 2 Minecraft’s End Eric Fullerton
  3. 3 月光曲完整版 贝多芬 云熙音乐
  4. 4 平凡之路 (Live版) 朴树
  5. 5 Minecraft C418
  6. 6 Paradise NiziU
  7. 7 叫我,灰原哀 龙大人不喷火
  8. 8 心机之蛙,一直摸你肚子 ——《名侦探柯南》原创同人曲 炊饭,叶辞樱,温海,寒砧,南柯柯,小茜玛姬,盛姝,阿崔Ac,贝壳初,千湛,兮茶子DaYu,乔慕,黎鹿北,起千温卿,遮阳伞,曲悠
  9. 9 战 歌 此去经年
战 歌 - 此去经年
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 此去经年

作曲 : 此去经年

编曲 : 此去经年

啊啊啊啊啊

啊啊啊啊

啊啊啊

啊啊

加载中…

{{tag.name}}

{{tran.text}}{{tran.sub}}
无对应文字
有可能是
{{input}}
尚未录入,我来提交对应文字
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示