【CodeForces】576 C. Points on Plane
2024-09-27 13:44:30
【题意】给定坐标系中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 ;
}
最新文章
- fragment 监听返回
- C#调用webservice简单实例
- 从网页(WEB)登录SAP
- HTML系列(九):表单
- 本地存储 cookie,session,localstorage( 一)基本概念及原生API
- fork() &;&; fork() || fork()
- Java 第七周总结
- DateTime格式
- 【WC2013】糖果公园
- pycharm安装配置
- alert()、confirm()、prompt()的区别
- 二、Blender/Python API总览
- http://ctf.bugku.com/challenges#Timer(%E9%98%BF%E9%87%8CCTF):Bugku——Timer(阿里CTF)
- "garbage at end of line" on Windows 10
- js 判断数组重复元素以及重复的个数
- numpy的array数据类型(创建)
- user_mongo_in_a_docker_and_dump_database
- TCP的拥塞控制 (二)
- python:webbrowser
- 微信小程序 原生代码 转wepy 字符串处理
热门文章
- oracle和DB2的差异
- psp 第二周
- 虚拟机中安装 centOS,本地安装 SSH 连接 - 02
- HDU 4758——Walk Through Squares——2013 ACM/ICPC Asia Regional Nanjing Online
- BZOJ 1924 所驼门王的宝藏(强连通分量缩点+DAG最长链)
- BZOJ2006:[NOI2010]超级钢琴——题解
- word----遇到问题-----word中插入的图片无法左对齐----格式按钮为灰色
- 解题:CTSC 2017 吉夫特
- python基础----__slots__方法、__call__方法
- c++11变长参数函数模板