Codeforces Round #515 (Div. 3) C. Books Queries (模拟)
2024-08-29 00:48:43
题意:有一个一维的书架,\(L\)表示在最左端放一本书,\(R\)表示在最右端放一本书,\(?\)表示从左数或从右数,最少数多少次才能得到要找的书.
题解:我们开一个稍微大一点的数组,从它的中间开始模拟,\(L\)就--\(l\)放进去,\(R\)就++\(r\)放进去,然后每次更新某一本书的最新位置,因为后放的肯定离最左侧或最右侧最近,然后两端求差弄个最小值就行.
代码:
int q;
char c;
int idx;
int ans;
int mp[2*N],now[2*N]; int main() {
ios::sync_with_stdio(false);cin.tie(0);
cin>>q;
int l=N+1,r=N;
for(int i=1;i<=q;++i){
cin>>c>>idx;
if(c=='L'){
mp[--l]=idx;
now[idx]=l;
}
else if(c=='R'){
mp[++r]=idx;
now[idx]=r;
}
else{
ans=min(now[idx]-l,r-now[idx]);
cout<<ans<<endl;
}
}
return 0;
}
最新文章
- java并发编程(八)多线程环境下安全使用集合
- Memcached和Memcache安装(64位win7)
- 流式布局&;固定宽度&;响应式&;rem
- Soket编程
- (六)6.6 Neurons Networks PCA
- [转] C#中绘制矢量图形
- velocity自定义动画
- ZendFramework2 文件结构
- java 写文件解析
- java中读取特殊文件的类型
- 关于HTTP请求、Ajax请求,请求的同步和异步
- jsp篇 之 jsp中的注释
- 2.解决虚拟机中centos联网的问题
- 原创SQlServer数据库生成简单的说明文档包含(存储过程、视图、数据库批量备份)小工具(附源码)
- 由 POST 400 错误拔出来的萝卜
- 80端口被占用 导致apach无法启动问题
- centos7升级内核版本
- 关于set和map迭代器支持的运算
- 通过plsql develop查看建表语句
- mingw 搭建Emscripten 环境