bzoj1914 Triangle Counting 数三角形【极角排序】
来源:互联网 发布:excel矩阵相乘 编辑:程序博客网 时间:2024/05/24 03:31
解题思路:
可以发现,对于一个不是黄金三角形的三角形,有且仅有两个顶点满足:另外两个顶点在其与原点连线同侧。所以我们可以用所有三角形个数(
将所有点极角排序,枚举每个点,为了去重对于一个顶点只算在其与原点连线右侧的点数,那么不合法的三角形数就是
PS:
原来极角排序可以用atan2(y,x)函数;
它可以算出向量(x,y)与x正半轴的弧度,值域为[-
感觉计算几何白学了……我以前自己写细节调到吐血……
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cmath>#include<ctime>#include<vector>#include<set>#define ll long longusing namespace std;int getint(){ int i=0,f=1;char c; for(c=getchar();(c!='-')&&(c<'0'||c>'9');c=getchar()); if(c=='-')f=-1,c=getchar(); for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0'; return i*f;}const int N=100000;struct point{ int x,y; double k; inline friend bool operator < (const point &a,const point &b) {return a.k<b.k;} inline friend ll operator * (const point &a,const point &b) {return 1ll*a.x*b.y-1ll*a.y*b.x;}}p[N];int n;ll ans;int main(){ //freopen("lx.in","r",stdin); n=getint();ans=1ll*n*(n-1)*(n-2)/6; for(int i=0;i<n;i++) p[i].x=getint(),p[i].y=getint(),p[i].k=atan2(p[i].y,p[i].x); sort(p,p+n); for(int i=0,cnt=0,j=0;i<n;i++) { if(cnt)cnt--; while(p[i]*p[(j+1)%n]>0) cnt++,j=(j+1)%n; ans-=1ll*cnt*(cnt-1)/2; } cout<<ans<<'\n'; return 0;}
阅读全文
0 0
- bzoj1914 Triangle Counting 数三角形【极角排序】
- bzoj1914[Usaco2010 OPen]Triangle Counting 数三角形 极角排序+乱搞
- BZOJ1914: [Usaco2010 OPen]Triangle Counting 数三角形(极角排序)
- [BZOJ1914][Usaco2010 OPen]Triangle Counting 数三角形
- 【bzoj1914】[Usaco2010 OPen]Triangle Counting 数三角形
- 【bzoj1914】[Usaco2010 OPen]Triangle Counting 数三角形 计算几何
- uva11401 - Triangle Counting(数三角形)
- UVa11041 Triangle Counting 数三角形 题解
- UVa 11401 Triangle Counting 数三角形
- UVA 11401 Triangle Counting数三角形
- UVA 11401 - Triangle Counting 数三角形(推理)
- uva 11401 Triangle Counting 数三角形 递推
- BZOJ 1914: [Usaco2010 OPen]Triangle Counting 数三角形
- [USACO Open10]数三角形Triangle Counting解题报告
- ACdream 1008 A Very Easy Triangle Counting Game 数三角形
- uva 11401 Triangle Counting 数三角形 (计数问题)
- 洛谷P2992 [USACO10OPEN]三角形计数Triangle Counting
- uva 11401 Triangle Counting(一共可以组成多少三角形)
- JS禁用复制、反键、F12
- c# 模仿 vue 实现 winform 的数据模型双向绑定
- sdsad
- 关于百度地图点聚合的问题
- ExtJs常用控件属性
- bzoj1914 Triangle Counting 数三角形【极角排序】
- DB2
- python功能测试
- 大数据案例二详解 基于大数据技术的全国高速公路通行数据 动态监测平台建设
- 水仙花数
- 数组灌水问题
- Android 端外推送到底有多烦?
- Thrift 客户端 JAVA
- spark 单词统计