3210: 花神的浇花集会

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 577  Solved: 299
[Submit][Status][Discuss]

Description

在花老师的指导下,每周4都有一个集会活动,俗称“浇水”活动。

具体浇水活动详情请见BZOJ3153

但这不是重点

花神出了好多题,每道题都有两个参考系数:代码难度和算法难度

花神为了准备浇花集会的题,必须找一道尽量适合所有人的题

现在花神知道每个人的代码能力x和算法能力y,一道题(代码难度X算法难度Y)对这个人的不适合度为    Max ( abs ( X – x ) , abs ( Y – y ) )

也就是说无论太难还是太简单都会导致题目不适合做(如果全按花神本人能力设题,绝对的全场爆0的节奏,太简单,则体现不出花神的实力)

当然不是每次都如花神所愿,不一定有一道题适合所有人,所以要使所有人的不合适度总和尽可能低

花神出了100001*100001道题,每道题的代码难度和算法难度都为0,1,2,3,……,100000

Input

第一行一个正整数N,表示花神有N个学生,花神要为这N个学生选一道题

接下来N行,每行两个空格隔开的整数x[i],y[i],表示这个学生的代码能力和算法能力


Output

一个整数,表示最小的不合适度总和


Sample Input

3

1 2

2 1

3 3

Sample Output

3

HINT

对于100%的数据,n<=100000,0<=x[i],y[i]<=100000

Source

[Submit][Status][Discuss]

很有意思,关键在于将切比雪夫距离(第一次听说这个名字)转换成我们熟悉的曼哈顿距离。

如果原本点的坐标是$(x,y)$,我们现将其坐标转换为$(x+y,x-y)$,就可以满足要求了。

当$x_{1}\leq x_{2},y_{1}\leq y_{2},x_{2}-x{1}\leq y_{2}-y{1}$,距离应为$y_{2}-y_{1}$,我们求到的距离是$(x_{1}+y_{1},x_{1}-y_{1})-(x_{2}+y_{2},x_{2}-y_{2})=|x_{1}+y_{1}-x_{2}-y_{2}|+|x_{1}-y_{1}-x_{2}+y_{2}|=x_{2}-x_{1}+y_{2}-y_{1}+y_{2}-y_{1}+x_{1}-x_{2}=2y_{2}-2y_{1}$,确实符合要求(只是现在距离是应得距离二倍)。另外几个式子类似,不写了。

现在我们要求新的图中某个点使得到点集中所有点的曼哈顿距离和最小,这就是中位数了。注意找一个x,y奇偶性相同的点,使得最终答案是整数。

 #include <bits/stdc++.h>

 inline char nextChar(void)
{
static const int siz = << ; static char buf[siz];
static char *hd = buf + siz;
static char *tl = buf + siz; if (hd == tl)
fread(hd = buf, , siz, stdin); return *hd++;
} inline int nextInt(void)
{
register int ret = ;
register bool neg = false;
register char bit = nextChar(); for (; bit < ; bit = nextChar())
if (bit == '-')neg ^= true; for (; bit > ; bit = nextChar())
ret = ret * + bit - ''; return neg ? -ret : ret;
} typedef long long lnt; const int siz = ; int n;
int x[siz];
int y[siz]; inline lnt calc(int a, int b)
{
lnt ret = ; for (int i = ; i <= n; ++i)
ret += abs(x[i] - a) + abs(y[i] - b); return ret;
} signed main(void)
{
n = nextInt(); for (int i = ; i <= n; ++i)
{
int a = nextInt();
int b = nextInt(); x[i] = a + b;
y[i] = a - b;
} std::sort(x + , x + + n);
std::sort(y + , y + + n); int a = x[(n + ) >> ];
int b = y[(n + ) >> ]; if ((a + b) & )
{
lnt ans = 2e18 + ; ans = std::min(ans, calc(a + , b));
ans = std::min(ans, calc(a - , b));
ans = std::min(ans, calc(a, b + ));
ans = std::min(ans, calc(a, b - )); printf("%lld\n", ans >> );
}
else
printf("%lld\n", calc(a, b) >> );
}

@Author: YouSiki

BZOJ 3210: 花神的浇花集会的更多相关文章

  1. BZOJ 3210 花神的浇花集会 计算几何- -?

    题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与3170不同的是这次选择的点无需是n个点中的一个 首先将每一个点(x,y)变为(x+y,x-y) 这样新点之间的曼哈顿距离的一 ...

  2. BZOJ 3210: 花神的浇花集会 (切比雪夫距离)

    GXZlegend 切比雪夫和曼哈顿距离的互相转化看这里 传送门 CODE #include <bits/stdc++.h> using namespace std; #define LL ...

  3. 【BZOJ】【3210】花神的浇花集会

    曼哈顿距离与切比雪夫距离 QAQ蒟蒻并不知道切比雪夫距离是什么……并不会做这道题…… 去膜拜了PoPoQQQ大爷的题解: 题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与31 ...

  4. BZOJ3210: 花神的浇花集会

    3210: 花神的浇花集会 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 238  Solved: 119[Submit][Status] Descri ...

  5. BZOJ_3210_花神的浇花集会_切比雪夫距离

    BZOJ_3210_花神的浇花集会_切比雪夫距离 Description 在花老师的指导下,每周4都有一个集会活动,俗称“浇水”活动. 具体浇水活动详情请见BZOJ3153 但这不是重点 花神出了好多 ...

  6. 【bzoj3210】花神的浇花集会 旋转坐标系

    题目描述 在花老师的指导下,每周4都有一个集会活动,俗称“浇水”活动. 具体浇水活动详情请见BZOJ3153 但这不是重点 花神出了好多题,每道题都有两个参考系数:代码难度和算法难度 花神为了准备浇花 ...

  7. BZOJ3210: 花神的浇花集会(坐标系变换)

    题面 传送门 题解 坐标系变换把切比雪夫距离转化为曼哈顿距离 那么对于所有的\(x\)坐标中,肯定是中位数最优了,\(y\)坐标同理 然而有可能这个新的点不合法,也就是说不存在\((x+y,x-y)\ ...

  8. bzoj3210 花神的浇花集会 坐标

    题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与3170不同的是这次选择的点无需是n个点中的一个 首先将每个点(x,y)变为(x+y,x-y) 这样新点之间的曼哈顿距离的一半 ...

  9. 【bzoj3210】花神的浇花集会

    将(x,y)转化成(x+y,x-y)可以将切比雪夫距离转化成曼哈顿距离(自己推一推) A.B的切比雪夫距离就是A‘.B‘曼哈顿距离的一半. 那么可以将x.y分离处理,排序中位数即可. 注意如果最后选的 ...

随机推荐

  1. Linux Ubuntu 安装、汉化、常用操作

    一.安装Ubuntu Desktop 安装前准备 现在的PC机都可以满足要求. 软件准备 vmware:http://www.vmware.com/cn ubuntu:18ubuntu Desktop ...

  2. spring boot 配置全局日期类型转换器

    1. 首先自定义一个类型转换器 import org.springframework.core.convert.converter.Converter; import org.springframew ...

  3. 琴声不等式--jensen

    (来自百度百科) 1. 凹函数,不加权 2. 凹函数,加权 3. 凸函数,不加权 4. 凸函数,加权 应用 在EM算法Q函数的推导中,用到了第二个不等式(凹函数,加权)

  4. Vue的computed计算属性是如何实现的

    一个开始 有如下代码,full是一个计算属性,开始,他的值是'hello world',1s后,msg变成了‘I like’, full的值同步变成了'I like world';其原理解析来看一下. ...

  5. sublime c/c++ 环境

    sublime c/c++ 环境 参考: 别人的教程1 别人的教程2 注意,一定要用cmd先试一下,编译成功后再用sublime试 我遇到了一个很诡异的问题,就是cmd运行正常但sublime显示 在 ...

  6. Daily Scrum (2015/11/2)

    今日我们完成了博客作业的发布,并且也完成了服务器的配置. 成员 今日工作 时间 明日工作 符美潇 两篇文档的修善和数据库的搭建. 2h 完成数据库搭建,并能爬取数据提供给第二小组使用 潘礼鹏 编写两篇 ...

  7. Java程序设计第四次实验报告

    北京电子科技学院(BESTI) 实     验    报     告 课程:java程序设计 班级:1352  姓名:何伟钦  学号:20135223 成绩:            指导教师:娄嘉鹏 ...

  8. 软工1816 · Beta冲刺(5/7)

    团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 推进后端完成安卓端接口的开发 在测试中发现返回地图接口存在错误(待修复) 推进 ...

  9. 2017 Summary

    几门课 基础电路与电子学 知道了一些二极管三极管的基本基本很基本的那种物理知识吧,但是毕竟我是从电信转专业过来的,所以说我内心就是逃避模电这样的课的.上课基本没听,后面只是死命复习了一周,考的还可以. ...

  10. Beta冲刺(5/7)

    队名:天机组 组员1友林 228(组长) 今日完成:修改代码 明天计划:封装代码 剩余任务:优化网络通讯机制 主要困难:暂无 收获及疑问:暂无 组员2方宜 225 今日完成:优化了ui界面 明天计划: ...