首页 > 其他 > 详细

Codeforces Round #319 (Div. 2) E - Points on Plane

时间:2017-12-15 20:29:53      阅读:202      评论:0      收藏:0      [点我收藏+]

题目大意:在一个平面里有n个点,点坐标的值在1-1e6之间,让你给出一个遍历所有点的顺序,要求每个点走一次,且

曼哈顿距离之和小于25*1e8。

 

思路:想了一会就有了思路,我们可以把1e6的x,y坐标都分成2000份,每份500,然后这样整个平面就被分成

了2000*2000个区域,然后按区域输出点就行了。

 

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n;
 4 vector<int> ans[2005][2005];
 5 int main()
 6 {
 7     scanf("%d",&n);
 8     for(int i=1;i<=n;i++)
 9     {
10         int x,y; scanf("%d%d",&x,&y);
11         ans[x/500][y/500].push_back(i);
12     }
13     bool flag=false;
14     for(int i=0;i<=2004;i++)
15     {
16         if(!flag)
17         {
18             for(int j=0;j<=2004;j++)
19             {
20                 for(int k:ans[i][j]) printf("%d ",k);
21             }
22         }
23         else
24         {
25             for(int j=2004;j>=0;j--)
26             {
27                 for(int k:ans[i][j]) printf("%d ",k);
28             }
29         }
30         flag=!flag;
31     }
32     return 0;
33 }
View Code

 

Codeforces Round #319 (Div. 2) E - Points on Plane

原文:http://www.cnblogs.com/CJLHY/p/8044671.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!