【bzoj3744】GTY的妹子序列
大力分块+树状数组+主席树……
#include<bits/stdc++.h>
#define N 50005
#define pa pair<int,int>
#define fi first
#define sc second
using namespace std;
int n,m,cnt,tot,size,t;
int a[N],c[N],num[N],rt[N];
int sum[][N];
inline int lowbit(int x){return (x&(-x));}
pa b[N];
struct Persistenable_Segment_Tree{
int ls[*N],rs[*N],size[*N],cnt;
void ins(int &x,int pre,int l,int r,int q){
x=++cnt;size[x]=size[pre]+;
if(l==r)return;
ls[x]=ls[pre];rs[x]=rs[pre];
int mid=(l+r)>>;
if(q<=mid)ins(ls[x],ls[pre],l,mid,q);
else ins(rs[x],rs[pre],mid+,r,q);
}
int query(int x,int pre,int l,int r,int ql,int qr){
if(size[x]==size[pre])return ;
if(ql<=l&&r<=qr)return size[pre]-size[x];
int mid=(l+r)>>,ans=;
if(ql<=mid)ans+=query(ls[x],ls[pre],l,mid,ql,qr);
if(qr>mid)ans+=query(rs[x],rs[pre],mid+,r,ql,qr);
return ans;
}
}T;
inline void add(int x,int val){
for(int i=x;i<=tot;i+=lowbit(i))c[i]+=val;
}
inline int ask(int x){
int ans=;
for(int i=x;i;i-=lowbit(i))ans+=c[i];
return ans;
}
//bit
int query(int x,int y){
int ans=;
if(num[x]==num[y]){
memset(c,,sizeof(c));
for(int i=x;i<=y;++i)ans+=ask(tot)-ask(a[i]),add(a[i],);
return ans;
}
ans=sum[num[x]+][y];
for(register int i=x;i<=size*num[x];++i)ans+=T.query(rt[i],rt[y],,tot,,a[i]-);
return ans;
}
//block
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int LastOrder=;
int main(){
n=read();size=round(sqrt(n));
for(int i=;i<=n;i++)b[i].fi=read(),b[i].sc=i;
sort(b+,b+n+);
for(int i=;i<=n;i++){
if(i==|b[i].fi!=b[i-].fi)++tot;
a[b[i].sc]=tot;
}
for(int i=;i<=n;i++)T.ins(rt[i],rt[i-],,tot,a[i]);
for(int i=;i<=n;i++)num[i]=(i-)/size+;
for(int i=;i<=num[n];i++){
memset(c,,sizeof(c));
for(int j=(i-)*size+;j<=n;j++){
sum[i][j]=sum[i][j-]+ask(tot)-ask(a[j]);
add(a[j],);
}
}
m=read();
for(int i=;i<=m;i++){
int x=read(),y=read();x^=LastOrder;y^=LastOrder;
LastOrder=query(x,y);
printf("%d\n",LastOrder);
}
return ;
}
【bzoj3744】GTY的妹子序列的更多相关文章
- bzoj3744 Gty的妹子序列
我是萌萌的传送门 感觉这题还是不错的--虽然其实算是比较水的题= = 首先分块,令f[i][j]表示第i块到第j块的逆序对数,询问的时候直接计算不完整块与完整块以及不完整块之间的逆序对. 不完整块之间 ...
- 【分块】【树状数组】bzoj3744 Gty的妹子序列
离散化,分块. 预处理出:ans[i][j] 第i块到第j块的逆序对数. f[i][j] 第1~i块中大于j的数的个数. g[i][j] 第1~j块中小于j的数的个数. 每次询问时对于整块部分可以O( ...
- BZOJ3744 Gty的妹子序列(分块+树状数组)
题意 询问区间内逆序对数 强制在线 1<=n<=50000 1<=m<=50000 题解 两个预处理f[i][j]为块i到j的逆序对数,s[i][j]前i块≤j的有多少个边角 ...
- bzoj3744: Gty的妹子序列 (BIT && 分块)
强制在线的区间询问逆序对数 如果不是强制在线 就是可以用莫队乱搞啦 强制在线的话 用f[i][j]记录第i块到第j个点之间的逆序对数 用s[i][j]记录前i块中小于等于j的数字个数 离散化一下 BI ...
- 【BZOJ3744】Gty的妹子序列 分块+树状数组
[BZOJ3744]Gty的妹子序列 Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzo ...
- bzoj 3744: Gty的妹子序列 主席树+分块
3744: Gty的妹子序列 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 101 Solved: 34[Submit][Status] Descr ...
- BZOJ 3744 Gty的妹子序列 (分块 + BIT)
3744: Gty的妹子序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1931 Solved: 570[Submit][Status][Dis ...
- BZOJ 3744: Gty的妹子序列 【分块 + 树状数组 + 主席树】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3744 3744: Gty的妹子序列 Time Limit: 20 Sec Memory ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- BZOJ 3744 Gty的妹子序列
Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树上掉落下来了许多妹子,他发现 她们排成了一个序 ...
随机推荐
- JVM 什么时候会触发FGC
1:System.gc(); 2:老年代满了 没啥好说的从年轻代去往老年代的 3:JDK7或JDK6中永久区满了 得看是否还会有分配,如果没有就不会进行FGC,不过CMS GC下会看到不停地CMS G ...
- [Linux] umount目录提示device is busy的解决方法
使用sshfs等方式挂载的目录出现问题时,使用umount卸载经常提示device is busy,如果仔细阅读错误提示就可以找到命令lsof和fuser命令. 其实原因就是有进程占用当前目录,导致不 ...
- 一个简单的NetCore项目:2 - 登录
1-UI,登陆界面布局 PS:使用的是metronic 框架,没有用过的可以自行百度. 1.1 metronic 放在wwwroot文件夹下面 1.2 metronic 中的 open sans 使 ...
- iOS-调用百度地图,苹果自带地图,高德地图,谷歌地图导航方法
- (void)actionSheet : (ServiceNetworkModel *)model{ __block NSString *urlScheme = @"demoURI://& ...
- 【Autofac】- 创建的类的生命周期
1.InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例.这也是默认的创建实例的方式. 官方文档解释:Configure the component so tha ...
- JavaScript中常用转义字符
\b 退格 \f 换页 \r 回车 \n 换行 \" 双引号 \' 单引号 \t Tab字符 \\ 反斜杠 \xnn 十六进制代码nn表示的字符 \unnnn 十 ...
- ElasticSearch1.7.1拼音插件elasticsearch-analysis-pinyin-1.3.3使用介绍
ElasticSearch拼音插件elasticsearch-analysis-pinyin使用介绍 https://my.oschina.net/xiaohui249/blog/214505 摘要: ...
- jquery/js iframe 元素操作
1.判断id/ class 是否存在? <script> $(function(){ if(("#id_name").length()>0){ //如果id 存在 ...
- Codeforces Round #268 (Div. 1) 468D Tree(杜教题+树的重心+线段树+set)
题目大意 给出一棵树,边上有权值,要求给出一个1到n的排列p,使得sigma d(i, pi)最大,且p的字典序尽量小. d(u, v)为树上两点u和v的距离 题解:一开始没看出来p需要每个数都不同, ...
- timeSetEvent()函数
原文链接地址:http://www.cnblogs.com/kangwang1988/archive/2010/09/16/1827872.html 微软公司在其多媒体Windows中提供了精确定时器 ...