大力分块+树状数组+主席树……

#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的妹子序列的更多相关文章

  1. bzoj3744 Gty的妹子序列

    我是萌萌的传送门 感觉这题还是不错的--虽然其实算是比较水的题= = 首先分块,令f[i][j]表示第i块到第j块的逆序对数,询问的时候直接计算不完整块与完整块以及不完整块之间的逆序对. 不完整块之间 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. BZOJ 3744 Gty的妹子序列

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

随机推荐

  1. (转)基于CUDA的GPU光线追踪

    作者:Asixa 链接:https://zhuanlan.zhihu.com/p/55855479 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.     替STL. ...

  2. 使用CodeBlocks为你的程序添加程序文件图标和启动读入图标

    其实也非常简单,自己这两天用win32api做了一个小程序,可是发现图标却是dos的,太难看了,于是就想起以前学win32汇编时候用到的工具,ResEd,已经被我汉化了一些,估计有新的版本发布吧,但是 ...

  3. Eureka搭建

    Eureka搭建 一.Eureka基本框架搭建 pom.xml文件配置:主要是引入Eureka所依赖的jar包 <?xml version="1.0" encoding=&q ...

  4. SQLServer数据库慢查询追踪

    不喜欢跟研发扯淡,说点击功能慢,是网络.服务器.运维的锅, 甩手给你打开慢查询,时间超过5s的全部抓取,已经很仁慈了,才抓取大于5s的SQL语句..... SQL SERVER 2014数据库慢查询追 ...

  5. 软工实践 - 第二十八次作业 Beta 冲刺(6/7)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10146478.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...

  6. java文件的I/O

    [原创] java文件的I/O操作,简单来说就是向文件中写入数据以及从文件中读出数据,这是我们平日做的最多的操作,这里给出两种文件I/O操作,当然还有许多的操作方法,各种流的使用,可谓是高深莫测:不管 ...

  7. 【SSH】——Struts2中的动态方法调用(二)

    当action中的方法有很多时,那应该怎么调用呢?上次我们提到的UserAction类中只有一个execute方法,如果我们需要增加用户的增删改查方法,如下: public class UserAct ...

  8. PhalApi 1.4.2 经典封存版 - 码云

    https://www.phalapi.net/ PhalApi 1.x 是经典封存版本,已停止更新,历练考验,可放心使用. 主要采用PEAR命名规范,遵循PSR-0,不支持命名空间和composer ...

  9. Struts1文件上传

    package org.zln.struts.domain; import org.apache.struts.upload.FormFile; /** * Created by sherry on ...

  10. AOJ.559 丢失的数字

    丢失的数字 Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 1552 Submission Accepted: 273 Descri ...