cf#308-D - Vanya and Triangles-求平面点集中三角形个数-枚举-n^2logn
来源:互联网 发布:美国最新非农数据 编辑:程序博客网 时间:2024/05/16 19:04
http://codeforces.com/contest/552/problem/D
给n,n个点,求构成的面积非零的三角形个数。。
共c(n,3)种,要除去三点共线的即可咯
枚举点i ,对所有(j>i)的点 ,求一遍斜率,最后 与点i构成斜率为K的点数有x个,那么便有C(x,2)个共线三角形咯。 全部累加起来最后 被c(n,3)减去就是答案了咯
统计斜率部分用map比较方便咯
【注意爆int】【注意double精度问题 】
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <queue>#include <map>#include <set>#include <vector>#include <iostream>using namespace std;const double pi=acos(-1.0);double eps=0.000001; __int64 min(__int64 a,__int64 b){return a<b?a:b;} __int64 max(__int64 a,__int64 b){return a>b?a:b;} struct POINT { int x; int y; POINT(double a=0, double b=0) { x=a; y=b;} //constructor double jijiao;};POINT p[2005];__int64 gcd(__int64 a,__int64 b){if (!b)return a;else return gcd(b,a%b);} double get(__int64 i,__int64 j) {__int64 y=p[i].y-p[j].y;__int64 x=p[i].x-p[j].x; if (!x)return 100000;__int64 gd=gcd(x,y);x/=gd;y/=gd; return (y*1.0/x); } map <double,__int64 >sb; map <double,__int64 >::iterator it;;int main() {__int64 n;scanf("%I64d",&n);__int64 i,j; for (i=1;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y); __int64 ans=0;for (i=1;i<=n;i++){sb.clear();for(j=i+1;j<=n;j++){ double k=get(i,j);sb[k]++;}for (it=sb.begin();it!=sb.end();it++){ if (it->second>=2)ans+= (it->second)*(it->second-1)/2 ;} }printf("%I64d\n",n*(n-1)*(n-2)/6-ans);return 0;}
0 0
- cf#308-D - Vanya and Triangles-求平面点集中三角形个数-枚举-n^2logn
- 552D Vanya and Triangles (求任意三点组成的三角形个数)
- cf #308 D. Vanya and Triangles (几何)
- CodeForces - 552D Vanya and Triangles (数学几何求三角形个数)水
- #308 (div.2) D. Vanya and Triangles
- codeforces #308 D.Vanya and Triangles(枚举+斜率分块)
- Codeforces Round #308 (Div. 2) D. Vanya and Triangles (判断三角形数量)
- CodeForces 552D-Vanya and Triangles【计算整数三点能否组成三角形】
- D. Vanya and Triangles(Codeforces Round #308 (Div. 2))
- Codeforces Round #308 (Div. 2) D. Vanya and Triangles
- Codeforces Round #308 (Div. 2) D Vanya and Triangles
- CodeForces 552D — Vanya and Triangles 暴力枚举
- Codeforce 552D Vanya and Triangles(暴力枚举)
- Codeforces 552D Vanya and Triangles【暴力枚举+思维】
- Codeforces 552D Vanya and Triangles
- CodeForces 552D Vanya and Triangles
- 【25.33%】【codeforces 552D】Vanya and Triangles
- cf #308 E. Vanya and Brackets (暴力枚举)
- 剑指Offer-二维数组中的查找
- kvm快照功能
- 7、大型重构
- C语言 32/64位机 数据类型字长
- iOS Xib关联错误导致的问题
- cf#308-D - Vanya and Triangles-求平面点集中三角形个数-枚举-n^2logn
- C#界面设计之谷歌地图下载并分块
- error C2057: 应输入常量表达式
- HTML4 和 HTML5 的10个关键区别
- CCF 网络延时
- Android Studio ndk-Jni开发详细入门,Aes加密demo
- 1055. 集体照 (25)
- Gremlin实现分析
- 关于Ajax无法下载文件到浏览器本地的问题