BZOJ5465 : [APIO 2018] 选圆圈】的更多相关文章

假设最大的圆半径为$R$,以$2R$为大小将地图划分为一个个格子,那么每个圆只需要检查圆心在附近$9$个格子内部的所有圆. 在当前圆的半径不足$\frac{R}{2}$时重构网格,那么最多重构$O(\log R)$次,且每个圆最多被检查常数次. 时间复杂度$O(n\log n\log R)$,利用Hash可以做到$O(n\log R)$. #include<cstdio> #include<algorithm> #include<vector> using namesp…
题意 题目链接 Sol 下面是错误做法,正解请看这里 考虑直接用K-D tree模拟.. 刚开始想的是维护矩形最大最小值,以及子树中最大圆的位置,然后... 实际上最大圆的位置是不用维护的,直接把原序列排一遍序就可以了 再努力卡卡常就过了 如果还过不了的话可以尝试把所有点都转一个角度 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define chmin(x, y) (x = x < y ? x : y) #define chmax…
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<queue> #include<cmath> #define sqr(x) (x) * (x) #define M 300005 using namespace std; , alpha = acos(-) / , cosa = cos(alpha), sina = si…
「APIO2018选圆圈」 题目描述 在平面上,有 \(n\) 个圆,记为 \(c_1, c_2, \ldots, c_n\) .我们尝试对这些圆运行这个算法: 找到这些圆中半径最大的.如果有多个半径最大的圆,选择编号最小的.记为 \(c_i\) . 删除 \(c_i\) 及与其有交集的所有圆.两个圆有交集当且仅当平面上存在一个点,这个点同时在这两个圆的圆周上或圆内. 重复上面两个步骤直到所有的圆都被删除. 当 \(c_i\) 被删除时,若循环中第1步选择的圆是 \(c_j\) ,我们说 \(c…
[LG4631][APIO2018]Circle selection 选圆圈 题面 洛谷 题解 用\(kdt\)乱搞剪枝. 维护每个圆在\(x.y\)轴的坐标范围 相当于维护一个矩形的坐标范围为\([x-r,x+r],[y-r,y+r]\) 可以减小搜索范围 然后再判断一下一个圆是否在当前搜索的矩形内,不在就剪枝 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring&g…
前言: 在APIO 2018 Day2下午听wuvin讲二分,听了一上午的神仙,现在终于有可以听懂了. 专题: 平均边权最大 题目链接:https://www.questoj.cn/problem/34 题解 by wuvin: 二分平均值 然后每条边减去平均值 变为查找是否存在正环 可以使用SPFA(反着写松弛) 最大闭合权子图变式 题意: 一个N个点M条边的图(不一定连通). 一个子图的优美程度定义为子图中的边数/子图的点数 现在你需要求出最大能得到的优美程度是多少? 题解by wuvin:…
Description 给定平面上的 \(n\) 个圆,用三个参数 \((x, y, R)\) 表示圆心坐标和半径. 每次选取最大的一个尚未被删除的圆删除,并同时删除所有与其相切或相交的圆. 最后输出每个圆分别是被那个圆所删除的. Hint \(1\le n\le 3\times 10^5\) \(0\le |x|, |y|, R \le 10^9\) Solution 1 后来在 Codeforces 上找到的官方题解 Link here.如果对题解中某些说明无法理解可以参考上述内容.做法参考…
考虑乱搞,用矩形框圆放KD-Tree上,如果当前删除的圆和矩形有交就递归下去删.为防止被卡,将坐标系旋转一定角度即可.注意eps稍微设大一点,最好开上long double. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<queue> #…
题意:给你n个圆,每次选择半径最大的,将它和与它相交的圆全部删去,输出每个圆是在哪次被删的. KD树模板题.用一个矩形框住这个圆,就可以直接剪枝了.为了防止被卡可以将点旋转一个角度,为了保险还可以多转几个角度. #include<cmath> #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) typedef double db; using na…
(要写CTSC的时候才想起来没写WC2018,那就粗略回顾一下吧hhhhh) WC 2018(简略版): 大概和 一个宁夏和一个天津的大哥一个宿舍hhhh,字典序分宿舍真是奇妙. WC讲课真的不是人听的,感觉一直划水hhhh..... 中间有一天还是生日,草草的过了,蛋糕都没有QWQ 试机的时候才想起来...以后全国的比赛都是 NOI Linux 啊(作为SD选手的天然劣势),我以前用都没用过,这.... 试机现场学,,发现根本用不6,那比赛只能划水了啊QWQ 比赛现场接着学Linux,于是就有…