【hdu 6300】Triangle Partition

梦里梦外; 2022-05-18 03:34 203阅读 0赞

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6300

题意:有T组测试样列,输入的n代表要组成的三角形的个数,接下来3n行代表3n个点,输出n行,每行输出组成三角形的点的序号。

思路:因为题上说保证没有3个点共线,因此只需要将所有点按x和y进行从小到大排序,然后3个点一个三角形。(但这道题我用运算符重载排序时,wa了,提示我时间超限,改成cmp后却过咧 Ծ‸Ծ )

My DaiMa:

  1. #include<bits/stdc++.h>
  2. //#include<set>
  3. using namespace std;
  4. const int Max = 1e5+5;
  5. struct triangle
  6. {
  7. int x,y,k;
  8. };
  9. triangle t[Max];
  10. int cmp(triangle t1,triangle t2)
  11. {
  12. if(t1.x == t2.x)
  13. return t1.y < t2.y;
  14. return t1.x < t2.x;
  15. }
  16. int main()
  17. {
  18. int T,n;
  19. scanf("%d",&T);
  20. while(T--)
  21. {
  22. scanf("%d",&n);
  23. for(int i = 0; i < 3*n; i++)
  24. {
  25. scanf("%d%d",&t[i].x,&t[i].y);
  26. t[i].k = i+1;
  27. }
  28. sort(t,t+3*n,cmp);//将所有点从小到大排序
  29. for(int i = 0; i < 3*n ; i++)
  30. {
  31. if((i+1)%3 == 0)
  32. printf("%d\n",t[i].k);//输出点的序号
  33. else
  34. printf("%d ",t[i].k);
  35. }
  36. }
  37. }

附精美照片一枚

20160203175258_KVzjr.jpeg

发表评论

表情:
评论列表 (有 0 条评论,203人围观)

还没有评论,来说两句吧...

相关阅读