Description

在一只大灰狼偷偷潜入Farmer Don的牛群被群牛发现后,贝西现在不得不履行着她站岗的职责。从她的守卫塔向下瞭望简直就是一件烦透了的事情。她决定做一些开发智力的小练习,防止她睡着了。想象牧场是一个X,Y平面的网格。她将N只奶牛标记为1…N (1 <= N <= 100,000),每只奶牛的坐标为X_i,Y_i (-100,000 <= X_i <= 100,000;-100,000 <= Y_i <= 100,000; 1 <= i <=N)。然后她脑海里想象着所有可能由奶牛构成的三角形。如果一个三角形完全包含了原点(0,0),那么她称这个三角形为“黄金三角形”。原点不会落在任何一对奶牛的连线上。另外,不会有奶牛在原点。给出奶牛的坐标,计算出有多少个“黄金三角形”。顺便解释一下样例,考虑五只牛,坐标分别为(-5,0), (0,2), (11,2), (-11,-6), (11,-5)。下图是由贝西视角所绘出的图示。

Input

第一行:一个整数: N 第2到第N+1行: 每行两个整数X_i,Y_i,表示每只牛的坐标

Output

* 第一行: 一行包括一个整数,表示“黄金三角形的数量”

Sample Input

5
-5 0
0 2
11 2
-11 -6
11 -5

Sample Output

5
————————————————————————————————
这道题我们发现直接求黄金三角形就很难求 那么正难取反 我们可以用总的减去不符合的
那么我们考虑某一个点 那么我们从原点向这个点连一条直线 
这样之后我们从这条线的左边或者右边选点 选出来的点一定是不包含原点的
我们单独考虑一个三角形(不包含原点类的)从原点向三个端点连线
观察发现 有一条是经过这个三角形 一条三角形在这条线的顺时针方向 一条三角形在这条线的逆时针方向
所以我们单独考虑一个方向就不会算重了 第一次接触极角排序 我们按顺时针的方向排序 从第一象限开始跑
求一下顺时针方向180有多少个点 有一个结论 当前点 x1 x2 和他顺时针180的一个点 x2 y2 
那么 y2*x1<y1*x2 这个可以利用差积证明 或者直接分类证明咯 然后就可以写辣233

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using std::sort;
const int M=2e5+7,inf=0x3f3f3f3f;
int read(){int ans=0,f=1,c=getchar();while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}return ans*f;
}
int n;
struct pos{int x,y,wh; double k;}q[M];
bool cmp(pos a,pos b){return a.wh!=b.wh?a.wh<b.wh:a.k>b.k;}
int main(){int x,y;n=read();for(int i=1;i<=n;i++){x=read(); y=read();q[i].x=x; q[i].y=y;if(x) q[i].k=1.0*y/x; else q[i].k=-inf;if(x>0&&y>=0) q[i].wh=1;else if(x>=0&&y<0) q[i].wh=2;else if(x<0&&y<=0) q[i].wh=3;else q[i].wh=4;}LL ans=1LL*n*(n-1)*(n-2)/6;sort(q+1,q+1+n,cmp);LL sum=1,ly=2;for(int i=1;i<=n;i++){sum--;while(1LL*q[ly].y*q[i].x<1LL*q[i].y*q[ly].x){ly++; sum++;if(ly>n) ly-=n;}ans=ans-sum*(sum-1)/2;}printf("%lld\n",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/lyzuikeai/p/7598930.html

bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形——极角排序相关推荐

  1. 【计算几何】【极角序】【二分】bzoj1914 [Usaco2010 OPen]Triangle Counting 数三角形

    极角排序后枚举每个点,计算其与原点连线的左侧的半平面内的点与其组成的三角形数(二分/尺取),这些都不是黄金三角形. 补集转化,用平面内所有三角形的个数(C(n,3))减去这些即可. 精度很宽松,几乎不 ...

  2. bzoj 3385: [Usaco2004 Nov]Lake Counting 数池塘(DFS)

    3385: [Usaco2004 Nov]Lake Counting 数池塘 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 78  Solved: 6 ...

  3. bzoj 1630 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁(有重复元素的组合数)

    2023: [Usaco2005 Nov]Ant Counting 数蚂蚁 Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 281  Solved: 18 ...

  4. NYOJ 982 Triangle Counting (数学题)

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

  5. Triangle Counting【数学】

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

  6. uva11401:Triangle Counting 递推 数学

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

  7. 一本通1655数三角形

    1655:数三角形 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 给定一个 n×m 的网格,请计算三点都在格点上的三角形共有多少个.下图为 4×4 的网格上 ...

  8. 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, ...

  9. UVA 11401 - Triangle Counting

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

最新文章

  1. linux文件操作篇 (一)文件属性与权限
  2. 2021年6月程序员平均工资 15052,你给行业拖后腿了吗?
  3. Majority Element:主元素
  4. Python正则表达式中问号的四种用法
  5. ADO.NET、ODP.NET、Linq to SQL、ADO.NET Entity 、NHibernate在Oracle下的性能比较
  6. ICCV 2021 第二届无人车视觉(AVVision)研讨会征稿
  7. bzoj1051: [HAOI2006]受欢迎的牛(tarjan强连通分量)
  8. Leetcode 647.回文子串
  9. 采用Turbo编码的图像传输试验(AWAG信道,matlab实现)分别验证了不同交织器类型,交织深度对turbo码性能的影响
  10. 将MATLAB中不显示个别图例,隐藏图中某些图形对象的MATLAB图例条目
  11. Java url链接生成二维码
  12. 新赛季的中超和国安,荆棘中前行
  13. 【数字图像处理matlab】(HSI变换融合算法)
  14. Java POI:如何读取Excel单元格值而不是计算公式
  15. 分布式存储系统Kudu(一)、核心原理
  16. 3d卷积神经网络应用,神经网络仿真软件
  17. P1535 游荡的奶牛
  18. 把VMware虚拟机从一台电脑复制到另一台电脑
  19. java设置铃声_APP集成小米消息推送自定义铃声设置
  20. 1688商品sku数据采集方法

热门文章

  1. 如何验证本地磁盘或网络磁盘是否可以进行读写操作
  2. 图片压缩工具optipng/jpegoptim安装
  3. 戴尔新鲜空气制冷的研究:在数据中心里面,让我们脱掉厚夹克换上一件夏威夷衬衫!...
  4. 用JavaScript做301转向
  5. 高端服务器CPU详细图解
  6. ibm服务器hyper-v搭建的虚拟机操作系统数据如何导出到本机,将虚拟机从Hyper-V转移到KVM|导出完整vhdx磁盘转换qcow2...
  7. c语言中void msg,如何连接到IRC服务器/解析C语言(提供代码)的IRC MSG/PING-PONG处理...
  8. c语言编制编程语言,C语言CGI编程入门(一)
  9. java能够运行的原理_JAVA程序运行原理分析(一)
  10. MySQL高级 - 内存优化 - 优化原则