牛客 数三角(求多少个钝角三角形 极角排序)
晚上的时候PC问了一下这玩意,回忆一下极角排序
相关链接:
How Many Triangles HDU - 5784(极角排序,双指针)
2019秦皇岛A - Angle Beats Gym - 102361A(极角排序,多少个直角三角形)
思路:
先对每个点极角排序,实际上就是确定了一条边,再通过双指针,就可以求出小于某个范围的角度有多少个了。
本题中求的是钝角三角形的个数,我们求出有多少个角小于等于90度,再求出有多少个角小于180度,两者相减就是钝角的个数了
#include <cstdio>
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>using namespace std;const int maxn = 4e3 + 7;
const double eps = 1e-13;
const double PI = acos(-1);
int n;
double nodes[maxn];struct Point
{double x,y;
}p[2005];int zero(double x)
{if(abs(x) < eps){return 0;}if(x < 0)return -1;return 1;
}int solve(double angle)
{int ans = 0,r = 1;for(int l = 1;l < n;l++){int ecnt = 0;while(zero(nodes[ecnt + l] - nodes[l]) == 0){ecnt++;}l = l + ecnt - 1;r = max(l + 1,r);while(r - l + 1 < n && zero(nodes[r] - nodes[l] - angle) <= 0)r++;ans += (r - l - 1) * ecnt;}return ans;
}int main()
{while(~scanf("%d",&n)){int ans = 0,notans = 0;for(int i = 1;i <= n;i++){scanf("%lf%lf",&p[i].x,&p[i].y);}for(int i = 1;i <= n;i++){int cnt = 0;for(int j = 1;j <= n;j++){if(i == j)continue;nodes[++cnt] = atan2(p[i].y - p[j].y,p[i].x - p[j].x);}sort(nodes + 1,nodes + 1 + cnt);for(int i = 1;i <= cnt;i++){nodes[i + cnt] = nodes[i] + PI * 2;}int tmp = solve(PI / 2);ans += solve(PI - 1e-9) - tmp;}printf("%d\n",ans);}return 0;
}
牛客 数三角(求多少个钝角三角形 极角排序)相关推荐
- 牛客题霸 [ 求二叉树的层序遍历] C++题解/答案
牛客题霸 [ 求二叉树的层序遍历] C++题解/答案 题目描述 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该 ...
- 牛客题霸 [求平方根] C++题解/答案
牛客题霸 [求平方根] C++题解/答案 题目描述 实现函数 int sqrt(int x). 计算并返回x的平方根 题解: 要求返回平方根,我们就找一个i,使得ii<=x&&( ...
- 牛客题霸 [ 求路径] C++题解/答案
牛客题霸 [ 求路径] C++题解/答案 题目描述 一个机器人在m×n大小的地图的左上角(起点,下图中的标记"start"的位置). 机器人每次向下或向右移动.机器人要到达地图的右 ...
- 牛客 数素数 (20)
链接:https://www.nowcoder.com/questionTerminal/e0fb49acb75f47e8b6fa2077d9071799?toCommentId=3208952 来源 ...
- 牛客网 2018校招真题 摩拜 排序次数
Description 牛客网 2018校招真题 排序次数 Solving Ideas 将数组a的元素拷贝到数组b 对数组b进行排序 对比数组b,统计数组a中已排序的元素个数 如:a = [2, 11 ...
- 牛客暑假四 A Task Computing 【如何排序使得对答案的贡献值最大】【cmp里面不等式的推导】【累加累乘符号的学习】【DP】
链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 See Problem N for PDF statements. As it says, Time is Money, Effi ...
- 牛客洋灰三角【矩阵快速幂】
题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WHZ有很多铸造成三角形的洋灰块,他想把这些洋灰三角按照一定的规律放到摆成一排的n个格子里,其中第i个格子放 ...
- 【CCCC】L3-021 神坛 (30分)计算几何+求三角形面积(极角排序)
problem L3-021 神坛 (30分) 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如 ...
- 牛客题霸题目及题解汇总
牛客题霸 单链表的选择排序 C++题解/答案 牛客题霸 最少素数拆分 C++题解/答案 牛客题霸 两数之和 C++题解/答案 牛客题霸 反转链表 C++题解/答案 牛客题霸 二分查找 C++题解/答案 ...
最新文章
- mysql 监控工具
- AgileEAS.NET平台视频会议培训第二辑-简单插件开发应用演练(速度下载)
- 渗透测试之全方位信息收集神器 instarecon
- 投稿Cover Letter如何写出彩
- 基于Flink+ClickHouse构建实时游戏数据分析最佳实践
- windows怎么查看进程的启动时间
- Linux日志系统小记
- elk 安装与所遇问题
- 几种常见的跨域原理的实现
- Hexagon DSP系列记录(二)——写Hexagon DSP程序流程
- 跟父亲一样伟大的程序员,请照顾好自己!
- 使用特征传播重构缺失数据进行图机器学习
- 如何替换mac word中的换行符为空格
- 卡通渲染 类罪恶装备与崩坏3渲染总结
- 工行网银 火狐浏览器
- word打开提示无法加载此程序mathpage.wll
- 使用GCD(转自唐巧的技术博客)
- 量子计算机解泊松方程,试求泊松方程的解.ppt
- 贪婪洞窟2服务器维护,12月24日贪婪洞窟2停服维护公告_贪婪洞窟2更新了什么_3DM手游...
- java.net.url 兼容_java.net.Url类的应用(网络编程)
热门文章
- PGSQL查询某时间段内的数据、两个时间日期的分钟差、天数
- 中国医疗废物处理行业发展前景及投资战略分析报告2022-2027年
- Uncaught TypeError: Cannot set properties of undefined (setting ‘backgroundColor‘)的解决方法
- java实现求解n宫格
- el-carousel手动切换图片
- u盘文件损坏Linux,linux下U盘变成只读文件系统的修复
- Excel如何按照总课表制作个班级课表
- 打开文件夹并选定指定的文件
- Codevs 1035 火车停留 [费用流] [拆点]
- 学习笔记——独立按键的扩展运用