hdu 3629 Convex 计算几何
2015-04-09 22:43
357 查看
不会做,很可耻的看了题解,题解还看了那么久。http://blog.sina.com.cn/s/blog_64675f540100ksug.html
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3629
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3629
#include <stdio.h> #include <math.h> #include <algorithm> #include <iostream> #define eps 1e-8 #define pi acos(-1.0) #define maxn 705 using namespace std; int T,n; struct Node { double x,y; }; __int64 C(int n,int m){ __int64 ans = 1; __int64 i,a1=n,a2=m; for(i=0;i<a2;i++){ ans *= (a1-i); } for(i=1;i<=a2;i++){ ans /= i; } return ans; } Node a[maxn]; double ad[maxn*2]; __int64 re,re2; void Solve(){ scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%lf %lf",&a[i].x,&a[i].y); } re = 0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i==j)continue; double tmp =atan2(a[j].y-a[i].y,a[j].x-a[i].x); if(tmp<-eps)tmp += 2 * pi; ad[j] = j < i ? tmp : ad[j-1] = tmp; } sort(ad,ad+n-1); int k = 1; re2 = 0; for(int j=0;j<n-1;j++){ad[j+n-1]=ad[j]+2*pi;} for(int j=0;j<n-1;j++){ while(fabs(ad[k]-ad[j])-pi<0)k++; if(k-j-1>=2)re2 +=C(k-j-1,2); } re += C(n-1,3) - re2; } printf("%I64d\n",C(n,4)-re); } } void File(){ freopen("a.in","r",stdin); freopen("a.out","w",stdout); } int main(void){ //File(); Solve(); return 0; }
相关文章推荐
- HDU-3629-Convex-计算几何
- HDU 3629 Convex(10年天津,计算几何)
- hdu 3629 Convex 计算几何
- hdu 3629 计算几何
- hdu 3629 计算几何
- HDU 5979 Convex【计算几何】 (2016ACM/ICPC亚洲区大连站)
- HDU 5979 Convex【计算几何】 (2016ACM/ICPC亚洲区大连站)
- hdu 3629 计算几何
- hdu 1700 Points on Cycle<计算几何>
- hdu - 4316 - Mission Impossible - 计算几何
- hdu 4195#计算几何
- HDU 1558 Segment set, 计算几何+并查集
- HDU2108 Shape of HDU - 计算几何 判断凹凸多边形
- HDU 4410 Boomerang(计算几何)(2012杭州网络赛1001)
- hdu 3685 计算几何(好)
- hdu 4353 计算几何
- HDU 3694计算几何
- hdu 1086 很基本的计算几何
- Rotational Painting hdu 好的计算几何题!!
- HDU2108 Shape of HDU 计算几何 C语言