博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018.08.02 hdu1558 Segment set(并查集+计算几何)
阅读量:4309 次
发布时间:2019-06-06

本文共 942 字,大约阅读时间需要 3 分钟。

这个直接用并查集维护。
每加入一条线段就将它与其他能相交的集合合并,维护一个sizesize域表示每个集合的大小。
代码:

#include
#define eps 1e-15using namespace std;int t,fa[1005],n,siz[1005],cnt;struct pot{
double x,y;};struct line{pot a,b;}l[1005];inline int find(int x){
return x==fa[x]?fa[x]:fa[x]=find(fa[x]);}inline pot operator-(pot a,pot b){
return (pot){a.x-b.x,a.y-b.y};}inline double cross(pot a,pot b){
return a.x*b.y-a.y*b.x;}inline bool check(line a,line b){
return (cross(a.a-b.a,a.b-b.a)*cross(a.a-b.b,a.b-b.b)<=eps)&&(cross(b.a-a.a,b.b-a.a)*cross(b.a-a.b,b.b-a.b)<=eps);}int main(){ scanf("%d",&t); while(t--){ scanf("%d",&n),cnt=0; while(n--){ char op[3]; scanf("%s",op); if(op[0]=='P'){ ++cnt,fa[cnt]=cnt,siz[cnt]=1; scanf("%lf%lf%lf%lf",&l[cnt].a.x,&l[cnt].a.y,&l[cnt].b.x,&l[cnt].b.y); for(int i=1;i

转载于:https://www.cnblogs.com/ldxcaicai/p/9738401.html

你可能感兴趣的文章
How it works(3) Tilestrata源码阅读(A)
查看>>
How it works(12) Tileserver-GL源码阅读(A) 服务的初始化
查看>>
uni-app 全局变量的几种实现方式
查看>>
echarts 为例讲解 uni-app 如何引用 npm 第三方库
查看>>
uni-app跨页面、跨组件通讯
查看>>
springmvc-helloworld(idea)
查看>>
JDK下载(百度网盘)
查看>>
idea用得溜,代码才能码得快
查看>>
一篇掌握python魔法方法详解
查看>>
数据结构和算法5-非线性-树
查看>>
数据结构和算法6-非线性-图
查看>>
数据结构和算法7-搜索
查看>>
数据结构和算法8-排序
查看>>
windows缺少dll解决办法
查看>>
JPA多条件动态查询
查看>>
JPA自定义sql
查看>>
BigDecimal正确使用了吗?
查看>>
joplin笔记
查看>>
JNDI+springmvc使用
查看>>
vue+springboot分页交互
查看>>