并不对劲的bzoj1861: [Zjoi2006]Book 书架
传送门->
这题的正确做法是splay维护这摞书。
但是并不对劲的人选择了暴力(皮这一下很开心)。
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<vector>
#define rep(i,x,y) for(register int i=(x);i<=(y);++i)
#define dwn(i,x,y) for(register int i=(x);i>=(y);--i)
#define re register
#define maxn 300010
using namespace std;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(isdigit(ch)==0 && ch!='-')ch=getchar();
if(ch=='-')f=-1,ch=getchar();
while(isdigit(ch))x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}
inline void write(int x)
{
int f=0;char ch[20];
if(!x){puts("0");return;}
if(x<0){putchar('-');x=-x;}
while(x)ch[++f]=x%10+'0',x/=10;
while(f)putchar(ch[f--]);
putchar('\n');
}
int a[maxn],tr[maxn],pos[maxn],n,m,qx,qy,hd,tl;
char s[20];
int lt(int x){return x&(-x);}
void add(int x,int k){for(;x<=n+m*2;x+=lt(x))tr[x]+=k;}
int ask(int x){int k=0;for(;x;x-=lt(x))k+=tr[x];return k;}
int kth(int k)
{
int l=hd,r=tl,ans=tl+233;
while(l<=r)
{
int mi=(r+l)>>1;
int rank=ask(mi);
if(rank==k)ans=min(ans,mi);
if(rank>=k)r=mi-1;
else l=mi+1;
}
return ans;
}
int main()
{
n=read(),m=read();hd=1+m,tl=n+m;
rep(i,1,n)a[i+m]=read(),pos[a[i+m]]=i+m,add(i+m,1);
rep(k,1,m)
{
scanf("%s",s);qx=read();
if(s[0]=='T')add(pos[qx],-1),hd--,add(hd,1),swap(a[hd],a[pos[qx]]),pos[qx]=hd;
if(s[0]=='B')add(pos[qx],-1),tl++,add(tl,1),swap(a[tl],a[pos[qx]]),pos[qx]=tl;
if(s[0]=='I')
{
qy=read();if(!qy)continue;
int tmp=ask(pos[qx])+qy;
// cout<<"rank:"<<tmp<<endl;
int ans=kth(tmp);
// cout<<"ans&pos:"<<qx<<" "<<a[ans]<<pos[qx]<<" ";
int px=pos[qx];
swap(pos[qx],pos[a[ans]]);swap(a[px],a[ans]);// cout<<pos[qx]<<endl;
}
if(s[0]=='A')write(ask(pos[qx])-1);
if(s[0]=='Q')
{
int ans=kth(qx);
write(a[ans]);
}
//cout<<"a:"<<endl;
//rep(i,1,n+m*2)cout<<a[i]<<" ";cout<<endl;
//cout<<"pos:"<<endl;
//rep(i,1,n)cout<<pos[i]<<" ";cout<<endl;
}
return 0;
}
/*
10 10
1 3 2 7 5 8 10 4 9 6
Query 3
Top 5
Ask 6
Bottom 3
Ask 3
Top 6
Insert 4 -1
Query 5
Query 2
Ask 2
*/
据说照顾了splay的大肠腧的数据为暴力提供了漏洞。
并不对劲的bzoj1861: [Zjoi2006]Book 书架的更多相关文章
- [BZOJ1861][Zjoi2006]Book 书架
[BZOJ1861][Zjoi2006]Book 书架 试题描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候 ...
- [bzoj1861][Zjoi2006]Book 书架_非旋转Treap
Book 书架 bzoj-1861 Zjoi-2006 题目大意:给你一个序列,支持:将指定编号的元素抽出,放到序列顶(底):将指定编号元素左右篡位:查询指定编号元素位置:查询指定数量位置元素编号. ...
- fhq_treap || BZOJ1861: [Zjoi2006]Book 书架 || Luogu P2596 [ZJOI2006]书架
题面:P2596 [ZJOI2006]书架 题解:记录每本书对应的节点编号 普通fhq_treap无法查询一个权值的排名,所以在普通fhq_treap上多记录每个节点的父亲(可加在pushup函数中) ...
- BZOJ1861[ZJOI2006]Book书架
Description 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下 ...
- 【平衡树】【pb_ds】 bzoj1861 [Zjoi2006]Book 书架
需要用数组记录编号为i的书的位置,和位置i处的书的编号. Code: #include<cstdio> #include<ext/pb_ds/assoc_container.hpp& ...
- 【权值分块】bzoj1861 [Zjoi2006]Book 书架
权值分块……rank3……没什么好说的. #include<cstdio> #include<cmath> #include<algorithm> using na ...
- bzoj1861 [Zjoi2006]Book 书架 splay
小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些书太有吸引 ...
- bzoj1861 [Zjoi2006]Book 书架——splay
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1861 发现自己想splay的时候总是纠结那个点权是什么,因为splay原本是二分查找树... ...
- BZOJ 1861: [Zjoi2006]Book 书架
1861: [Zjoi2006]Book 书架 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 1290 Solved: 740[Submit][Stat ...
随机推荐
- css装饰文本框input
在web程序前端页面中,<input>恐怕是用的最多的html元素了,各个需要录入信息的场合都会用到它,一般都会用css来修饰一下使得它更好看. 原始的不加修饰的文本框像下面,有些单调,页 ...
- FZU1004-Number Triangle经典动归题,核心思路及代码优化
Problem 1004 Number Triangle Accept: 2230 Submit: 5895Time Limit: 1000 mSec Memory Limit : 327 ...
- SQL2012通用分页存储过程
--提取分页数据,返回总记录数 Createprocedure [dbo].[sp_Common_GetDataPaging_ReturnDataCount] ( @SqlString varchar ...
- GO 语言周报【七月第 1 期】
TIOBE 七月排名 Go 进入前十 TIOBE 七月头条:Go 语言达到历史最高并进入前十.对于 Go 语言来说,这是一个里程碑时刻,我们可以更大胆地想象,它下一步的发展会达到怎样的高度.Go 是否 ...
- hihoCoder#1196 : 高斯消元·二(开关灯问题)
传送门 高斯消元解异或方程组 小Ho在游戏板上忙碌了30分钟,任然没有办法完成,于是他只好求助于小Hi. 小Ho:小Hi,这次又该怎么办呢? 小Hi:让我们来分析一下吧. 首先对于每一个格子的状态,可 ...
- 【网络流】codeforces C. Heidi and Library (hard)
http://codeforces.com/contest/802/problem/C
- [USACO13NOV]空荡荡的摊位Empty Stalls
题目描述 Farmer John's new barn consists of a huge circle of N stalls (2 <= N <= 3,000,000), numbe ...
- 51nod1184 第N个质数
如题.$n \leq 1e9$. 方法零:二分,然后洲阁筛.要魔改一下的洲阁筛.跑得慢.卡卡能过.没意思. //#include<iostream> #include<cstring ...
- php 基础复习 2018-06-19
(1)date()函数 如果从代码返回的不是正确的时间,有可能是因为您的服务器位于其他国家或者被设置为不同时区. 因此,如果您需要基于具体位置的准确时间,您可以设置要用的时区. date_defaul ...
- 洛谷——P3353 在你窗外闪耀的星星
P3353 在你窗外闪耀的星星 题目描述 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向 ...