极角排序后枚举每个点,计算其与原点连线的左侧的半平面内的点与其组成的三角形数(二分/尺取),这些都不是黄金三角形。

补集转化,用平面内所有三角形的个数(C(n,3))减去这些即可。

精度很宽松,几乎不用管。

#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
typedef double db;
#define N 100001
const db PI=acos(-1.0);
ll ans;
db jiao[N];
int n;
int main()
{db x,y;scanf("%d",&n);for(int i=1;i<=n;++i){scanf("%lf%lf",&x,&y);db t=atan2(y,x);jiao[i]=(t<0?t+2.0*PI:t);}sort(jiao+1,jiao+n+1);for(int i=1;i<=n;++i)if(jiao[i]<=PI){int ef=upper_bound(jiao+1,jiao+n+1,jiao[i]+PI)-(jiao+i)-1;ans+=(((ll)ef*(ll)(ef-1))>>1);}else{int ef=upper_bound(jiao+1,jiao+n+1,jiao[i]-PI)-(jiao+1);ef+=(n-i);ans+=(((ll)ef*(ll)(ef-1))>>1);}printf("%lld\n",(ll)n*(ll)(n-1)*(ll)(n-2)/6-ans);return 0;
}

转载于:https://www.cnblogs.com/autsky-jadek/p/4369172.html

【计算几何】【极角序】【二分】bzoj1914 [Usaco2010 OPen]Triangle Counting 数三角形相关推荐

  1. bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形——极角排序

    Description 在一只大灰狼偷偷潜入Farmer Don的牛群被群牛发现后,贝西现在不得不履行着她站岗的职责.从她的守卫塔向下瞭望简直就是一件烦透了的事情.她决定做一些开发智力的小练习,防止她 ...

  2. AMNO.6 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字

    题目描述 给出一个不多于5位的整数,要求 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字 输出 三行 第一行 位数 第二 ...

  3. NYOJ 982 Triangle Counting (数学题)

    Triangle Counting 时间限制:1000 ms  |  内存限制:65535 KB 描述 You are given n rods of length 1, 2-, n. You hav ...

  4. UVA 11401 Triangle Counting(详解)

    Triangle Counting 分析一下 以八为例子 1 2 3 4 5 6 7 8 以(7,8)为边,就有6 7 8, 5 7 8, 4 7 8 ,3 7 8 ,2 7 8 五种情况: 以(6, ...

  5. UVA 11401 - Triangle Counting

    Problem G Triangle Counting Input: Standard Input Output: Standard Output You are given n rods of le ...

  6. Triangle Counting【数学】

    Triangle Counting UVA - 11401 题目传送门 题目大意:输入一个整数n,求在1到n中选取三条边能够组成多少种三角形. AC代码: #include <cstdio> ...

  7. uva11401:Triangle Counting 递推 数学

    uva11401:Triangle Counting 题目读不清楚的下场就是多做两个小时...从1-n中任选3个不重复数字(不重复啊!!坑爹啊!)问能组成三角形的有多少个, 显然1~n能组成的三角形集 ...

  8. 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123。

    撰写人--软工二班--陈喜平 题目描述 给出一个不多于5位的整数,要求 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出123. 将下面的程序填写完整. # ...

  9. 给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321

    给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321 int main() {int n;int a,b,c,d,e;//个,十,百 ...

最新文章

  1. debian安装oracle jdk
  2. WINCE5.0和WINCE6.0的内存与系统架构
  3. ITK:创建另一个图像实例
  4. TensorFlow: Could not load requested Qt binding.
  5. eclipse怎样改编码格式_Eclipse中各种编码格式及设置
  6. 微信无连接服务器1.104,微信成语猜猜看太子少师答案汇总 太子少师1-104关攻略...
  7. Entityframework Code First 系列
  8. js隐藏打开项目隐藏编辑 和删除按钮
  9. 全站HTTPS来了!有何优势、与HTTP有何不同
  10. 【TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 1130期】
  11. JS 幻灯片代码(含自动播放)
  12. 第六周博客作业西北师范大学|李晓婷
  13. tibco往服务器发消息,Tibco EMS 初级使用方法小结
  14. Beer Bill(签到题)
  15. Dynamics 365 窗体中设置可编辑的子网格
  16. 详解Python中get函数的用法(附代码)
  17. Solution to no ADO.NET in VS2019 VS里没有ADO的解决办法
  18. 多人同时编辑excel,只需一招就搞定
  19. 联想笔记本更换固态硬盘和重装系统
  20. python使用nltk进行中文语料库的词频分布统计

热门文章

  1. Java开发工程师的发展前景如何?
  2. 关于两栏布局,三栏布局,一级点击三角触发select的onchange事件问题
  3. 转:mysql show processlist命令 详解
  4. Minimum edit distance(levenshtein distance)(最小编辑距离)初探
  5. 微信小程序chooseImage(从本地相册选择图片或使用相机拍照)
  6. markdown这么好用的东西我才知道。。。多么不折腾的我。。。
  7. [Unity] Unity3D研究院编辑器之自定义默认资源的Inspector面板
  8. [原] Cgroup CPU, Blkio 测试
  9. [转]送给和我一样曾经浮躁过的PHP程序猿
  10. 深度学习入门实例——基于keras的mnist手写数字识别