BZOJ 3787: Gty的文艺妹子序列
3787: Gty的文艺妹子序列
Time Limit: 50 Sec Memory Limit: 256 MB
Submit: 186 Solved: 58
[Submit][Status][Discuss]
Description
Input
Output
对每个询问,单独输出一行,表示al...ar中的逆序对数。对每个询问,单独输出一行,表示al...ar中的逆序对数。
Sample Input
1 7 5 6 9 4 9 4 4 7
10
0 4 6
0 5 8
0 1 10
1 25 19
0 19 25
1 14 4
0 12 12
0 2 5
1 8 7
1 1 10
Sample Output
3
16
13
0
2
HINT
Source
又是分块,然后LincHpin给出了一个和PoPoQQQ很像的做法,我则选择另外的一种。客观地讲,两者的理论复杂度都是$O(N\sqrt{N}log(N))$,代码难度也都那样(不会太简单)。
大爷的方法
预处理
先分块,预处理块内逆序对,维护块内权值。然后G[i][j]表示第i块和第j块形成的逆序对,即统计了所有一个在第i块,一个在第j块的逆序对,这个也是一开始预处理一下,第一维暴力,第二维树状数组维护。因为妹子颜值的大小不会太大,所以可以开个数组E[i][j]表示前i块内颜值为j的妹子个数,简单与处理一下就有了。还需要用S[i][j]表示前i块内颜值小于等于j的妹子数量,类似于E[i][j]的前缀和,第一维暴力,第二维树状数组维护。
查询
查询区间分为两种:左右边界处的零碎妹子,中间块内的大把妹子。
零碎妹子内部暴力,和中间妹子产生的逆序对直接通过E,S数组求出来,复杂度$O(\sqrt{N}log(N))$。
中间大把妹子也属于多个分块,先加上每个分块内部的逆序对,再加上$\sum{G[i][j]}$,这个第一维暴力枚举,第二维在树状数组中查询,复杂度$O(\sqrt{N}log(N))$。
修改
修改一个妹子的颜值时,块内逆序对的变化可以直接对块进行暴力重做,复杂度$O(\sqrt{N}log(N))$,改变该块的权值线段树,$O(log(N))$。
考虑对G[i][j]的影响,只有$O(\sqrt{N})$个G[i][j]包含该妹子(即该妹子所在的块),因为每个块维护了权值线段树,单个改动是$O(log(N))$的,所以总复杂度$O(\sqrt{N}log(N))$。
考虑对E[i][j]的影响,只有$O(\sqrt{N})$个E[i][j]需要改动,单个改动是$O(1)$的,总的复杂度是$O(\sqrt{N})$。
考虑对S[i][j]的影响,只有$O(\sqrt{N})$个E[i][j]需要改动,单个改动是$O(log(N))$的,总的复杂度是$O(\sqrt{N}log(N))$。
蒟蒻(小生)的方法
基本的分块还是和大爷一样的,G[i][j]表示从第i块到第j块的区间内的逆序对数,用树状数组套主席树维护区间权值分布并支持单点修改。
查询就是直接取出中间的大把妹子,从G[i][j]中查询答案,暴力扫描两侧的零碎妹子,用权值主席树处理其和大把妹子产生的逆序对。
修改主要是考虑到G[i][j]的问题。大爷起初认为G[i][j]一共有N个,所以不能快速修改。但是发现可以这么考虑:
设修改妹子在块k
所有i<k的G都会被修改,暴力枚举一下i的话,对于一个i,只有满足j>k的G[i][j]才会被累加上i到k这一区间产生的改变量,对于一个i这是个区间加问题。
所有j>k的G都会被修改,暴力枚举一下j的话,对于一个j,只有满足i<k的G[i][j]才会被累加上k到j这一区间产生的改变量,对于一个j这是个区间加问题。
所以分开维护固定i,j时产生的改变量,做$O(\sqrt{N})$次区间加(线段树或树状数组支持),每次取出G[i][j]的时候都额外查询一下[i][j]上的标记即可。
@Author: YouSiki
BZOJ 3787: Gty的文艺妹子序列的更多相关文章
- BZOJ 3787: Gty的文艺妹子序列 [分块 树状数组!]
传送门 题意:单点修改,询问区间内逆序对数,强制在线 看到加了!就说明花了不少时间.... 如果和上题一样预处理信息,用$f[i][j]$表示块i到j的逆序对数 强行修改的话,每个修改最多会修改$(\ ...
- BZOJ 3787 Gty的文艺妹子序列(分块+树状数组+前缀和)
题意 给出n个数,要求支持单点修改和区间逆序对,强制在线. n,m<=50000 题解 和不带修改差不多,预处理出smaller[i][j]代表前i块小于j的数的数量,但不能用f[i][j]代表 ...
- BZOJ3787:Gty的文艺妹子序列(分块,树状数组)
Description Autumn终于会求区间逆序对了!Bakser神犇决定再考验一下他,他说道: “在Gty的妹子序列里,某个妹子的美丽度可也是会变化的呢.你还能求出某个区间中妹子们美丽度的逆序对 ...
- BZOJ3787 : Gty的文艺妹子序列
将序列分成$\sqrt{n}$块,预处理出每两块之间的逆序对数,以及ap[i]表示前i块内数字出现次数的树状数组 预处理:$O(n\sqrt{n}\log n)$ 修改时,ap[i]可以在$O(\sq ...
- BZOJ3787 gty的文艺妹子序列 【树状数组】【分块】
题目分析: 首先这种乱七八糟的题目就分块.然后考虑逆序对的统计. 一是块内的,二是块之间的,三是一个块内一个块外,四是都在块外. 令分块大小为$S$. 块内的容易维护,单次维护时间是$O(S)$. 块 ...
- 【分块】【树状数组】bzoj3787 Gty的文艺妹子序列
题解懒得自己写了,Orz一发wangxz神犇的: http://bakser.gitcafe.com/2014/12/04/bzoj3787-Gty%E7%9A%84%E6%96%87%E8%89%B ...
- [BZOJ 3731] Gty的超级妹子树 (树分块)
[BZOJ 3731] Gty的超级妹子树 (树分块) 题面 给出一棵树(或森林),每个点都有一个值.现在有四种操作 1.查询x子树里>y的值有多少个 2.把点x的值改成y 3.添加一个新节点, ...
- BZOJ 3809Gty的二逼妹子序列 解题报告+data marker
--BZOJ http://www.lydsy.com/JudgeOnline/problem.php?id=3809 考虑对l,r跑莫队,对一组维护美丽度出现次数的桶修改, 然后把桶序列用分块维护查 ...
- BZOJ 3809: Gty的二逼妹子序列
3809: Gty的二逼妹子序列 Time Limit: 80 Sec Memory Limit: 28 MBSubmit: 1387 Solved: 400[Submit][Status][Di ...
随机推荐
- SICP读书笔记 3.1
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- 比较undefined和“undefined”
说实话,它们之间的区别挺明显的,我们一般认为undefined是JavaScript提供的一个“关键字”,而“undefined”却是一个字符串,只是引号的内容和undefined一样. undefi ...
- Netty源码分析第2章(NioEventLoop)---->第2节: NioEventLoopGroup之NioEventLoop的创建
Netty源码分析第二章: NioEventLoop 第二节: NioEventLoopGroup之NioEventLoop的创建 回到上一小节的MultithreadEventExecutorG ...
- Netty源码分析第6章(解码器)---->第2节: 固定长度解码器
Netty源码分析第六章: 解码器 第二节: 固定长度解码器 上一小节我们了解到, 解码器需要继承ByteToMessageDecoder, 并重写decode方法, 将解析出来的对象放入集合中集合, ...
- Ansible 连接主机显示报错的处理方案
一.在ansible安装完毕后一般需要以SSH的方式连接到需要进行管理的目标主机,一开始遇到了如下问题: 192.168.15.4 | UNREACHABLE! => { "ch ...
- Vue02
3.Vue对象提供的属性功能 过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中. 定义过滤器的方式有两种. 1 使用Vue.filter()进行全局定义 V ...
- awk之close函数
echo "21 2 " | awk '{ first[NR]=$ second[NR]=$ }END{ print "======打印第1列并排序:========== ...
- 根据 WBS 列新 PID 数据
之前写过关于 菜单树的. http://www.cnblogs.com/newsea/archive/2012/08/01/2618731.html 现在在写城市树. 结构: CREATE TABLE ...
- (转)Django配置数据库读写分离
转:https://blog.csdn.net/Ayhan_huang/article/details/78784486 转:http://www.cnblogs.com/dreamer-fish/p ...
- 结对编程-->总结报告
项目github地址 PSP时间表格 结对编程中关于Information Hiding, Interface Design, Loose Coupling原则的使用 Information Hidi ...