bzoj3744: Gty的妹子序列 (BIT && 分块)
强制在线的区间询问逆序对数
如果不是强制在线
就是可以用莫队乱搞啦
强制在线的话
用f[i][j]记录第i块到第j个点之间的逆序对数
用s[i][j]记录前i块中小于等于j的数字个数
离散化一下
BIT用来处理需要暴力的地方即可
下面是代码
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
#define isdigit(x) (x <= '9' && x >= '0')
#define lowbit(x) (x & (-x))
const int N = 5e4 + ;
const int M = ; struct s {
int u, v;
inline bool operator < (const s &o) const {
return u < o.u;
}
} a[N]; inline void read(int &ans) {
ans = ;
static char buf = getchar();
for (; !isdigit(buf); buf = getchar());
for (; isdigit(buf); buf = getchar())
ans = ans * + buf - '';
} int n, cnt, maxn, sz;
int s[M][N], f[M][N], c[N], d[N], b[N]; inline void add(int x, int a) {
while (x <= maxn) {
c[x] += a;
x += lowbit(x);
}
} inline int query(int x) {
int ans = ;
while (x > ) {
ans += c[x];
x -= lowbit(x);
}
return ans;
} inline void work(int x) {
int h = (x - ) * sz + ;
int t = x * sz;
for (int i = h; i <= n; i++)
add(d[i], ), f[x][i] = f[x][i - ] + i - h + - query(d[i]);
memset(c, , sizeof(c));
for (int i = h; i <= t; i++) s[x][d[i]]++;
for (int i = ; i <= maxn; i++) s[x][i] += s[x][i - ];
for (int i = ; i <= maxn; i++) s[x][i] += s[x - ][i];
} int main() {
read(n);
sz = sqrt(n);
for (int i = ; i <= n; i++) {
read(a[i].u); a[i].v = i;
b[i] = (i - ) / sz + ;
}
cnt = b[n];
sort(a + , a + n + );
int last = ; d[a[].v] = ;
for (int i = ; i <= n; i++) {
if (a[i].u == a[i - ].u) d[a[i].v] = last;
else d[a[i].v] = ++last;
}
maxn = last;
for (int i = ; i <= cnt; i++)
work(i);
int m; read(m);
int ans = ;
while (m--) {
int l, r;
read(l); read(r);
l = l ^ ans; r = r ^ ans;
ans = ;
if (l > r) swap(l, r);
if (b[l] == b[r]) {
for (int i = l; i <= r; i++)
add(d[i], ), ans += i - l + - query(d[i]);
for (int i = l; i <= r; i++) add(d[i], -);
}
else {
ans = f[b[l] + ][r];
for (int i = (b[r] - ) * sz + ; i <= r; i++) add(d[i], );
for (int i = b[l] * sz; i >= l; i--)
add(d[i], ), ans += query(d[i] - ) + s[b[r] - ][d[i] - ] - s[b[l]][d[i] - ];
for (int i = (b[r] - ) * sz + ; i <= r; i++) add(d[i], -);
for (int i = l; i <= b[l] * sz; i++) add(d[i], -);
}
printf("%d\n", ans);
}
}
bzoj3744: Gty的妹子序列 (BIT && 分块)的更多相关文章
- BZOJ3744 Gty的妹子序列(分块+树状数组)
题意 询问区间内逆序对数 强制在线 1<=n<=50000 1<=m<=50000 题解 两个预处理f[i][j]为块i到j的逆序对数,s[i][j]前i块≤j的有多少个边角 ...
- BZOJ 3744: Gty的妹子序列 【分块 + 树状数组 + 主席树】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3744 3744: Gty的妹子序列 Time Limit: 20 Sec Memory ...
- 【分块】【树状数组】bzoj3744 Gty的妹子序列
离散化,分块. 预处理出:ans[i][j] 第i块到第j块的逆序对数. f[i][j] 第1~i块中大于j的数的个数. g[i][j] 第1~j块中小于j的数的个数. 每次询问时对于整块部分可以O( ...
- bzoj3744 Gty的妹子序列
我是萌萌的传送门 感觉这题还是不错的--虽然其实算是比较水的题= = 首先分块,令f[i][j]表示第i块到第j块的逆序对数,询问的时候直接计算不完整块与完整块以及不完整块之间的逆序对. 不完整块之间 ...
- 【BZOJ3744】Gty的妹子序列 分块+树状数组
[BZOJ3744]Gty的妹子序列 Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzo ...
- BZOJ 3744 Gty的妹子序列 (分块 + BIT)
3744: Gty的妹子序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1931 Solved: 570[Submit][Status][Dis ...
- bzoj 3744: Gty的妹子序列 主席树+分块
3744: Gty的妹子序列 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 101 Solved: 34[Submit][Status] Descr ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- BZOJ 3744 Gty的妹子序列
Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树上掉落下来了许多妹子,他发现 她们排成了一个序 ...
随机推荐
- gulp常用插件之cssnano使用
更多gulp常用插件使用请访问:gulp常用插件汇总 cssnano这是一款将你的 CSS 文件做 多方面的的优化,以确保最终生成的文件 对生产环境来说体积是最小的插件. 更多使用文档请点击访问cha ...
- bugku-求getshell(文件上传)
这道题最主要是考的Content-type参数绕过WAF,然后利用绕过黑名单上传php进行解析. 先上传一个phpinfo()的php文件试试,burp抓包 正常操作,先将下面文件的类型改为:imag ...
- idea中如何配置git以及在idea中初始化git,并push到码云
一.给idea配置git 打开IDEA,按照路径 Fie-->Settings --> Tools -->Terminal 找到后设置右边的Shell path(自己安装的Git路 ...
- Eigen库学习---Map类
Eigen中定义了一系列的vector和matrix,相比copy数据,更一般的方式是复用数据的内存,将它们转变为Eigen类型.Map类很好地实现了这个功能. Map定义 Map(PointerAr ...
- 微信小程序:如何判断数组中的条数?
可以<view wx:if="{{list.length == 0}}"> </view> 可以在 {{}} 内进行简单的运算,包括三元运算符.逻辑判断.算 ...
- LED Holiday Light-5 Mm Wide Angle Cone Lights: Pros
But in rare cases, the opposite is true: the opinions of consultants are so synchronized that it is ...
- PP: Neural tensor factorization
relational data. Neural collaborative filtering and recurrent recommender systems have been successf ...
- js前端模块化的前世今生
前言: <!DOCTYPE html> <html> <head> <title></title> </head> <sc ...
- OpenCV3.0 + VS2015出现“ACCESS_MASK不明确”错误
问题:Vs 使用openCV 3.0+ 出错error C2872: “ACCESS_MASK”: 不明确的符号 环境: 系统:Win7 环境:VS2015 64bit 原因: 是因为我项目中的其中一 ...
- 简单的Spring1.0小配置
开始Spring AOP的小理解 拿一个小例子来说吧! 老师上课 这样的例子! 老师上课--就是一个核心的业务! 那么上课之前需要点名,天气太热,需要开空调! 这个时候,一个老 ...