题意:判断一堆小点有多少个在任意三个大点构成的三角形里面。
思路:其实就是判断点在不在凸包里面,判断的话可以使用二分来判断,就是判断该点在凸包的哪两个点和起点的连线之间。
代码:
1 /** @xigua */ 2 #include<cstdio> 3 #include<cmath> 4 #include<iostream> 5 #include<algorithm> 6 #include<vector> 7 #include<stack> 8 #include<cstring> 9 #include<queue> 10 #include<set> 11 #include<string> 12 #include<map> 13 #include<climits> 14 #define PI acos(-1) 15 using namespace std; 16 typedef long long ll; 17 typedef double db; 18 const int maxn = 5e4 + 5; 19 const int mod = (1 << 31) - 1; 20 const int INF = 1e8 + 5; 21 const ll inf = 1e15 + 5; 22 const db eps = 1e-6; 23 24 struct Node { 25 ll x, y, id; 26 } po[maxn]; 27 int n; 28 int flag; 29 30 bool cmp(const Node &a, const Node &b) { 31 if (a.x == b.x) return a.y < b.y;