【题目】C. Points on Plane

【题意】给定坐标系中n个点的坐标(范围[0,10^6]),求一种 [ 连边形成链后总长度<=2.5*10^9 ] 的方案。n<=10^6。

【算法】思维题(分块思想)

【题解】将这个10^6*10^6的矩阵划分为1000个10^3*10^6的矩阵,第奇数个矩阵内部按y升序连边,第偶数个矩阵内部按y降序连边,两个矩阵之间就直接连边。

1.到达每个点横坐标要移动10^3,总距离10^9。

2.每个矩阵内部纵坐标要移动10^6,总距离10^9。

3.矩阵之间的连边,每次最长2*10^3,总距离2*10^6。

所以总距离为2*10^9+2*10^6,满足要求。

排序的实现和分块类似,复杂度O(n log n)。

#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
int read(){
char c;int s=,t=;
while(!isdigit(c=getchar()))if(c=='-')t=-;
do{s=s*+c-'';}while(isdigit(c=getchar()));
return s*t;
}
const int maxn=;
struct cyc{int x,y,id;}a[maxn];
int n;
bool cmp(cyc a,cyc b){return a.x<b.x||(a.x==b.x&&a.y<b.y);}
int main(){
n=read();
for(int i=;i<=n;i++){
a[i].x=read()/;
a[i].y=read();
if(a[i].x%)a[i].y=-a[i].y;
a[i].id=i;
}
sort(a+,a+n+,cmp);
for(int i=;i<=n;i++)printf("%d ",a[i].id);
return ;
}

最新文章

  1. fragment 监听返回
  2. C#调用webservice简单实例
  3. 从网页(WEB)登录SAP
  4. HTML系列(九):表单
  5. 本地存储 cookie,session,localstorage( 一)基本概念及原生API
  6. fork() &amp;&amp; fork() || fork()
  7. Java 第七周总结
  8. DateTime格式
  9. 【WC2013】糖果公园
  10. pycharm安装配置
  11. alert()、confirm()、prompt()的区别
  12. 二、Blender/Python API总览
  13. http://ctf.bugku.com/challenges#Timer(%E9%98%BF%E9%87%8CCTF):Bugku——Timer(阿里CTF)
  14. "garbage at end of line" on Windows 10
  15. js 判断数组重复元素以及重复的个数
  16. numpy的array数据类型(创建)
  17. user_mongo_in_a_docker_and_dump_database
  18. TCP的拥塞控制 (二)
  19. python:webbrowser
  20. 微信小程序 原生代码 转wepy 字符串处理

热门文章

  1. oracle和DB2的差异
  2. psp 第二周
  3. 虚拟机中安装 centOS,本地安装 SSH 连接 - 02
  4. HDU 4758——Walk Through Squares——2013 ACM/ICPC Asia Regional Nanjing Online
  5. BZOJ 1924 所驼门王的宝藏(强连通分量缩点+DAG最长链)
  6. BZOJ2006:[NOI2010]超级钢琴——题解
  7. word----遇到问题-----word中插入的图片无法左对齐----格式按钮为灰色
  8. 解题:CTSC 2017 吉夫特
  9. python基础----__slots__方法、__call__方法
  10. c++11变长参数函数模板