BZOJ 3744: Gty的妹子序列 [分块]
传送门
题意:询问区间内逆序对数
感觉这种题都成套路题了
两个预处理$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的妹子序列 [分块]相关推荐
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- bzoj3744 Gty的妹子序列
3744: Gty的妹子序列 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 967 Solved: 293 [ Submit][ Status ...
- #BZOJ3744 GTY的妹子序列
Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他 ...
- BZOJ 3720: Gty的妹子树 [树上size分块]
传送门 题意: 一棵树,询问子树中权值大于$k$的节点个数,修改点权值,插入新点:强制在线 一开始以为询问多少种不同的权值,那道CF的强制在线带修改版,直接吓哭 然后发现看错了这不一道树上分块水题.. ...
- bzoj3744: Gty的妹子序列 (BIT 分块)
强制在线的区间询问逆序对数 如果不是强制在线 就是可以用莫队乱搞啦 强制在线的话 用f[i][j]记录第i块到第j个点之间的逆序对数 用s[i][j]记录前i块中小于等于j的数字个数 离散化一下 BI ...
- BZOJ3809: Gty的二逼妹子序列
BZOJ3809: Gty的二逼妹子序列 又是一道权限题... 本蒟蒻没钱氪金... 附上洛谷题面: 洛谷P4867 Gty的二逼妹子序列 题目描述 Autumn和Bakser又在研究Gty的妹子序列 ...
- [BZOJ3809]Gty的二逼妹子序列
[BZOJ3809]Gty的二逼妹子序列 试题描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽 ...
- BZOJ 1798: [Ahoi2009]Seq 维护序列seq
二次联通门 : BZOJ 1798: [Ahoi2009]Seq 维护序列seq /*BZOJ 1798: [Ahoi2009]Seq 维护序列seq线段树主要是标记的顺序下放问题...乱搞一下就好. ...
- P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】
正题 题目链接:https://www.luogu.com.cn/problem/P4867 题目大意 一个序列要求支持询问一个区间[l,r][l,r][l,r]内在[a,b][a,b][a,b]之间 ...
- 【bzoj3089】gty的二逼妹子序列
一眼又是个莫队-- 首先看这时间/空间复杂度,线段树/主席树就别想了-- 然后么--zcy就有点傻了-- 于是zcy看了下hzwer,感觉受教育了. 分块的调块大小真是玄学设计. 有没有一种方法在修改 ...
最新文章
- 写好 Python 代码的几条原则
- memset函数详细说明
- SAP SD交货单凭证流里的Confirmation of Service初探 II
- Linux mount挂载umount卸载
- iOS PUSH功能图文教程链接
- PandasSQL语法归纳总结,真的太全了
- 业务专题篇:用户使用路径分析
- mysql在线快速修改密码_MySQL修改密码的几种方式
- freemarker中遇到null报错的处理方法
- win8学习--------File
- 动手学深度学习(PyTorch实现)(八)--AlexNet模型
- MATLAB学习笔记(十二)
- listen函数的第二个参数_signal(SIGPIPE,?SIG_IGN)listen函数中backlog参数分析
- 字节跳动单点恢复功能及 Regional CheckPoint 优化实践
- navicat for MySQl破解版下载与安装
- 现代软件工程 第十五章 【稳定和发布阶段】练习与讨论
- 如何批量将ofd转换为PDF格式
- 杭州/北京内推 | 蚂蚁集团数字身份及安全生态团队招聘学术实习生
- 甜在心馒头店通过泊松分布解决备货烦恼
- 仿QQ登录界面UI设计
热门文章
- indesign教程,如何创建对齐参考线?
- iOS 审核之 Performance - 2.5.2 被拒 dlopen(), dlsym(), respondsToSelector:, performSelector
- EaseUS Data Recovery Wizard 如何在Mac上恢复已删除文件?
- mycat基础实验之主从配置读写分离和分表
- idea 添加 golang 项目的 gopath
- NodeJS Stream 三:readable
- 玩转树莓派-2.配置你的树莓派
- phpwind8.7升级9.0.1过程(三)20130107升级到20130227
- Web应用程序的目录结构
- 第三方物流(Third Party Logistics,3PL)