题目描述

On a plane are

n

points (

x_{i}

,

y_{i}

) with integer coordinates between

0

and

10^{6}

. The distance between the two points with numbers

a

and

b

is said to be the following value: (the distance calculated by such formula is called Manhattan distance).

We call a hamiltonian path to be some permutation

p_{i}

of numbers from

1

to

n

. We say that the length of this path is value .

Find some hamiltonian path with a length of no more than

25×10^{8}

. Note that you do not have to minimize the path length.

输入输出格式

输入格式:

The first line contains integer

n

(

1<=n<=10^{6}

).

The

i+1

-th line contains the coordinates of the

i

-th point:

x_{i}

and

y_{i}

(

0<=x_{i},y_{i}<=10^{6}

).

It is guaranteed that no two points coincide.

输出格式:

Print the permutation of numbers

p_{i}

from

1

to

n

— the sought Hamiltonian path. The permutation must meet the inequality .

If there are multiple possible answers, print any of them.

It is guaranteed that the answer exists.

输入输出样例

输入样例#1: 复制

输出样例#1: 复制

说明

In the sample test the total distance is:

(|5-3|+|0-4|)+(|3-0|+|4-7|)+(|0-8|+|7-10|)+(|8-9|+|10-12|)=2+4+3+3+8+3+1+2=26

更多的算思路题

求将所有点按照一个顺序排序使得所有相邻点之间的哈密顿距离相加<=2.5e9

将x按照每1000一分组 然后组内y按照升序排序考虑 y就算从小走到大一共只有1e6 那么10^3*1e6=1e9

坐标范围

考虑给x按照每1000个一分组 那么显然一共 10^3次组 每个组里的点最多走1000 那么1000^3正好是1e9

所以1e9+1e9<2.5e9

 

分类: 分块数学

elijahqi

辣鸡蒟蒻一枚qwq 欢迎加qq qwq 2922945330

发表评论