#51 Codeforces-E. Very simple problem (计算几何)(点被多少个三角形包含)
来源:互联网 发布:郁乎苍苍的苍苍 编辑:程序博客网 时间:2024/05/16 17:10
题目链接:点击打开链接
http://codeforces.com/contest/55/problem/E
题意:
给定一个凸多边形,给定一些点,问你这些点被多少个三角形包含?
题解:
平面内n点任意三点不共线可组成n*(n-1)*(n-2)/6个三角形。
求出不包含该点的三角形个数,用总个数减去这些即可。即用n*n(n-1)*(n-2)/6 - 不包含该点的三角形个数.
AC代码:
#include<bits/stdc++.h>using namespace std;typedef long long ll;struct Point{ll x,y;Point(){};Point(ll x,ll y):x(x),y(y){}};Point operator-(const Point& lhs,const Point& rhs){return Point(lhs.x-rhs.x,lhs.y-rhs.y);}ll operator*(const Point& lhs,const Point& rhs){return lhs.x*rhs.y - lhs.y*rhs.x; }ll s[1<<20];Point p[1<<20];Point q;int main(){int n,m;ll l,r,ans;for(int i=2;i<(1<<20);i++){s[i]+=s[i-1]+i-1;}cin>>n;for(int i=0;i<n;i++){cin>>p[i].x>>p[i].y;p[n+i]=p[i];}cin>>m;for(int i=0;i<m;i++){cin>>q.x>>q.y;for(int j=0;j<n;j++){if((p[j]-q)*(p[j+1]-q) >= 0){ printf("0\n");goto NEXT;}}ans = 0;for(int j=0,k=0;j<n;j++){while((p[j]-q)*(p[k]-q)<=0){k++;}l = k-1-j;r = n-1-l;ans += s[l]+s[r];}printf("%I64d\n",1LL*n*(n-1)*(n-2)/6-ans/2);NEXT : continue;}return 0;}
1 0
- #51 Codeforces-E. Very simple problem (计算几何)(点被多少个三角形包含)
- codeforces 55E Very simple problem
- !HDU 4380 三角屋内有奇数个宝藏的三角形有多少个-计算几何-(向量叉乘&线段与点的关系&暴力枚举)
- SGU111 Very simple problem(大数开方)
- POJ 2535 Very Simple Problem(水~)
- CF 55E Very simple problem 题解
- CodeForces 682 E.Alyona and Triangles(计算几何)
- SGU 111 Very simple problem(高精度+二分)
- Codeforces 682E 计算几何
- 计算几何(知三角形三点坐标,求三角形的面积)
- 1166 Very Simple Problem
- [Java]Very simple problem
- sgu111:Very simple problem
- 111. Very simple problem
- SGU111 Very simple problem
- hdu6055(计算几何)计算n个整数点中有多少个正方形
- Codeforces Round #358 (Div. 2) E 计算几何 旋转卡壳求最大三角形面积
- 1375Problem E:几何题(二)
- 枚举 坑爹的奥数
- URL和URI(确定资源的地址)
- zoj1060 拓扑排序
- 工厂设计模式
- Android Asynchronous Http Client的用法实例(详解+源码)
- #51 Codeforces-E. Very simple problem (计算几何)(点被多少个三角形包含)
- error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class Stude
- 十一.MUI
- SSD: Single Shot MultiBox Detector论文阅读
- Spring MVC国际化——基于Session的国际化
- Canvas实现太极图案并旋转
- CentOS release 6.6 (64bit)升级GCC到4.8.2版本
- Disconf
- C++:引用作为返回值