bzoj5183 [Baltic2016]Park
题目描述:
bz
luogu
题解:
把坐标系看反了持续$WA$系列。
对偶图+并查集维护。
先处理出树对树、树对墙的空隙,然后把人和空隙按从小到大排序。
用并查集维护四面墙之间是否能互相隔断。
代码:
#include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 2550; const int M = 100050; const double eps = 1e-6; template<typename T> inline void read(T&x) {T f = 1,c = 0;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){c=c*10+ch-'0';ch=getchar();}x = f*c; } int n,m,X[2],Y[2],ff[N]; double W,H; int findff(int x){return x==ff[x]?x:ff[x]=findff(ff[x]);} struct Tree {double x,y,r;void rd(){scanf("%lf%lf%lf",&x,&y,&r);} }t[N]; double sqr(double k){return k*k;} double dis(int i,int j){return sqrt(sqr(t[i].x-t[j].x)+sqr(t[i].y-t[j].y));} int tot; struct Hole {double k;int x,y;Hole(){}Hole(double k,int x,int y):k(k),x(x),y(y){} }h[N*N]; bool cmp(Hole a,Hole b){return a.k<b.k;} int ans[M]; struct Peo {double r;int c,id;void rd(int i){scanf("%lf",&r),r*=2;read(c),c--;id=i;} }p[M]; bool vmp(Peo a,Peo b){return a.r<b.r;} void merge(int x,int y) {x = findff(x),y = findff(y);if(x!=y)ff[x]=y; } bool cX(){return findff(X[0])==findff(X[1]);} bool cY(){return findff(Y[0])==findff(Y[1]);} int Xi[4]={0,0,1,1},Yi[4]={0,1,1,0}; bool cC(int cn){return findff(X[Xi[cn]])==findff(Y[Yi[cn]]);} void ot(int x) {for(int i=0;i<4;i++)if(ans[x]&(1<<i))putchar('1'+i);puts(""); } int main() {read(n),read(m);scanf("%lf%lf",&W,&H);X[0] = n+1,X[1] = n+2,Y[0] = n+3,Y[1] = n+4;for(int i=1;i<=n+4;i++)ff[i]=i;for(int i=1;i<=n;i++){t[i].rd();h[++tot] = Hole(t[i].x-t[i].r,i,Y[0]);h[++tot] = Hole(t[i].y-t[i].r,i,X[0]);h[++tot] = Hole(W-t[i].x-t[i].r,i,Y[1]);h[++tot] = Hole(H-t[i].y-t[i].r,i,X[1]);}for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)h[++tot] = Hole(dis(i,j)-t[i].r-t[j].r,i,j);for(int i=1;i<=m;i++)p[i].rd(i);sort(p+1,p+1+m,vmp),sort(h+1,h+1+tot,cmp);for(int i=1,j=1;i<=m;i++){while(h[j].k+eps<p[i].r&&j<=tot)merge(h[j].x,h[j].y),j++;bool cx = cX(),cy = cY();int cc = p[i].c;if(cC(cc)){ans[p[i].id]=(1<<cc);continue;}if(cx&&cy)ans[p[i].id]=(1<<cc);else if(cx&&!cy)ans[p[i].id]=((1<<cc)|(1<<(cc^3)));else if(!cx&&cy)ans[p[i].id]=((1<<cc)|(1<<(cc^1)));else ans[p[i].id]=15;for(int cn=0;cn<4;cn++)if(cC(cn)&&(ans[p[i].id]&(1<<cn)))ans[p[i].id]^=(1<<cn);}for(int i=1;i<=m;i++)ot(i);return 0; }
View Code
转载于:https://www.cnblogs.com/LiGuanlin1124/p/10825146.html
bzoj5183 [Baltic2016]Park相关推荐
- B. Om Nom and Dark Park
B. Om Nom and Dark Park 在满二叉树上的某些边上添加一些值.使得根节点到叶子节点的路径上的权值和都相等.求最少需要添加多少. 我们利用性质解题. 考察兄弟节点.由于他们从跟节 ...
- 耗时 2 年,用 8.5 万块乐高积木最牛复刻 Apple Park
简评:国外大佬复刻 Apple Park,看了一下细节,确实厉害!只有你想不到,没有乐高拼不起来的,有没有乐高大神挑战一下? 苹果公园以各种各样的方式鼓舞人心,让人感兴趣.从建筑.可持续性和成本,到像 ...
- 倒车辅助Park Assist
from: http://blog.csdn.net/viewcode/article/details/21048935 倒车辅助Park Assist快速发展,无论是前装还是后装,都已比较成熟了. ...
- JUC并发编程八 并发架构--park,unpark
wait,notify和notifyAll必须配合 Object Monitor一起使用.而park,unpark不用. park 和 unpark是以线程为单位阻塞和唤醒线程.而notify只能随机 ...
- hdu 4607 Park Visit 求树的直径
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607 Claire and her little friend, ykwd, are travelli ...
- OFDM同步算法之Park算法
park算法代码 训练序列结构 T=[\(C\) \(D\) \(C^{*}\) \(D^{*}\)],其中C表示由长度为N/4的复伪随机序列PN,ifft变换得到的符号序列 \(C(n) = D(N ...
- java 中断线程 wait_Java 线程中断(interrupt)与阻塞 (park)的区别
很多Java开发人员(包括我),尤其是刚进入软件行业的新手,认为Java设置线程中断就是表示线程停止了,不往前执行了, Thread.currentThread().interrupt() 其实不是这 ...
- 【Java报错】记录一次 sun.misc.Unsafe.park(Native Method) Conflicting setter definitions for property 导致的内存泄露
1. 报错信息 2021-10-29 08:44:56 WARN [,,,] [main] o.a.c.loader.WebappClassLoaderBase - The web applicati ...
- 密码学系列之:明文攻击和Bletchley Park
文章目录 简介 crib和明文攻击 布莱奇利公园(Bletchley Park) 简介 明文攻击就是指已经知道了部分明文和它对应的加密后的字段,从而可以推测出使用的加密手段或者密码本.明文攻击这个故事 ...
最新文章
- MYSQL编译参数详解
- Toon Boom Harmony 20v20.0中文版
- linux命令之查看当前shell环境变量-env
- 订体育馆订健身房的方法
- How does a relational database work
- JavaScript 是传值调用还是传引用调用?
- mysql to char 用法_postgresql 中的to_char()常用操作
- 【OpenCV】腐蚀膨胀
- 【Kali】Kali在线安装详细教程【全】
- php解析shapefile,Fiona简介及Shapefile数据读取
- 来看一场开发者大会,缘何引来千人盛况
- 【Oracle】并行等待之PX Deq: Table Q Normal
- python几岁开始学比较好_少儿编程到底几岁开始学合适?
- 使用CKRule实现PVC配方计算
- 大疆 芯片开发 面经
- 计算机中存储的数据类型
- 西北乱跑娃 --- python类方法重写
- python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)
- 软件目录【20年7月】
- 无人超市信息管理系统——可行性研究
热门文章
- JAVA GUI重要知识点学习心得
- java并发编程之Semaphore
- linux分配iomem,Linux中__iomem
- php grid 分页,jqGrid实现前端分页
- c语言流程图char,求救!各位大神,用程序流程图怎么描述下面这个???
- java堆中的组成部分,初识Java虚拟机的基本结构 | If Coding
- 计算机删除百度云盘图标,win10系统百度云盘图标删除的操作方法
- 再次携号转网_湖北省通信管理局召开视频会议 再次强调携号转网服务要求
- 重新理解“无容灾不上云”:应用多活将成为云原生容灾新趋势
- 混合云应用双活容灾实践