简介
这一类做法常用于最优化问题中,我们通过减弱题目的条件来多求得一些更差的状态但是我们仍然能求得最优的状态
最常见的就是拆绝对值的过程,例如我们要最大化 $\sum_{i=1}^n|a_i-b_i|$,那么我们考虑 $O(2^n)$ 枚举 $a_i$ 和 $b_i$ 的符号即可,这样我们就将绝对值去掉了,如果符号不对的话答案一定是更差的,所以不会造成影响
DP 中的弱化条件
简要题意:给定 $n$ 个数轴上的点,以及每个点可以延伸的长度,现在每个点只能向左或者右一个方向延伸,求这 $n$ 个延伸出的线段的并的最大值
$n\le 100$
简要题解:
枚举所有符号的情况,拆求最大值的绝对值
简要题意:给定 $n$ 个在 $k$ 维空间的整点 $a_i$,两点的距离为 $k$ 维空间的曼哈顿距离,即 $\sum_{i=1}^k|a_{x,i}-a_{y,i}|$,现在有 $m$ 次操作,操作由两种:给定 $x$ 和一个新的坐标 $b$,令 $a_x=b$;给定区间 $[l,r]$,求区间 $[l,r]$ 内距离最远的两个点的距离
$n,m\le 2\times 10^5, k\le 5$,时间限制 $6$ 秒
简要题解:我们考虑将曼哈顿距离的绝对值拆出来
由于答案只需要求最大值,我们直接枚举每个数的符号,注意到只有满足正确符号的两个距离才有可能凑成最大值
所以我们直接那线段树维护 $2^k$ 个状态的最大值即可
时间复杂度 $O(2^kn\log n)$
简要题意:给定一个 $n\times m\times k$ 的六连通三维空间,在这个三维空间的整点上有一些点是居民的住房,另有一些点是邮局,其他点都是空地,现在要求选一块空地改造成邮局,定义一个居民到邮局的距离为到离他最近的邮局的距离他,求如何选择空地改造成邮局可以使所有居民到邮局的距离的最大值最小
$n,m,k\le 100$
简要题解:首先跑一个多源 $bfs$,可以得到每个居民住房到邮局的距离
然后我们考虑二分答案 $x$,那么问题等价于是否存在一个空地,他到某些住房的距离的最大值小于等于 $x$
注意到三维曼哈顿距离没法转换成切比雪夫距离(至少我不会),但是我们同时注意到总点数小于等于 $1e6$,那么我们尝试枚举所有空地,一个点到一堆点的 $k$ 维曼哈顿距离的最大值是一个经典问题,我们只需要枚举符号即可
时间复杂度为 $O(2^3nmk)$
The 14th Chinese Northeast Collegiate Programming Contest L PepperLa’s Express