传送门:Cool Points

题意:给一个圆心为原点的圆和一些线段,问所有线段两端点与圆心连线构成的角度总和占总360度的百分比。

分析:首先将所有线段的两端点变成极角,然后排序(范围[-PI,PI],即从x轴负方向逆时针转一圈),如果某一线段极角值之差大于PI,构成的角度值肯定不是<AOB,而是<AOX+<XOB。因此处理好这种情况,从x轴负向走一圈计值即可。

#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(极角计算)相关推荐

  1. c语言凸包算法,基于C语言的凸包算法实现

    基于C语言的凸包算法实现 非计算机专业,代码有些的不好的地方,大佬轻喷^ _ ^ 根据要求,需要使用C语言实现凸包算法--Graham扫描法,本文将从算法理解.实现思路.遇到的问题及其解决方案三个方面 ...

  2. 论文翻译 《Self-supervised Learning of LiDAR Odometry for Robotic Applications》

    论文翻译与解读<Self-supervised Learning of LiDAR Odometry for Robotic Applications> Abstract I. INTRO ...

  3. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  4. 水题 UVA 1586 - Ancient Cipher化学式分子量计算

    原题见:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=106424#overview 题目要求,根据所给化学量与原子量计算化学式的相对分子 ...

  5. Flooded! UVA - 815(简单计算 -洪水)

    题目大概: 在n×m的网格世界中(有边界,水不外流),每个网格单位均为10×10的正方形,天上下起大雨,输入降水量和每个格子的海拔高度,输出水位海拔高度和有水区域(格子高度严格小于水平面)百分比 UV ...

  6. UVa 109 - SCUD Busters(凸包计算)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  7. UVa 11178 Morley‘s Theorem(计算几何基础)

    题目链接:https://www.luogu.com.cn/problem/UVA11178 有 T 组测试样例,输入 3 个点的坐标,A , B , C ,然后每两点确定一条直线,将每两条直线所形成 ...

  8. UVa 10180 - Rope Crisis in Ropeland!

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=41&pa ...

  9. 【OpenCV 】直方图均衡化,直方图计算,直方图对比

    目录 1.直方图均衡化¶ 1.1 原理 1.2 直方图均衡化 1.3 直方图均衡化原理 1.4 代码实例 1.5 运行效果 2. 直方图计算¶ 2.1 目标 2.2 直方图 2.3 代码实例 2.4 ...

最新文章

  1. Jedis操作Redis数据库
  2. presonus studio one 5中文版
  3. 其他机无法连接到redis
  4. 转载:js拖拽文本文档并读取内容到textarea
  5. Http 面试知识点
  6. 一千个不用 Null 的理由,你还用?
  7. 老笔记整理四:字符串的完美度
  8. 我要去 Google 工作了
  9. Java--任务定时调度
  10. 【报告分享】2021四大行业品牌蓝V社媒内容运营观察报告.pdf(附下载链接)
  11. 基于Qt编写的在线音乐播放器
  12. 【模拟电路】PID简介
  13. 基于jenkins进行定制化开发
  14. facebook 注册邮箱
  15. angular 架构
  16. 当前的安全设置不允许从该位置下载文件--解决方法
  17. 两个域名指向同一服务器的非80端口
  18. 程序员必须 知道的英语单词
  19. Mac Safari 模拟 IE
  20. 计算机的休眠和睡眠时间在那调,电脑休眠状态跟睡眠状态的区别及唤醒方法

热门文章

  1. 快讯:今日一颗小行星2014 RC掠过地球轨道
  2. SharkCDN,极速构建 CDN DNS 运营平台
  3. 如何统计二维或者多维空间/二维数组中重复元素的数量/计数?numpy一行代码就行了
  4. springboot毕设项目在线智能办公系统bxl9i(java+VUE+Mybatis+Maven+Mysql)
  5. 思寒漫谈测试人职业发展
  6. 爱码哥移动开发平台的4大开发环境
  7. Linux(ubuntu)安装JLink 驱动
  8. OpenCV 各版本百度云下载
  9. 有缘相聚,因skycc 营销软件
  10. unity3d培训_007