1. 核心定义与根本思维
问题描述:
这类问题通常设定一个受限系统(如数组、矩阵),给定宏观限制(如总和固定)和微观限制(如相邻差值、大小关系)。
目标是判断是否存在满足所有条件的解,或者构造出一组解。
根本思维:
“资源分配与临界状态”。
不要试图直接通过复杂的搜索去凑答案,而是将“是否存在”的问题转化为“满足所有必要条件的检查”。
核心在于“贪心”:假设我们为了满足规则,把每一个变量都压缩到最小合法值(临界状态),系统是否会崩塌?资源是否不够?或者剩余的资源是否因为规则太僵硬而无法塞进去?
2. 通用解法:三层漏斗模型
解决此类问题通常遵循由宏观到微观,再到隐性结构的三个检查步骤:
第一层:总量预算检查
- 问题:如果不考虑细节,手里的总资源是否足以覆盖所有个体的最低需求总和?
- 手段:求和不等式。
- 本质:$\text{总资源} \ge \sum (\text{局部最低需求})$。
- 如果连低保都发不起,直接判负。
第二层:局部极值贪心
这是解题的重心。
* 问题:为了满足局部的苛刻条件(如 $a_i > b_i$ 或 $|a_i - a_{i+1}| \le 1$),在这个位置至少要投入多少资源?
* 手段:计算每个位置的 下界。
* 策略:让每一个元素处于“刚刚好满足条件”的状态。
* 例如:若要求 $a_i > b_i$ 且 $a_i+b_i \ge P$,则 $a_i$ 的极值应为 $\lfloor P/2 \rfloor + 1$。
* 判定:对比给定的资源 $X$ 与计算出的总需求 $\sum req_i$。
第三层:结构性约束
这是最隐蔽的陷阱,通常涉及系统的 自由度 与 僵硬度。
* 问题:即使总资源足够,剩余的 裕度 是否能合法地分配下去?
* 核心逻辑:
* 高自由度:若限制方向不统一(如有的要求 $A>B$,有的要求 $B>A$),多余资源可以通过内部抵消消化,通常不需要此层检查。
* 高僵硬度:若限制方向完全一致(如全要求 $A>B$),系统存在差值死锁。多余的 $B$ 类资源必须伴随更多的 $A$ 类资源才能分配,否则会破坏 $A>B$。
* 判定:检查宏观差值不等式(如 $x \ge y + n$)。
3. 经典考题模型
模型一:对偶数组博弈
- 特征:给定总和 $x, y$,每个位置要求 $a_i+b_i \ge p_i$,且有指定的胜负关系 $s_i$。
- 核心不等式:
- 极值:$x \ge \sum reqA_i, \quad y \ge \sum reqB_i$。
- 死锁:若全为 $A$ 赢,必须 $x \ge y + n$;若全为 $B$ 赢,必须 $y \ge x + n$。
模型二:金字塔/邻项约束
- 特征:限制相邻差值 $|a_i - a_{i+1}| \le 1$,总和 $\le S$,求最大高度。
- 核心不等式:
- 极值:假设最高点为 $H$,则数组呈现 $0, 1, \dots, H, \dots, 1, 0$ 的形状。
- 判定:$\text{MinArea}(H) \le S$(通常配合二分答案)。
模型三:兰道定理/前缀约束
- 特征:判断序列是否为合法的竞赛得分序列(或其他前缀受限序列)。
- 核心不等式:
- 排序:先将序列从小到大排序。
- 子集极值:前 $k$ 小的人,内部对战必然产生 $\binom{k}{2}$ 分。
- 判定:$\forall k, \sum_{i=1}^k s_i \ge \binom{k}{2}$ 且 $\sum_{i=1}^n s_i = \binom{n}{2}$。
模型四:矩阵重构
- 特征:给定行和 $R_i$、列和 $C_j$,元素有上下界。
- 核心不等式:
- 判定:将行和列降序排列,检查前 $k$ 行的总需求是否超过了所有列能提供的最大贡献。
- 公式:$\sum_{i=1}^k R_i \le \sum_{j=1}^m \min(k \cdot \text{MaxVal}, C_j)$。
4. 竞赛实战策略
遇到构造不等式问题,按以下步骤思考:
- 算死线:把所有变量逼到满足条件的最小极限值。
- 查剩余:看给定的总资源减去“死线总和”后,是否非负。
- 看方向:
- 如果限制条件是“杂乱”的(有增有减),通常前两步过了就是 YES。
- 如果限制条件是“整齐划一”的(全增或全减),必须检查剩余资源是否会导致差值失衡(需要推导额外的宏观不等式)。

Comments NOTHING