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

Posted notnight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #319 (Div. 2) E - Points on Plane相关的知识,希望对你有一定的参考价值。

题目大意:在一个平面里有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的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

Codeforces 319B. Psychos in a Line单调栈

Codeforces Round #726 (Div. 2) B. Bad Boy(贪心)

Codeforces319 A. Malek Dance Club(异或性质,组合数学)

Codeforces319 B. Psychos in a Line(dp,单调栈+线段树)