I - Moon Game
题意:n个点, 问各一个成几个不重复的凸四边形;
思路:凸四边形对角线一定相交;
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <math.h>
#include <queue>
using namespace std;
struct node{
double x, y;
}point[105];
double cross(node a, node b, node c){
return (b.x-a.x)*(c.y-b.y)-(b.y-a.y)*(c.x-b.x);
}
bool judge(int i, int j, int k, int l){
if(cross(point[i], point[j], point[k])*cross(point[i], point[j], point[l])<0&&cross(point[k], point[l], point[i])*cross(point[k], point[l], point[j])<0) return true;
else return false;
}
int main(){
int T;
cin >>T;
int ca=0;
while(T--){
ca++;
int n;
cin >> n;
int cnt=0;
for(int i=0; i<n; i++){
cin >> point[i].x >> point[i].y;
}
for(int i=0; i<n; i++){
for(int j=i+1; j<n; j++){
for(int k=j+1; k<n; k++){
for(int l=k+1; l<n; l++){
if(judge(i, j, k, l)||judge(i, k, j, l)||judge(i, l, j, k)) cnt++;
}
}
}
}
cout <<"Case " <<ca << ": " <<cnt <<endl;
}
return 0;
}