uva 11355(极角计算)
传送门:Cool Points
题意:给一个圆心为原点的圆和一些线段,问所有线段两端点与圆心连线构成的角度总和占总360度的百分比。
分析:首先将所有线段的两端点变成极角,然后排序(范围[-PI,PI],即从x轴负方向逆时针转一圈),如果某一线段极角值之差大于PI,构成的角度值肯定不是<AOB,而是<AOX+<XOB。因此处理好这种情况,从x轴负向走一圈计值即可。
![](/assets/blank.gif)
![](/assets/blank.gif)
#include <algorithm> #include <cstdio> #include <cstring> #include <cmath> #define N 1010 #define PI acos(-1.0) using namespace std; struct node {double angle;int num;node(){}node(double angle,int num):angle(angle),num(num){}bool operator<(const node &a)const{return angle<a.angle;} }e[N]; int tot; void addseg(double x,double y) {e[tot++]=node(x,1);e[tot++]=node(y,-1); } int main() {int T,n,r,cas=1;scanf("%d",&T);while(T--){scanf("%d%d",&n,&r);tot=0;for(int i=1;i<=n;i++){double x1,y1,x2,y2;scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);double a1=atan2(y1,x1),a2=atan2(y2,x2);if(a1<a2)swap(a1,a2);if(a1-a2>PI){addseg(a1,PI);addseg(-PI,a2);}else addseg(a2,a1);}sort(e,e+tot);int cnt=0;double ans=0,last=-PI;for(int i=0;i<tot;i++){if(cnt==0)//前面的线段刚好成对 {ans+=e[i].angle-last;}cnt+=e[i].num;last=e[i].angle;}ans+=PI-last;printf("Case %d: %.2lf%%\n",cas++,ans/(2*PI)*100);} }
View Code
转载于:https://www.cnblogs.com/lienus/p/4330618.html
uva 11355(极角计算)相关推荐
- c语言凸包算法,基于C语言的凸包算法实现
基于C语言的凸包算法实现 非计算机专业,代码有些的不好的地方,大佬轻喷^ _ ^ 根据要求,需要使用C语言实现凸包算法--Graham扫描法,本文将从算法理解.实现思路.遇到的问题及其解决方案三个方面 ...
- 论文翻译 《Self-supervised Learning of LiDAR Odometry for Robotic Applications》
论文翻译与解读<Self-supervised Learning of LiDAR Odometry for Robotic Applications> Abstract I. INTRO ...
- 初学者acm的练习题指南
上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1. <!--[endif]-->Programming Bas ...
- 水题 UVA 1586 - Ancient Cipher化学式分子量计算
原题见:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=106424#overview 题目要求,根据所给化学量与原子量计算化学式的相对分子 ...
- Flooded! UVA - 815(简单计算 -洪水)
题目大概: 在n×m的网格世界中(有边界,水不外流),每个网格单位均为10×10的正方形,天上下起大雨,输入降水量和每个格子的海拔高度,输出水位海拔高度和有水区域(格子高度严格小于水平面)百分比 UV ...
- UVa 109 - SCUD Busters(凸包计算)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- UVa 11178 Morley‘s Theorem(计算几何基础)
题目链接:https://www.luogu.com.cn/problem/UVA11178 有 T 组测试样例,输入 3 个点的坐标,A , B , C ,然后每两点确定一条直线,将每两条直线所形成 ...
- UVa 10180 - Rope Crisis in Ropeland!
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=41&pa ...
- 【OpenCV 】直方图均衡化,直方图计算,直方图对比
目录 1.直方图均衡化¶ 1.1 原理 1.2 直方图均衡化 1.3 直方图均衡化原理 1.4 代码实例 1.5 运行效果 2. 直方图计算¶ 2.1 目标 2.2 直方图 2.3 代码实例 2.4 ...
最新文章
- Jedis操作Redis数据库
- presonus studio one 5中文版
- 其他机无法连接到redis
- 转载:js拖拽文本文档并读取内容到textarea
- Http 面试知识点
- 一千个不用 Null 的理由,你还用?
- 老笔记整理四:字符串的完美度
- 我要去 Google 工作了
- Java--任务定时调度
- 【报告分享】2021四大行业品牌蓝V社媒内容运营观察报告.pdf(附下载链接)
- 基于Qt编写的在线音乐播放器
- 【模拟电路】PID简介
- 基于jenkins进行定制化开发
- facebook 注册邮箱
- angular 架构
- 当前的安全设置不允许从该位置下载文件--解决方法
- 两个域名指向同一服务器的非80端口
- 程序员必须 知道的英语单词
- Mac Safari 模拟 IE
- 计算机的休眠和睡眠时间在那调,电脑休眠状态跟睡眠状态的区别及唤醒方法