权值分块……rank3……没什么好说的。

 #include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,sz,sum,x,y,l[],r[],Min,Max,sumv[],num[],m,v[],p[];
bool b[];
char op[],c;
int Num,CH[],f;
inline void R(int &x){
c=;f=;
for(;c<''||c>'';c=getchar())if(c=='-')f=-;
for(x=;c>=''&&c<='';c=getchar())(x*=)+=(c-'');
x*=f;
}
inline void P(int x)
{
if(!x){putchar('');puts("");return;}
if(x<){putchar('-');x=-x;}Num=;
while(x>)CH[++Num]=x%,x/=;
while(Num)putchar(CH[Num--]+);puts("");
}
void makeblock(const int &LIMIT)
{
sz=sqrt((double)LIMIT*0.9); if(!sz) sz=;
for(sum=;sum*sz<LIMIT;++sum)
{
l[sum]=r[sum-]+;
r[sum]=sum*sz;
for(int i=l[sum];i<=r[sum];++i) num[i]=sum;
}
l[sum]=r[sum-]+;
r[sum]=LIMIT;
for(int i=l[sum];i<=r[sum];++i) num[i]=sum;
}
inline void Insert(const int &x){b[x]=; ++sumv[num[x]];}
inline void Delete(const int &x){b[x]=; --sumv[num[x]];}
inline int Next(const int &x)
{
for(int i=x+;i<=r[num[x]];++i) if(b[i]) return i;
for(int i=num[x]+;;++i) if(sumv[i])
for(int j=l[i];;++j)
if(b[j]) return j;
}
inline int Pre(const int &x)
{
for(int i=x-;i>=l[num[x]];--i) if(b[i]) return i;
for(int i=num[x]-;;--i) if(sumv[i])
for(int j=r[i];;--j)
if(b[j]) return j;
}
inline int Rank(const int &x)
{
int cnt=;
for(int i=num[Min];i<num[x];++i) cnt+=sumv[i];
for(int i=l[num[x]];i<x;++i) cnt+=b[i];
return cnt;
}
inline int Kth(const int &x)
{
int cnt=;
for(int i=num[Min];;++i)
{
cnt+=sumv[i];
if(cnt>=x)
{
cnt-=sumv[i];
for(int j=l[i];;++j)
{cnt+=b[j]; if(cnt==x) return j;}
}
}
}
int main()
{
R(n); R(m); makeblock(n+(m<<));
for(int i=;i<=n;++i)
{
R(v[i+m]);
Insert(p[v[i+m]]=i+m);
} Min=+m; Max=n+m;
for(int i=;i<=m;++i)
{
scanf("%s",op); R(x);
if(op[]=='T')
{
Delete(p[x]);
v[p[x]=--Min]=x;
Insert(Min);
}
else if(op[]=='B')
{
Delete(p[x]);
v[p[x]=++Max]=x;
Insert(Max);
}
else if(op[]=='I')
{
R(y); if(y==-)
{
swap(v[p[x]],v[Pre(p[x])]);
swap(p[x],p[v[p[x]]]);
}
else if(y==)
{
swap(v[p[x]],v[Next(p[x])]);
swap(p[x],p[v[p[x]]]);
}
}
else if(op[]=='A') P(Rank(p[x]));
else P(v[Kth(x)]);
}
return ;
}

【权值分块】bzoj1861 [Zjoi2006]Book 书架的更多相关文章

  1. [BZOJ1861][Zjoi2006]Book 书架

    [BZOJ1861][Zjoi2006]Book 书架 试题描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候 ...

  2. 2019.01.08 bzoj3809: Gty的二逼妹子序列(莫队+权值分块)

    传送门 题意:多组询问,问区间[l,r]中权值在[a,b]间的数的种类数. 看了一眼大家应该都知道要莫队了吧. 然后很容易想到用树状数组优化修改和查询做到O(mnlogamax)O(m\sqrt nl ...

  3. 2018.11.07 NOIP训练 L的鞋子(权值分块+莫队)

    传送门 乱搞题. 我直接对权值分块+莫队水过了. 不过调了30min30min30min发现ststst表挂了是真的不想说什么233. 代码

  4. 【莫队算法】【权值分块】bzoj3920 Yuuna的礼物

    [算法一] 暴力. 可以通过第0.1号测试点. 预计得分:20分. [算法二] 经典问题:区间众数,数据范围也不是很大,因此我们可以: ①分块,离散化,预处理出: <1>前i块中x出现的次 ...

  5. 【莫队算法】【权值分块】bzoj3585 mex

    orz PoPoQQQ. 本来蒟蒻以为这种离散化以后就对应不起来的题不能权值分块搞的说. ……结果,实际上>n的权值不会对答案作出贡献. #include<cstdio> #incl ...

  6. 【带修莫队】【权值分块】bzoj3196 Tyvj 1730 二逼平衡树

    这题用了三种算法写: 分块+二分:O(n*sqrt(n*log(n)) 函数式权值分块:O(n*sqrt(n)) 带修莫队+权值分块:O(n5/3) 结果……复杂度越高的实际上跑得越快……最后这个竟然 ...

  7. 【树链剖分】【函数式权值分块】bzoj1146 [CTSC2008]网络管理Network

    裸题,直接上.复杂度O(n*sqrt(n)*log(n)). //Num[i]表示树中的点i在函数式权值分块中对应的点 //Map[i]表示函数式权值分块中的点i在树中对应的点 #include< ...

  8. 【莫队算法】【权值分块】bzoj2223 [Coci 2009]PATULJCI

    不带修改主席树裸题<=>莫队+权值分块裸题. 复杂度O(m*sqrt(n)). P.S.题目描述坑爹,第二个数是权值的范围. #include<cstdio> #include ...

  9. 【函数式权值分块】【分块】bzoj3196 Tyvj 1730 二逼平衡树

    #include<cstdio> #include<cmath> #include<algorithm> using namespace std; #define ...

随机推荐

  1. Codeforces Round #520 (Div. 2) B. Math

    B. Math time limit per test:1 second memory limit per test:256 megabytes Description: JATC's math te ...

  2. Collection与Map的对比

    Map:HashMap.HashTable  如何在它们之间选择  一.Array , Arrays  Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种.  1.  效率高, ...

  3. 团队代码中Bug太多怎么办?怎样稳步提高团队的代码质量

    最近负责的Android APP项目,由于团队成员变动.界面改版导致代码大幅修改等原因,产品发布后屡屡出现BUG导致的程序崩溃. 经过对异常统计和代码走读,BUG主要集中在空指针引起的NullPoin ...

  4. HDFS 的Trash回收站

    1)在core-site.xml文件中添加这个配置 在每个节点(不仅仅是主节点)上添加配置 core-site.xml,增加如下内容 <property> <name>fs.t ...

  5. 【洛谷 SP283】NAPTIME - Naptime(DP)

    题目链接 先考虑如果只有一天,那么该怎么做. 设\(f[i][j][1]\)表示前\(i\)个小时睡了\(j\)个小时并且第\(j\)个小时正在睡觉时的最大体力,\(f[i][j][1]\)表示前\( ...

  6. Python小程序之sed命令替换

    需求: 编写sed命令脚本 代码如下 # Author:Lee Sir import sys,os des_file = r'E:\StartPython\day3\test.txt' des_fil ...

  7. 美团网技术团队分享的MySQL索引及慢查询优化教程

    MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位 ...

  8. text-overflow的用法

    在平时的网页制作中一定碰到过内容溢出的问题,比如说文章列表很长,而其宽度又受到限制,此时超出宽度的内容就会以(...)显示.以前实现这样的效果都是由后台程序截取一定的字符数在前台输出,另外一种方法就是 ...

  9. sql ---- count 误区

    select count(字段名) from table group by 字段; 分组后的内容统计. count统计的字段是 不包括空的数据.

  10. JWT是什么?

    # 转载请留言联系 什么是JWT? Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的 ...