BZOJ 2626 & KDtree】的更多相关文章

题意: 二维平面n个点 每次给出一个点询问距离第k小的点. SOL: kdtree裸题,抄了一发别人的模板...二维割起来还是非常显然的.膜rzz的论文. 不多说了吧.... Code: /*========================================================================== # Last modified: 2016-03-18 20:26 # Filename: 2626.cpp # Description: =========…
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2626 题意:平面上有n个点.现在有m次询问,每次给定一个点(px, py)和一个整数k,输出n个点中离(px, py)的距离第k大的点的标号.如果有两个(或多个)点距离(px, py)相同,那么认为标号较小的点距离较大. 思路:对n个点做KDtree. #include<algorithm> #include<cstdio> #include<cmath> #…
Code: #include<bits/stdc++.h> #define maxn 200000 #define inf 1000000000000000 #define mid ((l+r)>>1) #define rson(x) (t[x].ch[1]) #define lson(x) (t[x].ch[0]) #define ll long long using namespace std; void setIO(string s) { string in = s + &q…
和3053差不多,把pair first做成负数就可以用大根堆维护了 注意:要开long long:比较的时候因为编号也占权重所以要比较pair:编号不是mid!不是mid!是初始输入的那个编号!搞混调了很久 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<queue> #include<map> using namesp…
稍微看了一下KD-tree的讲义,大概明白了它的原理,但是实现不出来... 所以无耻的抄了一下黄学长的... #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long #define inf 1000000000 using namespace std; inline int read() { ,f=;char ch=getch…
学习了一下kd-tree的基本写法 http://blog.csdn.net/jiangshibiao/article/details/34144829 配合 http://www.bilibili.com/video/av7039143/ 食用 不过这个博客的里面那道2648的代码是错的 应该加上一句if(n)build 否则应该在插入第一个黑点的时候建树 kd-tree的写法还是很简单的 如果学习过线段树 应该很容易就学会了模板了 #include<stdio.h> #include<…
一开始没思路 感觉像是一个树形dp 然而不会 然后看了一眼题解就明白了 一个点的子树 用dfs序表示肯定是一个连续的区间 并且由于有子树的距离限制 可以转化为一个深度的区间 于是每个点都会有一个在二维平面上的标号(x,y) == (编号,深度) 并且每次进行更新一个节点的子树的时候就可以得到一个x的区间和一个y的区间  (实际上这些x是独一无二的 y更像是一个限制的条件) 这样就可以转化成一个二维的平面 每次选择一个矩阵进行颜色的统一更新 询问单点的颜色 做一个延时标记 询问单点的时候可以每次找…
第一次遇见强制在线的题目 每个操作都和前面的ans有关 所以不能直接离线做 在这个问题中 kdtree更像一个线段树在一维单点修改区间询问的拓展一样 如果区间被询问区间完全包含 就不用继续递归 插入时如果该点已被修改 就不用建新点 由于kdtree是一个二叉搜索树 所以如果数据构造 是可以卡出一条链的 所以需要在插入一定点数之后开始重构这个kdtree 使深度维持在一个可控范围内 因为写错了in_it函数找了一天bug #include<stdio.h> #include<string.…
https://www.lydsy.com/JudgeOnline/problem.php?id=5355 想在b站搜query on a tree系列不小心看到了这题 扑鼻而来的浓浓的OI风格的题面,6个操作,放在ACM界读完题就可以喷了(误 看到前三个操作...kdtree板子题,一维dfs序,一维dep,限制区间显然 后面三个操作...考虑树链剖分,这样点到根的路径就是几条不连续的链了 就把前面kdtree的一维dfs序换成树链剖分的方法得到的dfs序就行了 对于后面三个操作相当于把常写的…
时间限制:5.0s   内存限制:256.0MB   总提交次数:547   AC次数:137   平均分:40.31 将本题分享到:        查看未格式化的试题   提交   试题讨论 试题来源 2012中国国家集训队命题答辩 问题描述 平面上有n个点.现在有m次询问,每次给定一个点(px, py)和一个整数k,输出n个点中离(px, py)的距离第k大的点的标号.如果有两个(或多个)点距离(px, py)相同,那么认为标号较小的点距离较大. 输入格式 第一行,一个整数n,表示点的个数.…