题目链接:哆啦A梦传送门
题意:给你3*n个点,让你组成n个三角形,满足任意两个三角形都不相交,每行输出一个三角形,分别为三角形的三个点。
题解:贪心排序一下,使得两两相邻。
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1010;
struct node{
int x,y,id;
bool operator < (const node a) const{
if(x!=a.x) return x<a.x;
else return y<a.y;
}
}ans[3*maxn];
int main()
{
int ncase;
scanf("%d",&ncase);
while(ncase--)
{
int n;
scanf("%d",&n);
for(int i=1;i<=3*n;i++)
scanf("%d%d",&ans[i].x,&ans[i].y),ans[i].id=i;
sort(ans+1,ans+1+3*n);
for(int i=1;i<=3*n;i+=3){
printf("%d %d %d\n",ans[i].id,ans[i+1].id,ans[i+2].id);
}
}
return 0;
}
我的标签:做个有情怀的程序员。