bzoj3744: Gty的妹子序列 (BIT 分块)
强制在线的区间询问逆序对数
如果不是强制在线
就是可以用莫队乱搞啦
强制在线的话
用f[i][j]记录第i块到第j个点之间的逆序对数
用s[i][j]记录前i块中小于等于j的数字个数
离散化一下
BIT用来处理需要暴力的地方即可
下面是代码
1 #include <cstdio> 2 #include <algorithm> 3 #include <cmath> 4 #include <cstring> 5 using namespace std; 6 #define isdigit(x) (x <= '9' && x >= '0') 7 #define lowbit(x) (x & (-x)) 8 const int N = 5e4 + 5; 9 const int M = 300; 10 11 struct s { 12 int u, v; 13 inline bool operator < (const s &o) const { 14 return u < o.u; 15 } 16 } a[N]; 17 18 inline void read(int &ans) { 19 ans = 0; 20 static char buf = getchar(); 21 for (; !isdigit(buf); buf = getchar()); 22 for (; isdigit(buf); buf = getchar()) 23 ans = ans * 10 + buf - '0'; 24 } 25 26 int n, cnt, maxn, sz; 27 int s[M][N], f[M][N], c[N], d[N], b[N]; 28 29 inline void add(int x, int a) { 30 while (x <= maxn) { 31 c[x] += a; 32 x += lowbit(x); 33 } 34 } 35 36 inline int query(int x) { 37 int ans = 0; 38 while (x > 0) { 39 ans += c[x]; 40 x -= lowbit(x); 41 } 42 return ans; 43 } 44 45 inline void work(int x) { 46 int h = (x - 1) * sz + 1; 47 int t = x * sz; 48 for (int i = h; i <= n; i++) 49 add(d[i], 1), f[x][i] = f[x][i - 1] + i - h + 1 - query(d[i]); 50 memset(c, 0, sizeof(c)); 51 for (int i = h; i <= t; i++) s[x][d[i]]++; 52 for (int i = 1; i <= maxn; i++) s[x][i] += s[x][i - 1]; 53 for (int i = 1; i <= maxn; i++) s[x][i] += s[x - 1][i]; 54 } 55 56 int main() { 57 read(n); 58 sz = sqrt(n); 59 for (int i = 1; i <= n; i++) { 60 read(a[i].u); a[i].v = i; 61 b[i] = (i - 1) / sz + 1; 62 } 63 cnt = b[n]; 64 sort(a + 1, a + n + 1); 65 int last = 1; d[a[1].v] = 1; 66 for (int i = 2; i <= n; i++) { 67 if (a[i].u == a[i - 1].u) d[a[i].v] = last; 68 else d[a[i].v] = ++last; 69 } 70 maxn = last; 71 for (int i = 1; i <= cnt; i++) 72 work(i); 73 int m; read(m); 74 int ans = 0; 75 while (m--) { 76 int l, r; 77 read(l); read(r); 78 l = l ^ ans; r = r ^ ans; 79 ans = 0; 80 if (l > r) swap(l, r); 81 if (b[l] == b[r]) { 82 for (int i = l; i <= r; i++) 83 add(d[i], 1), ans += i - l + 1 - query(d[i]); 84 for (int i = l; i <= r; i++) add(d[i], -1); 85 } 86 else { 87 ans = f[b[l] + 1][r]; 88 for (int i = (b[r] - 1) * sz + 1; i <= r; i++) add(d[i], 1); 89 for (int i = b[l] * sz; i >= l; i--) 90 add(d[i], 1), ans += query(d[i] - 1) + s[b[r] - 1][d[i] - 1] - s[b[l]][d[i] - 1]; 91 for (int i = (b[r] - 1) * sz + 1; i <= r; i++) add(d[i], -1); 92 for (int i = l; i <= b[l] * sz; i++) add(d[i], -1); 93 } 94 printf("%d\n", ans); 95 } 96 }
转载于:https://www.cnblogs.com/cminus/p/8571228.html
bzoj3744: Gty的妹子序列 (BIT 分块)相关推荐
- bzoj3744 Gty的妹子序列
3744: Gty的妹子序列 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 967 Solved: 293 [ Submit][ Status ...
- #BZOJ3744 GTY的妹子序列
Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他 ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- BZOJ3809: Gty的二逼妹子序列
BZOJ3809: Gty的二逼妹子序列 又是一道权限题... 本蒟蒻没钱氪金... 附上洛谷题面: 洛谷P4867 Gty的二逼妹子序列 题目描述 Autumn和Bakser又在研究Gty的妹子序列 ...
- [BZOJ3809]Gty的二逼妹子序列
[BZOJ3809]Gty的二逼妹子序列 试题描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽 ...
- 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,感觉受教育了. 分块的调块大小真是玄学设计. 有没有一种方法在修改 ...
- BZOJ 3720: Gty的妹子树 [树上size分块]
传送门 题意: 一棵树,询问子树中权值大于$k$的节点个数,修改点权值,插入新点:强制在线 一开始以为询问多少种不同的权值,那道CF的强制在线带修改版,直接吓哭 然后发现看错了这不一道树上分块水题.. ...
- 洛谷T46780 ZJL 的妹子序列(生成函数)
题面 传送门 题解 这居然是一道语文题? 首先不难看出,因为每一次相邻元素交换最多减少一个逆序对,所以至少\(m\)次交换就代表这个序列的逆序对个数为\(m\) 我们考虑一下,假设现在已经放完了\(i ...
最新文章
- 择天记手游的服务器维护世界,1130停服更新公告
- java线程太多卡顿_性能优化之卡顿延迟
- windows2003添加普通用户的远程桌面权限
- GPU云服务器深度学习性能模型初探
- 数据库只有mdf文件而没有ldf文件,如何恢复数据库
- 大规模图嵌入 示例_ICLR 2020 | 基于谱方法的高效多级图嵌入框架
- Spring+SpringMVC+maven使用@aspectJ添加切面
- Community Server Resources
- python 构造http请求对象-Request对象
- SpringMVC初写(四)上传和下载功能的实现
- 28 《暗时间》 -豆瓣评分8.4
- 前端笔记 -- 不重复造轮子(遇到就更新内容)
- 【离散数学】单射、满射、双射、映射的合成与逆映射
- 检测号码是否开通微信如何做?
- 计算机毕业设计ssm东湖爱心系统的众筹设计和实现t4a84系统+程序+源码+lw+远程部署
- 生成式对抗网络(GAN)实战——书法字体生成练习赛
- 山西最新道路运输安全员模拟真题集及答案解析
- 公众号运营引流月吸万粉之互推
- Java更改 PDF 页面大小
- ChatGPT能完全取代软件开发吗,看看它怎么回答?
热门文章
- Java-Android【2】-弹出对话框
- [jQuery]回到顶部
- 《Effective C#》Item 14:使用构造函数初始化语句
- git进阶(撤销pull、撤销merge、撤销add)
- 最近在搞react redux react-router等,
- HIT Software Construction Review Notes(0-1 Introduction to the Course)
- JavaScript学习(八十五)—数据类型的转换
- 报错:Unchecked runtime.lastError:Could not establish connection. Receiving end does not exist.
- 一个没有担当的领导,通常会有哪些表现?
- 宇宙大爆炸是不是一个黑洞的大爆炸?