近日,微软新大楼的设计方案正在广泛征集中,其中一种方案格外引人注目。在这个方案中,大楼由 nn 栋楼组成,这些楼从左至右连成一排,编号依次为 11 到 nn,其中第 ii 栋楼有 h_ih​i​​层。每栋楼的每一层为一个独立的 办公区域,可以步行 直达同层相邻楼栋的办公区域,以及 直达同楼栋相邻楼层的办公区域。

由于方案设计巧妙,上一层楼、下一层楼、向左右移动到相邻楼栋同层的办公区域均刚好需要 11 分钟。在这些办公区域中,有一些被 核心部门 占用了(一个办公区域内最多只有一个核心部门),出于工作效率的考虑,微软希望核心部门之间的移动时间越短越好。对于一个给定的 最大移动时间 kk,大楼的 协同值 定义为:有多少个 核心部门对 之间的移动时间不超过 kk。由于大楼门禁的限制,不可以走出整个大楼,也不可以登上天台思考人生。你可以认为在办公区域内的移动时间忽略不计,并且在大楼内总是按照最优方案进行移动。

对于一个给定的新大楼设计方案,你能算出方案的协同值么?

输入格式

第一行包含两个正整数 n,k(1\leq k\leq 200020)n,k(1≤k≤200020),分别表示大楼的栋数以及最大移动时间。

第二行包含 nn 个正整数 h_1,h_2,...,h_n(1\leq h_i\leq 20)h​1​​,h​2​​,...,h​n​​(1≤h​i​​≤20),分别表示每栋楼的层数。

接下来一行包含一个正整数 mm,表示 核心部门 个数。

接下来 mm 行,每行两个正整数 x_i,y_i(1\leq x_i\leq n,1\leq y_i\leq h_{x_i})x​i​​,y​i​​(1≤x​i​​≤n,1≤y​i​​≤h​x​i​​​​),表示该核心部门位于第 x_ix​i​​ 栋楼的第 y_iy​i​​ 层。

输入数据保证 mm 个核心部门的位置不会重复。

对于简单版本:1\leq n,m\leq 501≤n,m≤50;

对于中等版本:1\leq n\leq 200000,1\leq m\leq 20001≤n≤200000,1≤m≤2000;

对于困难版本:1\leq n,m\leq 2000001≤n,m≤200000。

输出格式

输出一个整数,即整个大楼的 协同值。

样例解释

样例对应题目描述中的图,核心部门 11 和核心部门 33 之间的距离为 8>78>7,因此不能计入答案。

样例输入

5 7
4 1 1 3 1
3
1 4
3 1
4 3

样例输出

2

首先我们必须知道怎么走最短
一开始我意识到这是个动态的情况,涉及多个变量
但这个问题好解决,如果答案关于多个变量单调,则我们可用树型数据结构快速求极值,线段树和ST表均可以
对于简单版本,数据范围小,上来写了个BFS,这没说的
但我们仔细观察一下就会发现,从一个部门走到另外一个部门,无非横向距离和纵向距离之加和
分开考虑的话,横向的距离一定不会超过|xa-xb|
纵向就值得思考了,由于观察到,

中间太高的楼层,上去是没有意义的,因为要联通才行,所以你提前上去是要走回头路的

对于这个题,只要不走回头路,也就是横纵的移动向量尽量重叠部分少就是最短的

然后你发现,如果你走到最下面那条线以下也是不好的,因为你还得上去

因此我们只要这三个方向的移动距离都加起来就好了

此处不妨设xb>xa

记hm=min{ya,yb,hxa,hxa+1,....,hxb}

则第一段是ya-hm+

第二段是xb-xa+

第三段是yb-hm

所以答案就是xb-xa+(ya+yb)-hm

利用RMQ,hm可以O(1)求出,预处理nlogn,排序mlogm,统计答案m^2,总复杂度,(nlogn+m^2)


微软大楼设计方案(中等) 推公式+RMQ问题的更多相关文章

  1. 计蒜课/ 微软大楼设计方案/中等(xjb)

    题目链接:https://nanti.jisuanke.com/t/15772 题意:中文题诶- 思路:对于坐标为p1(x1, y1), p2(x2, y2) 的两个核心, 其中 x1 <= x ...

  2. 计蒜客 微软大楼设计方案(RMQ)

    题目链接 微软大楼设计方案 中文题就不说题意了~ 首先是简单版本 满足$1 <= n, m <= 50$ 那么设$c[i][j]$为从第$i$幢楼到第$j$幢楼的最低的那幢楼的高度 计算两 ...

  3. HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)

    在一个D维空间,只有整点,点的每个维度的值是0~n-1 .现每秒生成D条线段,第i条线段与第i维度的轴平行.问D条线段的相交期望. 生成线段[a1,a2]的方法(假设该线段为第i条,即与第i维度的轴平 ...

  4. HDU 4870 Rating(概率、期望、推公式) && ZOJ 3415 Zhou Yu

    其实zoj 3415不是应该叫Yu Zhou吗...碰到ZOJ 3415之后用了第二个参考网址的方法去求通项,然后这次碰到4870不会搞.参考了chanme的,然后重新把周瑜跟排名都反复推导(不是推倒 ...

  5. HDU 5047 推公式+别样输出

    题意:给n个‘M'形,问最多能把平面分成多少区域 解法:推公式 : f(n) = 4n(4n+1)/2 - 9n + 1 = (8n+1)(n-1)+2 前面部分有可能超long long,所以要转化 ...

  6. CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)

    问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...

  7. bjfu1211 推公式,筛素数

    题目是求fun(n)的值 fun(n)= Gcd(3)+Gcd(4)+…+Gcd(i)+…+Gcd(n).Gcd(n)=gcd(C[n][1],C[n][2],……,C[n][n-1])C[n][k] ...

  8. sgu495:概率dp / 推公式

    概率题..可以dp也可以推公式 抽象出来的题目大意: 有 n个小球,有放回的取m次  问 被取出来过的小球的个数的期望 dp维护两个状态 第 i 次取出的是 没有被取出来过的小球的 概率dp[i] 和 ...

  9. ASC(22)H(大数+推公式)

    High Speed Trains Time Limit: 4000/2000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) Su ...

随机推荐

  1. Java集合List-差集、并集、交集

    Java集合List的差集.并集.交集 转载于:https://www.cnblogs.com/qlqwjy/p/9812919.html 一.List的差集 @Test public void te ...

  2. Redisson 分布式锁实战与 watch dog 机制解读

    Redisson 分布式锁实战与 watch dog 机制解读 目录 Redisson 分布式锁实战与 watch dog 机制解读 背景 普通的 Redis 分布式锁的缺陷 Redisson 提供的 ...

  3. Java安全之ysoserial-JRMP模块分析(一)

    Java安全之ysoserial-JRMP模块分析(一) 首发安全客:Java安全之ysoserial-JRMP模块分析(一) 0x00 前言 在分析到Weblogic后面的一些绕过方式的时候,分析到 ...

  4. 研发过程及工具支撑 DevOps 工具链集成

    https://mp.weixin.qq.com/s/NYm63nkCymIV3DbL4O01dg 腾讯重新定义敏捷 |Q推荐 小智 InfoQ 2020-09-03 敏捷开发奠基人 Robert C ...

  5. PyPy CPython C++ connects programs written in C and C++ with a variety of high-level programming languages

    PyPy 为什么会比 CPython 还要快? - 知乎 https://www.zhihu.com/question/19588346/answer/131977984 有个名词在现有的回答下面都没 ...

  6. The OAuth 2.0 Authorization Framework OAuth2.0的核心角色code 扫码登录

    RFC 6749 - The OAuth 2.0 Authorization Framework https://tools.ietf.org/html/rfc6749 The OAuth 2.0 a ...

  7. 【算法】ST表

    想学习一下LCA倍增,先 水一个黄题 学一下ST表 ST表 介绍: 这是一个运用倍增思想,通过动态规划来计算区间最值的算法 算法步骤: 求出区间最值 回答询问 求出区间最值: 用f[i][j]来存储从 ...

  8. LOJ2125

    LOJ2125 树上操作 题目描述 有一棵点数为 N 的树,以点 1 为根,且树有点权.然后有 M 个操作,分为三种: 把某个节点 x 的点权增加 aa . 把某个节点 x 为根的子树中所有点的点权都 ...

  9. java 读取text内容

    public static String readToString(String fileName) { String encoding = "UTF-8"; File file ...

  10. 云服务器镜像问题("Couldn't resolve host 'mirrors.tencentyun.com')

    云服务器镜像问题("Couldn't resolve host 'mirrors.tencentyun.com') 原因: 腾讯云服务器内网yum源的域名 mirrors.tencentyu ...