传送门

题意:询问区间内逆序对数


感觉这种题都成套路题了

两个预处理$f[i][j]$块i到j的逆序对数,$s[i][j]$前i块$\le j$的有多少个

f我直接处理成到元素j,方便一点

用个树状数组就行了

预处理和查询都带$log$所以还是开根号n比较科学吧

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=5e4+5, M=300;
inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}return x*f;
}int n, a[N], Q, mp[N], l, r;
struct meow{int l,r;} b[M];
int block, m, pos[N];
inline void ini(){block=sqrt(n); m=(n-1)/block+1;for(int i=1;i<=n;i++) pos[i]=(i-1)/block+1;for(int i=1;i<=m;i++) b[i].l=(i-1)*block+1, b[i].r=i*block;b[m].r=n;
}
struct Block{int c[N];inline void add(int p,int v) {for(;p<=*mp;p+=(p&-p)) c[p]+=v;}inline int sum(int p) {int re=0; for(;p;p-=(p&-p)) re+=c[p]; return re;}int f[M][N], s[M][N];void Set(int x){for(int i=b[x].l; i<=n; i++)f[x][i]= f[x][i-1]+sum(*mp)-sum(a[i]), add(a[i], 1);// printf("f %d %d  %d\n",x,i,f[x][i]);memset(c, 0, sizeof(c));for(int i=b[x].l; i<=b[x].r; i++) s[x][a[i]]++; for(int i=1; i<=*mp; i++) s[x][i]+= s[x][i-1];for(int i=1; i<=*mp; i++) s[x][i]+= s[x-1][i];// printf("s %d %d  %d\n",x,i,s[x][i]);;
    }int Que(int l,int r){int pl=pos[l], pr=pos[r];int ans=0;if(pl==pr){for(int i=l;i<=r;i++) ans+= sum(*mp)-sum(a[i]), add(a[i], 1);for(int i=l;i<=r;i++) add(a[i], -1);}else{ans= f[pl+1][r]; //printf("ans %d \n",ans);for(int i=b[pr].l; i<=r; i++) add(a[i], 1);for(int i=b[pl].r; i>=l; i--) ans+= sum(a[i]-1) + s[pr-1][a[i]-1] - s[pl][a[i]-1], add(a[i], 1);for(int i=b[pr].l; i<=r; i++) add(a[i], -1);for(int i=l; i<=b[pl].r; i++) add(a[i], -1);}return ans;}
}B;
int main(){freopen("in","r",stdin);n=read();for(int i=1;i<=n;i++) a[i]=mp[i]=read();sort(mp+1, mp+1+n); *mp=unique(mp+1, mp+1+n) - mp - 1;for(int i=1;i<=n;i++) a[i]=lower_bound(mp+1, mp+1+*mp, a[i]) - mp;//for(int i=1;i<=n;i++) printf("%d ",a[i]); puts("");
    ini();for(int i=1;i<=m;i++) B.Set(i);Q=read(); int lastans=0;while(Q--){//l=read(), r=read();l=read()^lastans, r=read()^lastans;if(l>r) swap(l, r);lastans=B.Que(l, r); printf("%d\n",lastans);}
}

转载于:https://www.cnblogs.com/candy99/p/6579556.html

BZOJ 3744: Gty的妹子序列 [分块]相关推荐

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

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

  2. bzoj3744 Gty的妹子序列

    3744: Gty的妹子序列 Time Limit: 20 Sec   Memory Limit: 128 MB Submit: 967   Solved: 293 [ Submit][ Status ...

  3. #BZOJ3744 GTY的妹子序列

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

  4. BZOJ 3720: Gty的妹子树 [树上size分块]

    传送门 题意: 一棵树,询问子树中权值大于$k$的节点个数,修改点权值,插入新点:强制在线 一开始以为询问多少种不同的权值,那道CF的强制在线带修改版,直接吓哭 然后发现看错了这不一道树上分块水题.. ...

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

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

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

    BZOJ3809: Gty的二逼妹子序列 又是一道权限题... 本蒟蒻没钱氪金... 附上洛谷题面: 洛谷P4867 Gty的二逼妹子序列 题目描述 Autumn和Bakser又在研究Gty的妹子序列 ...

  7. [BZOJ3809]Gty的二逼妹子序列

    [BZOJ3809]Gty的二逼妹子序列 试题描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽 ...

  8. BZOJ 1798: [Ahoi2009]Seq 维护序列seq

    二次联通门 : BZOJ 1798: [Ahoi2009]Seq 维护序列seq /*BZOJ 1798: [Ahoi2009]Seq 维护序列seq线段树主要是标记的顺序下放问题...乱搞一下就好. ...

  9. P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】

    正题 题目链接:https://www.luogu.com.cn/problem/P4867 题目大意 一个序列要求支持询问一个区间[l,r][l,r][l,r]内在[a,b][a,b][a,b]之间 ...

  10. 【bzoj3089】gty的二逼妹子序列

    一眼又是个莫队-- 首先看这时间/空间复杂度,线段树/主席树就别想了-- 然后么--zcy就有点傻了-- 于是zcy看了下hzwer,感觉受教育了. 分块的调块大小真是玄学设计. 有没有一种方法在修改 ...

最新文章

  1. 写好 Python 代码的几条原则
  2. memset函数详细说明
  3. SAP SD交货单凭证流里的Confirmation of Service初探 II
  4. Linux mount挂载umount卸载
  5. iOS PUSH功能图文教程链接
  6. PandasSQL语法归纳总结,真的太全了
  7. 业务专题篇:用户使用路径分析
  8. mysql在线快速修改密码_MySQL修改密码的几种方式
  9. freemarker中遇到null报错的处理方法
  10. win8学习--------File
  11. 动手学深度学习(PyTorch实现)(八)--AlexNet模型
  12. MATLAB学习笔记(十二)
  13. listen函数的第二个参数_signal(SIGPIPE,?SIG_IGN)listen函数中backlog参数分析
  14. 字节跳动单点恢复功能及 Regional CheckPoint 优化实践
  15. navicat for MySQl破解版下载与安装
  16. 现代软件工程 第十五章 【稳定和发布阶段】练习与讨论
  17. 如何批量将ofd转换为PDF格式
  18. 杭州/北京内推 | 蚂蚁集团数字身份及安全生态团队招聘学术实习生
  19. 甜在心馒头店通过泊松分布解决备货烦恼
  20. 仿QQ登录界面UI设计

热门文章

  1. indesign教程,如何创建对齐参考线?
  2. iOS 审核之 Performance - 2.5.2 被拒 dlopen(), dlsym(), respondsToSelector:, performSelector
  3. EaseUS Data Recovery Wizard 如何在Mac上恢复已删除文件?
  4. mycat基础实验之主从配置读写分离和分表
  5. idea 添加 golang 项目的 gopath
  6. NodeJS Stream 三:readable
  7. 玩转树莓派-2.配置你的树莓派
  8. phpwind8.7升级9.0.1过程(三)20130107升级到20130227
  9. Web应用程序的目录结构
  10. 第三方物流(Third Party Logistics,3PL)