Hackerearth: Mathison and the Pokémon fights
Mathison and the Pokémon fights code
这是一道比较有意思,出的也非常好的题目。
给定$n$个平面上的点$(x_i, y_i)$,(允许离线地)维护$Q$个操作:
1. 0 $p$ $x$ $y$ 更改第$p$个点为$(x, y)$。
2. 1 $l$ $r$ $x$ $y$ 求第l个到第r个点与$(x, y)$之间的Chebyshev距离之和,即
$$ \sum_{i=l}^r \max\{|x_i-x|, |y_i-y|\}. $$
分析:
Chebyshev距离可以通过变换
$$(x, y) \mapsto (x+y, x-y)$$
转化为Manhattan距离,即 $(x_1, y_1)$与$(x_2, y_2)$的Chebyshev距离 等于 $(x_1+y_1, x_1-y_1)$与$(x_2+y_2, x_2-y_2)$的Manhattan距离的一半(因为变换的时候坐标放大了一倍)。
经过这个变换之后,x坐标和y坐标就相互独立了,因为两个点$(x_1, y_1)$与$(x_2, y_2)$的Manhattan距离为$|x_1-x_2|+|y_1-y_2|$。
于是转换成了一个更简单的题目:
给定一个长度为$n$的序列$a_i$,(允许离线地)维护$Q$个操作:
1. 0 $p$ $x$ 更改$a_p$为$x$。
2. 1 $l$ $r$ $x$ 求$\sum_{i=l}^r |x-x_i|$。
这题有很多种做法,官方题解的复杂度是$O(n \sqrt n \log n)$,不尽如人意。
我在比赛时成为了全场最快的解法,总时间18.65s,最大点1.16s,大概比速度第二快的(总时间大约30+s)快一倍。
解法是离线的cdq分治+树状数组。
把每个操作分成两个操作:
1. 0 $p$ $x$ 认为是 ①在平面上删除$(p, x_p)$,②在平面上插入$(p, x)$。
2. 1 $l$ $r$ $x$ 认为是 ①求$1\dots r$之和,②求$1\dots l$之和。
这样可以通过cdq维护二维偏序来解决这个问题。
时间复杂度$O((n+Q) \log^2(n+Q))$。
Hackerearth: Mathison and the Pokémon fights的更多相关文章
- 2017"百度之星"程序设计大赛 - 复赛1003&&HDU 6146 Pokémon GO【数学,递推,dp】
Pokémon GO Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Pokémon Go呼应设计:让全世界玩家疯狂沉迷
引言:什么样的呼应设计会让移动游戏玩家沉迷?那必须为玩家构建一个属于玩家本人或者被玩家认可的虚拟环境,或者说是被玩家认可的虚拟世界.在移动游戏时代,想要做到这一点并不容易.但Pokémon Go却做到 ...
- 【HDU-6146】Pokémon GO(dp)
百度之星2017复赛1003 HDU-6146 Pokémon GO 题意 两行n列,只能到相邻格子,可以斜着.求遍历的方案数. 题解 dp[i]从一个点出发遍历长度i最后回到这一列的方案数 dp2[ ...
- 【CF625E】Frog Fights(模拟)
[CF625E]Frog Fights(模拟) 题面 CF 洛谷 翻译: 有\(n\)只青蛙在一个被分为了\(m\)等分的圆上,对于每份顺时针依次标号. 初始时每只青蛙所在的位置是\(p_i\),速度 ...
- Magisk+Xposed+Root switch+Pokémon GO
If you follow Android Police, there's a good chance you've got a rooted device, whether it be an eas ...
- Codeforces Round #342 (Div. 2) E. Frog Fights set 模拟
E. Frog Fights 题目连接: http://www.codeforces.com/contest/625/problem/E Description stap Bender recentl ...
- hdu 6146 Pokémon GO (计数)
Problem Description 众所周知,度度熊最近沉迷于 Pokémon GO. 今天它决定要抓住所有的精灵球!为了不让度度熊失望,精灵球已经被事先放置在一个2*N的格子上,每一个格子上都有 ...
- C2. Pokémon Army (hard version) 解析(思維)
Codeforce 1420 C2. Pokémon Army (hard version) 解析(思維) 今天我們來看看CF1420C2 題目連結 題目 略,請直接看原題. 前言 根本想不到這個等價 ...
- C1. Pokémon Army (easy version) 解析(DP)
Codeforce 1420 C1. Pokémon Army (easy version) 解析(DP) 今天我們來看看CF1420C1 題目連結 題目 對於一個數列\(a\),選若干個數字,求al ...
随机推荐
- 使用CSS去除 去掉超链接的下划线方法
我们可以用CSS语法来控制超链接的形式.颜色变化,为什么链接一定要使用下划线和颜色区分呢? 其主要原因主要是考虑到 1.视力差的人 2.色盲的人 ... 下面我们做一个这样的链接:未被点击时超链接 ...
- Mac--安装kubernetes并运行echoserver
安装minikube curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.15.0/minikube-darwi ...
- CNN网络--AlexNet
ImageNet Classification with Deep Convolutional Neural Networks 从AlexNet剖析-卷积网络CNN的一般结构 AlexNet是Hint ...
- python异常捕获异常堆栈输出
python异常捕获异常堆栈输出 学习了:https://blog.csdn.net/chris_grass/article/details/77927902 import traceback def ...
- 30 分钟编写一个 Flask 应用
Flask 是一种很赞的Python web框架.它极小,简单,最棒的是它很容易学. 今天我来带你搭建你的第一个Flask web应用!和官方教程 一样,你将搭建你自己的微博客系统:Flaskr.和官 ...
- HDU-1076-An Easy Task(Debian下水题測试.....)
An Easy Task Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- sphinx的配置和管理
网上配置文档众多,但是对着他们的文档来做老是出问题,于是花了点时间研究了一下,写成总结,方便以后查阅.也希望学习sphinx的朋友能少走弯路.Coreseek的安装请参考:http://blog.ch ...
- HTML的常用标签和表格
拼接多个网页
- MAC Intellij IDEA 经常使用快捷键(本人亲自測试过)
MAC Intellij IDEA 经常使用快捷键 keymap 设置 MAC OS X 10.5+ alt+f7查找变量方法使用的地方 F3加入书签 Ctrl + O快捷覆写方法 Alt + F3 ...
- oracle user locke
1:管理员登录 sqlplus sys/pwd as sysdba sql->alter user jd account unlock; commit; SQL> password new ...