bzoj 2648: SJY摆棋子2716: [Violet 3]天使玩偶 --kdtree
2648: SJY摆棋子&&2716: [Violet 3]天使玩偶
Time Limit: 20 Sec Memory Limit: 128 MB
Description
Input
Output
Sample Input
1 1
2 3
2 1 2
1 3 3
2 4 2
Sample Output
1
2
HINT
kdtree可以过
Source
照着zgz233打了一遍板子qaq
#include<map> #include<cmath> #include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define inf 1000000007 #define ll long long #define N 1000010 inline int rd() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; } struct qaz {int d[2],mn[2],mx[2],l,r;int& operator[](int x){return d[x];} }p[N],tr[N],T; int D; bool operator <(qaz a,qaz b){return a[D]<b[D];} int rt; #define ls tr[x].l #define rs tr[x].r inline void upd(int x) {for(int i=0;i<2;i++){if(ls) tr[x].mn[i]=min(tr[x].mn[i],tr[ls].mn[i]),tr[x].mx[i]=max(tr[x].mx[i],tr[ls].mx[i]);if(rs) tr[x].mn[i]=min(tr[x].mn[i],tr[rs].mn[i]),tr[x].mx[i]=max(tr[x].mx[i],tr[rs].mx[i]);} } int build(int l,int r,int t) {D=t;int mid=l+r>>1;nth_element(p+l,p+mid,p+r+1);tr[mid]=p[mid];for(int i=0;i<2;i++) tr[mid].mn[i]=tr[mid].mx[i]=tr[mid][i];if(l<mid) tr[mid].l=build(l,mid-1,t^1);if(mid<r) tr[mid].r=build(mid+1,r,t^1);upd(mid);return mid; } int n,m; void ins(int x,int t) {if(T[t]<tr[x][t]){if(ls) ins(ls,t^1);else{ls=++n,tr[n]=T;}}else {if(rs) ins(rs,t^1);else{rs=++n,tr[n]=T;}}upd(x); } int ans; int dis(qaz a,qaz b){return abs(a[0]-b[0])+abs(a[1]-b[1]);} int gtdis(qaz a,qaz b) {int ji=0;for(int i=0;i<2;i++)ji+=max(0,b.mn[i]-a[i])+max(0,a[i]-b.mx[i]);return ji; } void fd(int x,int t) {int d=dis(tr[x],T),dl=inf,dr=inf;ans=min(d,ans);if(ls) dl=gtdis(T,tr[ls]);if(rs) dr=gtdis(T,tr[rs]);if(dl<dr){if(dl<ans) fd(ls,t^1);if(dr<ans) fd(rs,t^1);}else {if(dr<ans) fd(rs,t^1);if(dl<ans) fd(ls,t^1);} } int main() {n=rd();m=rd();for(int i=1;i<=n;i++) p[i][0]=rd(),p[i][1]=rd();rt=build(1,n,0);int op,x,y;while(m--){T.l=T.r=0;op=rd();T.mn[0]=T.mx[0]=T[0]=rd();T.mn[1]=T.mx[1]=T[1]=rd();if(op==1) ins(rt,0);else {ans=inf;fd(rt,0);printf("%d\n",ans);}}return 0; }
转载于:https://www.cnblogs.com/lkhll/p/8005243.html
bzoj 2648: SJY摆棋子2716: [Violet 3]天使玩偶 --kdtree相关推荐
- BZOJ2648: SJY摆棋子2716: [Violet 3]天使玩偶
BZOJ2648: SJY摆棋子 BZOJ2716: [Violet 3]天使玩偶 BZOJ氪金无极限... 其实这两道是同一题. 附上2648的题面: Description 这天,SJY显得无聊. ...
- BZOJ 2648 SJY摆棋子(KD-Tree)
题目链接:BZOJ 2648 SJY摆棋子 题意: 在一个棋盘上,有N个黑色棋子.他每次要么放到棋盘上一个黑色棋子,要么放上一个白色棋子,如果是白色棋子,他会找出距离这个白色棋子最近的黑色棋子.此处 ...
- bzoj 2648 SJY摆棋子 cdq分治+树状数组
题面 题目传送门 解法 同bzoj2716 自己cdq写的还是丑啊,别人A掉了我T飞了 代码 #include <bits/stdc++.h> #define inf 1 << ...
- BZOJ 2716: [Violet 3]天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MB Submit: 1473 Solved: 621 [Submit][Sta ...
- BZOJ 2716 Violet 3 天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MB Submit: 2145 Solved: 928 [Submit][Sta ...
- 2716: [Violet 3]天使玩偶/2648: SJY摆棋子
题目链接 题目大意:平面动态加点,求与给出的点曼哈顿距离最近点 题解:KD树模板题 我的收获:23333 #include <cstdio> #include <iostream&g ...
- BZOJ 2716 [Violet 3]天使玩偶 (CDQ分治、树状数组)
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2716 怎么KD树跑得都那么快啊..我写的CDQ分治被暴虐 做四遍CDQ分治,每次求一个 ...
- BZOJ 2716: [Violet 3]天使玩偶 | CDQ分治
题目: 南开OJ有非权限提交处 http://oi.nks.edu.cn/zh/Problem/Details/2739 题解: 鹅鹅鹅....有三维(t,x,y),所以可以用CDQ解决的好题 初始点 ...
- 2716 [Violet 3] 天使玩偶
@(BZOJ)[CDQ分治] Sample Input 100 10081 2327 1652 5844 2425 9534 296 258 1497 5097 1864 347 2255 2889 ...
最新文章
- D - Sand Fortress CodeForces - 985D
- mysql 原理 ~ 索引通说
- ARC068C - Snuke Line
- 基于 Raphael 的 Web UI 设计 - 初稿
- android源码分析(一) - 语言切换机制
- 火线精英显示服务器一断,火线精英bug大全解析
- 在计算机上OF键开机键,电脑开机时出现英文字母串需要按回车键才能继
- java调用高德地图api_JAVA调用高德地图API实践
- 电子邮箱免费注册,个人邮箱申请哪个好?微信邮箱客户端这个好用
- WP模板常用调用函数
- 四 状语从句(2021-11-09)
- 2020-05-09
- 解决:getReader() has already been called for this request
- 25岁之前,男生一定要知道的30条人生忠告!!!
- python数据分析与可视化清华大学_【官方正版】 Python数据分析与可视化 微课视频版 清华大学出版社 魏伟一 李晓红 软件工具 程序设计...
- 内网渗透神器(Mimikatz)——使用教程
- VirtualBox安装增强功能时报错:未能加载虚拟光盘 到虚拟电脑
- 微软等数据结构+算法面试100题全部答案集锦 复制过来比较乱
- 夸克缓存视频合并小工具
- PHP的create方法,Thinkphp中Create方法深入探究
热门文章
- A.457 - Linear Cellular Automata
- 问题 F: 编写函数:一维数组的逆序 (Append Code)
- pythonmatplotlib怎么设置曲线_python – Matplotlib的“symlog”选项:如何防止曲线“回来”?...
- python数据分析基础 阮敬_Python数据分析用到的几个重要的库
- c语言求一个数的阶乘值代码,求10000的阶乘(c语言代码实现)
- 轴固定位置_何为轴?来看看你对轴了解了么
- python导入自己写的py_卧槽,神操作!一句查询让Python帮忙自己写程序
- 5 | Spatial-based GNN/convolution模型之DGC
- Matcha已升级至0xV4版,比Uniswap和Sushi等平台节省4%的交易费
- Zilliqa联合创始人:ZIP-12提案已成功部署,为未来的治理投票奠定基础