zoukankan      html  css  js  c++  java
  • Codeforces Round #319 (Div. 2) E

    题目大意:在一个平面里有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
  • 相关阅读:
    Redis主从复制
    Redis发布订阅
    Redis持久化
    初探redis.config
    java连接Linux服务器问题
    Redis常见类型及API
    Redis安装
    Nosql
    JMM
    SpringSecurity
  • 原文地址:https://www.cnblogs.com/CJLHY/p/8044671.html
Copyright © 2011-2022 走看看