博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uoj#344. 【清华集训2017】我的生命已如风中残烛(计算几何)
阅读量:6035 次
发布时间:2019-06-20

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

题面

题解

orz

首先我们发现,一个点如果被到达大于一次,那么这个点肯定在一个环上。所以在不考虑环的情况下每个点只会被到达一次,那么我们就可以直接暴力了

简单来说,我们对每个点\(i\)预处理一下\(to[i][from]\),表示如果有一条绳子从\(from\)绕到\(i\),那么绕上\(i\)之后这条绳子对应的下一个点是哪个(假设绳子无限长)。这个可以通过对所有点按极角排序之后直接预处理出来

接下来考虑环,我们可以用类似取模的手段,找到一个环之后把整圈直接跑掉,剩下的继续暴力

建议看代码比较好理解

//minamoto#include
#define R register#define fp(i,a,b) for(R int i=(a),I=(b)+1;i
I;--i)#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)using namespace std;char buf[1<<21],*p1=buf,*p2=buf;inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}int read(){ R int res,f=1;R char ch; while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1); for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0'); return res*f;}const int N=2005;const double Pi=acos(-1.0),eps=1e-8;struct node{ int x,y; node(){} node(R int xx,R int yy):x(xx),y(yy){} inline node operator -(const node &b)const{return node(x-b.x,y-b.y);} inline double norm(){return sqrt(1ll*x*x+1ll*y*y);} inline double PA(){return atan2(y,x);}}p[N],s,t;struct qwq{ int pos;double dis,alp; qwq(){} qwq(R int P,R double D,R double A):pos(P),dis(D),alp(A){} inline bool operator <(const qwq &b)const{return fabs(alp-b.alp)>eps?alp

转载于:https://www.cnblogs.com/bztMinamoto/p/10514348.html

你可能感兴趣的文章
数论 - 最小乘法逆元
查看>>
企业架构研究总结(22)——TOGAF架构开发方法(ADM)之信息系统架构阶段
查看>>
接口测试(三)--HTTP协议简介
查看>>
周志华《机器学习》课后答案——第4章.决策树
查看>>
frameset分帧问题
查看>>
特殊样式:ime-mode禁汉字,tabindex焦点
查看>>
linux
查看>>
Layout父元素点击不到的解决办法
查看>>
【面试次体验】堆糖前端开发实习生
查看>>
基于apache实现负载均衡调度请求至后端tomcat服务器集群的实现
查看>>
C#+QQEmail自动发送邮件
查看>>
[Hadoop]MapReduce多输出
查看>>
Android Activity详解(一)
查看>>
快准车服完成3000万元A+轮融资,年底将开始B轮融资
查看>>
让我去健身的不是漂亮小姐姐,居然是贝叶斯统计!
查看>>
MySQL 数据约束
查看>>
我的友情链接
查看>>
SERVLET容器简介与JSP的关系
查看>>
《服务器SSH Public Key认证指南》-补充
查看>>
我的友情链接
查看>>