D. Vanya and Triangles(Codeforces Round #308 (Div. 2))

Note

Note to the first sample test. There are3triangles formed:(0,0)-(1,1)-(2,0);(0,0)-(2,2)-(2,0);(1,1)-(2,2)-(2,0).

Note to the second sample test. There is1triangle formed:(0,0)-(1,1)-(2,0).

Note to the third sample test. A single point doesn’t form a single triangle.

给你二维坐标下的n个点,,问一共能构成多少个面积不为0的三角形。

转载请注明出处:寻找&星空の孩子

题目链接:

#include<cstdio>#include<cmath>#include<iostream>#define PI acos(-1.0)using namespace std;struct Point{double x,y;Point(double x=0,double y=0):x(x),y(y){}};typedef Point Vector;Vector operator + (Vector A,Vector B){return Vector(A.x+B.x,A.y+B.y);}Vector operator – (Point A,Point B){return Vector(A.x-B.x,A.y-B.y);}Vector operator * (Vector A,double p){return Vector(A.x*p,A.y*p);}Vector operator / (Vector A,double p){return Vector(A.x/p,A.y/p);}bool operator < (const Point& a,const Point& b){return a.x<b.x||(a.x==b.x && a.y<b.y);}const double eps = 1e-10;int dcmp(double x){if(fabs(x)<eps)return 0;else return x < 0 ? -1 : 1;}bool operator == (const Point& a,const Point& b){return dcmp(a.x-b.x)==0 && dcmp(a.y-b.y)==0;}double Dot(Vector A,Vector B){return A.x*B.x+A.y*B.y;}double length(Vector A){return sqrt(Dot(A,A));}double Angle(Vector A,Vector B){return acos(Dot(A,B)/length(A)/length(B));}double Cross(Vector A,Vector B){return A.x*B.y-B.x*A.y;}double Area2(Point A,Point B,Point C){return Cross(B-A,C-A);}inline Point read_point(Point &P){scanf("%lf%lf",&P.x,&P.y);return P;}int main(){int n;Point po[2005];scanf("%d",&n);for(int i=0;i<n;i++)read_point(po[i]);if(n<3){printf("0\n");return 0;}int cnt=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){for(int k=j+1;k<n;k++){if(Area2(po[i],po[j],po[k])!=0) cnt++;}}}printf("%d\n",cnt);return 0;}

别让别人徘徊的脚步踩碎你明天美好的梦想,

D. Vanya and Triangles(Codeforces Round #308 (Div. 2))

相关文章:

你感兴趣的文章:

标签云: