BZOJ3744: Gty的妹子序列

https://lydsy.com/JudgeOnline/problem.php?id=3744

分析:

  • 预处理出来每一块块首到所有位置的逆序对数。
  • 查询时主席树上查即可。
  • 卡常

代码:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
using namespace std;
#define N 60050
typedef int ll;
int n,a[N],m;
int blo,size,L[N],R[N],pos[N];
int siz[N*23],ls[N*23],rs[N*23],cnt,V[N],ln,root[N];
ll ansblo[305][N];
void update(int l,int r,int x,int &p,int q) {
p=++cnt; siz[p]=siz[q]+1; ls[p]=ls[q]; rs[p]=rs[q];
if(l==r) return ;
int mid=(l+r)>>1;
if(x<=mid) update(l,mid,x,ls[p],ls[q]);
else update(mid+1,r,x,rs[p],rs[q]);
}
int qmnx(int l,int r,int x,int p,int q) {
if(l==r) return l<=x?siz[q]-siz[p]:0;
int mid=(l+r)>>1;
if(x<=mid) return qmnx(l,mid,x,ls[p],ls[q]);
else return qmnx(mid+1,r,x,rs[p],rs[q])+siz[ls[q]]-siz[ls[p]];
}
int qmxx(int l,int r,int x,int p,int q) {
if(l==r) return l>=x?siz[q]-siz[p]:0;
int mid=(l+r)>>1;
if(x<=mid) return qmxx(l,mid,x,ls[p],ls[q])+siz[rs[q]]-siz[rs[p]];
else return qmxx(mid+1,r,x,rs[p],rs[q]);
}
ll work(int x,int y) {
int p=pos[x],q=pos[y],i;
ll re=0;
if(p==q) {
for(i=x+1;i<=y;i++) {
re+=qmxx(1,ln,a[i]+1,root[x-1],root[i-1]);
}
return re;
}
re=ansblo[p+1][y];
for(i=R[p];i>=x;i--) {
re+=qmnx(1,ln,a[i]-1,root[i],root[y]);
}
return re;
}
int s[N];
void fix(int x){for(;x<=ln;x+=x&-x)s[x]++;}
int find(int x){int ret=0;for(;x;x-=x&-x)ret+=s[x];return ret;}
int main() {
///////////////////////////////////////////////////////////////////////////////////////////////
///*////////////////*/freopen("noon.in","r",stdin); freopen("noon.out","w",stdout);//////////////
///////////////////////////////////////////////////////////////////////////////////////////////
scanf("%d",&n);
int i,j,x,y,k;
size=sqrt(n);
blo=(n+size-1)/size;
for(i=1;i<=n;i++) scanf("%d",&a[i]),V[i]=a[i];
sort(V+1,V+n+1);
ln=unique(V+1,V+n+1)-V-1;
for(i=1;i<=n;i++) a[i]=lower_bound(V+1,V+ln+1,a[i])-V;
for(i=1;i<=n;i++) {
update(1,ln,a[i],root[i],root[i-1]);
}
for(i=1;i<=blo;i++) {
L[i]=R[i-1]+1; R[i]=min(i*size,n);
for(j=L[i];j<=R[i];j++) {
pos[j]=i;
}
}
for(i=1;i<=blo;i++) {
memset(s,0,sizeof(s));
for(j=L[i];j<=n;j++) {
ansblo[i][j]=ansblo[i][j-1]+j-L[i]-find(a[j]);
fix(a[j]);
}
}
scanf("%d",&m);
ll ans=0;
while(m--) {
scanf("%d%d",&x,&y);
x^=ans; y^=ans;
ans=work(x,y);
printf("%d\n",ans);
}
}

BZOJ_3744_Gty的妹子序列的更多相关文章

  1. BZOJ 3809: Gty的二逼妹子序列

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1387  Solved: 400[Submit][Status][Di ...

  2. 【BZOJ-3809】Gty的二逼妹子序列 分块 + 莫队算法

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1072  Solved: 292[Submit][Status][Di ...

  3. BZOJ3809: Gty的二逼妹子序列

    Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题.   对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数.   为了方 ...

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

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

  5. Bzoj 3809: Gty的二逼妹子序列 莫队,分块

    3809: Gty的二逼妹子序列 Time Limit: 35 Sec  Memory Limit: 28 MBSubmit: 868  Solved: 234[Submit][Status][Dis ...

  6. BZOJ 3744 Gty的妹子序列

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

  7. 【bzoj3809】Gty的二逼妹子序列

    Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方便,我们 ...

  8. BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块

    BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块 Description Autumn和Bakser又在研究Gty的妹子序列了 ...

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

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

随机推荐

  1. DisplayPort的时钟隐藏和时钟恢复

    转:DisplayPort的时钟隐藏和时钟恢复 无时钟线的视频数据传输是DP协议的一大特点,将时钟信号隐藏在数据中是传输协议的设计趋势.时钟恢复技术也是DP芯片设计的关键技术.在这说一下在发送端时钟是 ...

  2. jquery插件函数传参错误

    1.jquery传参通过json,可能的错误是,参数中的结束符写成了;

  3. GenericServlet 、Servlet和httpServler他们之间的关系

    1.GenericServlet类是所有Servlet类的祖先类. 2.HttpServlet类继承了GenericServlet类. 3.Servlet有两个非常重要的的对象,可以说是java we ...

  4. CentOS 6.9上安装Mysql 5.7.18 安装

    CentOS 6.9上安装Mysql 5.7.18 安装 下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-g ...

  5. ubuntu14.04设置sublime text3为默认文本编辑器

    更新时间2017年07月20日17:35:04 原来的方法貌似并不试用,现在才发现,其实ubuntu下也和Windows下一样... 右键,属性,然后如图所示 set as default 即可. 之 ...

  6. python 基础 7.2 时间格式的相互转换

    #/usr/bin/python #coding=utf-8 #@Time   :2017/11/9 8:55 #@Auther :liuzhenchuan #@File   :时间格式的相互转换.p ...

  7. wamp环境配置;转自发瑞的博客(www.cnblogs.com/cyrfr/p/6483529.html)

    php手动搭建环境有好多种组合,版本号不一致,会导致搭建失败. 我搭建的组合是: php5.6+MySQL5.6+Apache2.4的组合. 一.PHP语言包下载 首先从官网上下载php5.6 htt ...

  8. 【BZOJ4453】cys就是要拿英魂! 后缀数组+单调栈+set

    [BZOJ4453]cys就是要拿英魂! Description pps又开始dota视频直播了!一群每天被pps虐的蒟蒻决定学习pps的操作技术,他们把pps在这局放的技能记录了下来,每个技能用一个 ...

  9. 【BZOJ4519】[Cqoi2016]不同的最小割 最小割树

    [BZOJ4519][Cqoi2016]不同的最小割 Description 学过图论的同学都知道最小割的概念:对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分 ...

  10. EasyNVR H5无插件摄像机直播解决方案前端解析之:引用videojs无法自动播放

    关于videojs自动播放问题 播放流媒体多使用videojs来进行播放,videojs,本身自带自动播放属性: 通过添加autoplay(),来完成视频播放的自动加载: player = video ...