博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FZU 2110 Star
阅读量:5915 次
发布时间:2019-06-19

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

计算几何

训练的题目,给出n个点的坐标(整数),选3个点组成三角形问能形成多少个锐角三角形

直接暴力解决,用三个for循环枚举3个点(升序枚举避免重复),然后用余弦判断三角形中三个角是否为锐角

判断一个角为锐角:已知j,i,k三个点形成一个角,以i为交点向j,k做两个向量a,b,用余弦定理

cos = a*b/( |a| * |b| ) ,因为|a|*|b|必为正整数而且我们不是要算确切的角度只是判断锐,直,钝角所以直接用 a*b

a*b=0 , 直角

a*b>0 , 锐角或0度

a*b<0,钝角或180度

所以不用单纯靠 a*b 的正负来判断是什么叫,对于a*b>0的情况还要判断是否为0度

 

最后整个数据都是整型,操作也用整型不需要用浮点型,避免精度问题

 

#include 
#include
#include
using namespace std;#define N 110typedef long long ll;typedef pair
pll;pll p[N];int n;ll judge(pll a , pll b){ ll c = a.first*b.first + a.second*b.second ; if(c<=0 || (c>0 && a.first*b.second == a.second*b.first)) return -1; return 1;}void solve(){ ll count = 0; for(int i=0; i

 

转载地址:http://vbgpx.baihongyu.com/

你可能感兴趣的文章
oralce表空间创建和扩容
查看>>
列表添加商品也代码
查看>>
为什么开发人员工作10多年了还会迷茫?没有安全感?
查看>>
分享NetSuite CRM成功实施案例!
查看>>
Apache 编 译 时 遇 到 的 错 误
查看>>
11.32 PHP扩展模块(redis)安装
查看>>
VMware Converter 使用图解
查看>>
oracle监听的设置
查看>>
网站后台上传与FTP上传文件
查看>>
第7章 性能和可靠性模式
查看>>
数据库锁表的分析与解决
查看>>
磁盘格式化mke2fs
查看>>
until
查看>>
C#数组、ArrayList和List<T>
查看>>
有关Backgroundworker
查看>>
2014.8.25 CAD系统事件触发流程
查看>>
Python的object和type理解及主要对象层次结构
查看>>
Lucene 查询分页技术
查看>>
java多态性,父类引用指向子类对象
查看>>
打包phar文件过大的问题。
查看>>