BZOJ 3210: 花神的浇花集会
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
1 2
2 1
3 3
Sample Output
HINT
Source
很有意思,关键在于将切比雪夫距离(第一次听说这个名字)转换成我们熟悉的曼哈顿距离。
如果原本点的坐标是$(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: 花神的浇花集会的更多相关文章
- BZOJ 3210 花神的浇花集会 计算几何- -?
题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与3170不同的是这次选择的点无需是n个点中的一个 首先将每一个点(x,y)变为(x+y,x-y) 这样新点之间的曼哈顿距离的一 ...
- BZOJ 3210: 花神的浇花集会 (切比雪夫距离)
GXZlegend 切比雪夫和曼哈顿距离的互相转化看这里 传送门 CODE #include <bits/stdc++.h> using namespace std; #define LL ...
- 【BZOJ】【3210】花神的浇花集会
曼哈顿距离与切比雪夫距离 QAQ蒟蒻并不知道切比雪夫距离是什么……并不会做这道题…… 去膜拜了PoPoQQQ大爷的题解: 题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与31 ...
- BZOJ3210: 花神的浇花集会
3210: 花神的浇花集会 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 238 Solved: 119[Submit][Status] Descri ...
- BZOJ_3210_花神的浇花集会_切比雪夫距离
BZOJ_3210_花神的浇花集会_切比雪夫距离 Description 在花老师的指导下,每周4都有一个集会活动,俗称“浇水”活动. 具体浇水活动详情请见BZOJ3153 但这不是重点 花神出了好多 ...
- 【bzoj3210】花神的浇花集会 旋转坐标系
题目描述 在花老师的指导下,每周4都有一个集会活动,俗称“浇水”活动. 具体浇水活动详情请见BZOJ3153 但这不是重点 花神出了好多题,每道题都有两个参考系数:代码难度和算法难度 花神为了准备浇花 ...
- BZOJ3210: 花神的浇花集会(坐标系变换)
题面 传送门 题解 坐标系变换把切比雪夫距离转化为曼哈顿距离 那么对于所有的\(x\)坐标中,肯定是中位数最优了,\(y\)坐标同理 然而有可能这个新的点不合法,也就是说不存在\((x+y,x-y)\ ...
- bzoj3210 花神的浇花集会 坐标
题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与3170不同的是这次选择的点无需是n个点中的一个 首先将每个点(x,y)变为(x+y,x-y) 这样新点之间的曼哈顿距离的一半 ...
- 【bzoj3210】花神的浇花集会
将(x,y)转化成(x+y,x-y)可以将切比雪夫距离转化成曼哈顿距离(自己推一推) A.B的切比雪夫距离就是A‘.B‘曼哈顿距离的一半. 那么可以将x.y分离处理,排序中位数即可. 注意如果最后选的 ...
随机推荐
- Linux命令应用大词典-第1章 登录、退出、关机和重启
1.1 login:用户登录系统 1.2 logout:退出登录shell 1.3 nologin:限制用户登录 1.4 exit:退出shell 1.5 sulogin:单用户登录(single u ...
- 九九乘法表的python复习
九九开始的复习 这周复习之前的学的知识关于range函数,gormat函数,print的使用总结一下 从一个小例子开始,开始我的回顾吧, 大家都是从那个九九乘法表开始的数学之旅,从一一得一,开始了我们 ...
- 3. 第一个程序Hello, World!
第一个接口 HelloWorld 本项目所有代码均可在github上下载. 1. 编辑config.py # 基础配置类 import os class Config(object): ROOT = ...
- 【坚持】Selenium+Python学习记录 DAY8
2018/05/ 28 [来源:菜鸟教程](http://www.runoob.com/python3/python3-examples.html) 继续敲类相关的代码 #No.1 class peo ...
- ats 转发代理
ats是一个通用代理,可配置为反向和转发代理; 转发代理可以用作基础架构中的中央工具来访问web, 它可以与缓存结合使用以降低 总体带宽使用率.转发代理充当本地网络上的客户端浏览器与这些客户端访问的所 ...
- 使用spring整合Quartz实现—定时器
使用spring整合Quartz实现—定时器(Maven项目做演示) 不基于特定的基类的方法 一,开发环境以及依赖的jar包 Spring 4.2.6.RELEASE Maven 3.3.9 Jdk ...
- 根据 WBS 列新 PID 数据
之前写过关于 菜单树的. http://www.cnblogs.com/newsea/archive/2012/08/01/2618731.html 现在在写城市树. 结构: CREATE TABLE ...
- 用python实现数字图片识别神经网络--启动网络的自我训练流程,展示网络数字图片识别效果
上一节,我们完成了网络训练代码的实现,还有一些问题需要做进一步的确认.网络的最终目标是,输入一张手写数字图片后,网络输出该图片对应的数字.由于网络需要从0到9一共十个数字中挑选出一个,于是我们的网络最 ...
- [C#] 取得每月第一天和最後一天、某月总天数
思路: 1. DateTime dt= DateTime.Now; //获取当前时间 eg:2013-09-08 09:25:0 0 2. DateTime dt1 = new DateTime(d ...
- java控制台编译通过,运行出现找不到或无法加载主类的情况
参考链接:http://www.knowsky.com/1046493.html 当建了一个包之后(假设建的包的名字为com),找到该java文件的com目录,发现编译能够通过,但是运行的时候出现了一 ...