我是萌萌的传送门

感觉这题还是不错的……虽然其实算是比较水的题= =

首先分块,令f[i][j]表示第i块到第j块的逆序对数,询问的时候直接计算不完整块与完整块以及不完整块之间的逆序对。

不完整块之间的逆序对直接树状数组暴力求,至于不完整块和完整块的逆序对,我是令s[i]表示前i块的权值前缀和,这样单次查询O(1),可以减小一点常数,代价是空间稍微费了点……

预处理O(nsqrt(n)logn),单次查询O(sqrt(n)logn),空间O(nsqrt(n)),好吧我懒得算如何调节块大小来降低复杂度了,于是就随便找了个233当的块大小= =

细节并不多,然而因为各种脑残错误调了半天才敢交,又因为没看见要离散化和没加强制在线RE两次,真是废了……

 /**************************************************************
Problem: 3744
User: hzoier
Language: C++
Result: Accepted
Time:9688 ms
Memory:49700 kb
****************************************************************/ #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=,B=,maxb=;
void add(int,int);
int query(int);
int a[maxn],b[maxn],id[maxn],L[maxb]={},R[maxb]={},cntb,f[maxb][maxb]={{}},s[maxb][maxn]={{}},c[maxn]={};
int n,m,l,r,lb,rb,ans=;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
cntb=id[i]=(i-)/B+;
if(!L[id[i]])L[id[i]]=i;
R[id[i]]=i;
}
copy(a+,a+n+,b+);
sort(b+,b+n+);
for(int i=;i<=n;i++)s[id[i]][a[i]=lower_bound(b+,b+n+,a[i])-b]++;
for(int i=;i<=cntb;i++){
for(int j=;j<=n;j++)s[i][j]+=s[i-][j];
for(int j=i;j<=cntb;j++){
for(int k=L[j];k<=R[j];k++){
f[i][j]+=query(a[k]+);
add(a[k],);
}
f[i][j]+=f[i][j-];
}
memset(c,,sizeof(c));
}
for(int i=;i<=cntb;i++)for(int j=;j<=n;j++)s[i][j]+=s[i][j-];
scanf("%d",&m);
while(m--){
scanf("%d%d",&l,&r);
l^=ans;r^=ans;
if(id[l]>=id[r]-){
ans=;
for(int i=l;i<=r;i++){
ans+=query(a[i]+);
add(a[i],);
}
for(int i=l;i<=r;i++)add(a[i],-);
}
else{
lb=id[l]+;rb=id[r]-;
ans=f[lb][rb];
for(int i=l;i<L[lb];i++){
ans+=query(a[i]+)+s[rb][a[i]-]-s[lb-][a[i]-];
add(a[i],);
}
for(int i=R[rb]+;i<=r;i++){
ans+=query(a[i]+)+(s[rb][n]-s[rb][a[i]])-(s[lb-][n]-s[lb-][a[i]]);
add(a[i],);
}
for(int i=l;i<L[lb];i++)add(a[i],-);
for(int i=R[rb]+;i<=r;i++)add(a[i],-);
}
printf("%d\n",ans);
}
return ;
}
void add(int x,int d){
while(x){
c[x]+=d;
x&=x-;
}
}
int query(int x){
int ans=;
while(x<=n){
ans+=c[x];
x+=x&-x;
}
return ans;
}

bzoj3744 Gty的妹子序列的更多相关文章

  1. 【分块】【树状数组】bzoj3744 Gty的妹子序列

    离散化,分块. 预处理出:ans[i][j] 第i块到第j块的逆序对数. f[i][j] 第1~i块中大于j的数的个数. g[i][j] 第1~j块中小于j的数的个数. 每次询问时对于整块部分可以O( ...

  2. BZOJ3744 Gty的妹子序列(分块+树状数组)

    题意 询问区间内逆序对数  强制在线 1<=n<=50000 1<=m<=50000 题解 两个预处理f[i][j]为块i到j的逆序对数,s[i][j]前i块≤j的有多少个边角 ...

  3. bzoj3744: Gty的妹子序列 (BIT && 分块)

    强制在线的区间询问逆序对数 如果不是强制在线 就是可以用莫队乱搞啦 强制在线的话 用f[i][j]记录第i块到第j个点之间的逆序对数 用s[i][j]记录前i块中小于等于j的数字个数 离散化一下 BI ...

  4. 【BZOJ3744】Gty的妹子序列 分块+树状数组

    [BZOJ3744]Gty的妹子序列 Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzo ...

  5. bzoj 3744: Gty的妹子序列 主席树+分块

    3744: Gty的妹子序列 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 101  Solved: 34[Submit][Status] Descr ...

  6. BZOJ 3744 Gty的妹子序列 (分块 + BIT)

    3744: Gty的妹子序列 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1931  Solved: 570[Submit][Status][Dis ...

  7. BZOJ 3744: Gty的妹子序列 【分块 + 树状数组 + 主席树】

    任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3744 3744: Gty的妹子序列 Time Limit: 20 Sec  Memory ...

  8. 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树

    题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...

  9. BZOJ 3744 Gty的妹子序列

    Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树上掉落下来了许多妹子,他发现 她们排成了一个序 ...

随机推荐

  1. 《Redis入门指南(第二版)》读书思考总结之Redis五大数据类型

    热身:系统级命令 1. 获得符合规则的键名列表 KEYS pattern 模式匹配 产品的缓存:product+"."+....;  => keys product* 订单的 ...

  2. Mysql查询——深入学习

    1.开篇 之前上一篇的随笔基本上是单表的查询,也是mysql查询的一个基本.接下来我们要看看两个表以上的查询如何得到我们想要的结果. 在学习的过程中我们一起进步,成长.有什么写的不对的还望可以指出. ...

  3. 51nod 最小周长

    1283 最小周长 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 一个矩形的面积为S,已知该矩形的边长都是整数,求所有 ...

  4. swfit-学习笔记(表UITableView的简单使用)

    /*使用与Object-C基本类似,只做简单地使用,创建表及其设置数据源和代理*/ import UIKit class ViewController: UIViewController,UITabl ...

  5. BZOJ 1711: [Usaco2007 Open]Dining吃饭

    1711: [Usaco2007 Open]Dining吃饭 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 902  Solved: 476[Submit ...

  6. Linux磁盘分区及配额123

    实验目的: 在现有磁盘的基础上进行分区格式化并为特定用户实施磁盘配额,使其对磁盘这一分区的写入有一定的限制 前期准备: 在我的虚拟机rhel7上有/dev/sda这一分区和fsy这一用户,我将对/de ...

  7. CSS3 border-image 属性

    border-image 属性是一个简写属性,用于设置以下属性: border-image-source 用在边框的图片的路径,默认值none. 如:border-image-source:url(b ...

  8. spring batch资料收集

    spring batch官网 Spring Batch在大型企业中的最佳实践 一篇文章全面解析大数据批处理框架Spring Batch Spring Batch系列总括

  9. mysql5.7安装配置

    sonar要求mysql5.6版本,所以安装一下最新的mysql5.7 相对路径配置一直存在问题,所以采用绝对路径配置,本次配置的基础路径是: D:\sonar\mysql-5.7.17-winx64 ...

  10. coreseek操作

    开启服务$  /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf 重新索引: /usr/local/coresee ...