2018 Multi-University Training Contest 1 1003Triangle Partition

题目意思:求组成不相交的三角形使用的三个顶点的编号

解法:根据输入的坐标,按x排序,在从左到右三个一批取

#include 
#include 
#include 
using namespace std;
typedef struct {//存输入的点的位置信息
	int x, y;
	int num;//表示点的编号
}T;
bool cmp(T a, T b) {//根据x排序
	return a.x <= b.x;
}
int main() {
	int t, n;
	scanf("%d", &t);
	while(t--) {
		T q[10005];
		scanf("%d", &n);
		for(int i = 0; i < 3*n; i++) {
			scanf("%d %d", &q[i].x, &q[i].y);
			q[i].num = i + 1;
		}
		sort(q, q+3*n, cmp);//排序
		for(int i = 0; i < n; i++) {
			printf("%d %d %d\n", q[3*i].num, q[3*i+1].num, q[3*i+2].num);//三个一组输出
		}
	}	
	return 0;
}

 

你可能感兴趣的:(计算几何,2018,Training)