首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
bzoj2989 数列(KDTree)
】的更多相关文章
bzoj2989 数列(KDTree)
bzoj2989 数列(KDTree) bzoj 该说不愧是咱,一个月才水一篇题解然后还水的一批 题目描述: 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|. 2种操作(k都是正整数): 1.Modify x k:将第x个数的值修改为k. 2.Query x k:询问有几个i满足graze(x,i)<=k.因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要 考虑任意历史版本,即统计任意位…
【BZOJ2989】数列 kd-tree
[BZOJ2989]数列 Description 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|. 2种操作(k都是正整数): 1.Modify x k:将第x个数的值修改为k. 2.Query x k:询问有几个i满足graze(x,i)<=k.因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要 考虑任意历史版本,即统计任意位置上出现过的任意数值与当前的a[x]的graze值<=k的…
【bzoj2989】数列 KD-tree+旋转坐标系
题目描述 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|. 2种操作(k都是正整数): 1.Modify x k:将第x个数的值修改为k. 2.Query x k:询问有几个i满足graze(x,i)<=k.因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要 考虑任意历史版本,即统计任意位置上出现过的任意数值与当前的a[x]的graze值<=k的对数.(某位置多次修改为 同样的数值,按…
[bzoj2989]数列_KD-Tree_旋转坐标系
数列 bzoj-2989 题目大意:题目链接. 注释:略. 想法:显然,我们用x和a[x]两个值建立笛卡尔坐标系. 两个点之间的距离为曼哈顿距离. 修改操作就是插入... 查询操作就是查询一个点周围的斜正方形的点数. 而斜正方形的复杂度是没有办法保证的. 所以,我们旋转坐标系. 每个点都变成了$\frac{x+y}{\sqrt{2}}$和$\frac{x-y}{\sqrt{2}}$. 有根号我们没有办法处理,所以我们直接乘以根号2. 乘完了之后,旋转后的坐标系上两个点之间的切比雪夫距离就等于原来…
BZOJ2989 数列(二进制分组)
这题其实可以cdq分治做,但是如果强制在线的话,这里有个牛逼方法叫二进制分组. 它的基本思想是把修改操作按二进制分组,遇到修改就在尾部加一个,并与之前的合并,比如之前有23(16+4+2+1)个,加了一个后就变成了24(16+8)个,遇到查询就在每个组内查询,再加起来就好了. #include <cstdio> #include <vector> #include <algorithm> using namespace std; #define M ((l+r)>…
2019.01.21 bzoj2989: 数列(二进制分组+主席树)
传送门 二进制分组入门题. 主席树写错调题2h+2h+2h+体验极差. 题意简述:给一堆点,支持加入一个点,询问有多少个点跟(x,y)(x,y)(x,y)曼哈顿距离不超过kkk. 思路:题目要求的是对于一个斜着的正方形的查询. 我们考虑转切比雪夫距离转成正常的正方形. 然后就变成了一个动态的二维数点问题. 这个时候已经可以上cdqcdqcdq分治+扫描线或者树套树切题啦. 然而还有一种叫做二进制分组的方法可以支持强制在线的操作. 我们考虑将修改分组,例如对于前19=16+2+119=16+2+1…
bzoj2989 数列
突然翻到一道他们正在做的题....好像是cdq分治??? 以后写写呗.... 然后二进制啥的照样操作一波....感觉很资瓷的样子.... 就这样分组操作两边这道题咯?…
Kd-tree题表
bzoj1941: [Sdoi2010]Hide and Seekbzoj2626: JZPFARbzoj4520: [Cqoi2016]K远点对bzoj2989: 数列bzoj2850: 巧克力王国 bzoj4605: 崂山白花蛇草水…
【BZOJ2989】数列(二进制分组,主席树)
[BZOJ2989]数列(二进制分组,主席树) 题面 BZOJ 权限题啊... Description 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|. 2种操作(k都是正整数): 1.Modify x k:将第x个数的值修改为k. 2.Query x k:询问有几个i满足graze(x,i)<=k.因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要 考虑任意历史版本,即统计任意位置上出…
【BZOJ2989】数列(CDQ分治,扫描线)
[BZOJ2989]数列(CDQ分治) 题面 BZOJ 权.....权限题.. 题解 Description 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|. 2种操作(k都是正整数): 1.Modify x k:将第x个数的值修改为k. 2.Query x k:询问有几个i满足graze(x,i)<=k.因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要 考虑任意历史版本,即统计任意位…