T3午枫的分割数组
* 难度:普及-
* 思路分析
1. 准备部分
从左到右扫描数组,计算每个位置的前子表最大值lm[]及其出现次数lc[]
从右到左扫描数组,计算每个位置的后子表··最大值rm[]及其出现次数rc[]
2. 枚举所有可能的分割方案
对于每个可能的分割点 m(2≤m≤n)m(2 ≤ m ≤ n)m(2≤m≤n)
将数组分为两部分:前 m−1m-1m−1 个元素给小午,后 n−m+1n-m+1n−m+1 个元素给小枫
根据预处理结果:
小午部分的最大值为 lmm−1lm_{m-1}lmm−1 ,可选数量为min(lc[m-1],k1)
小枫部分的最大值为 rmmrm_mrmm ,可选数量为min(rc[m],k2)
3. 胜负判断
对于每个分割方案:
比较小午部分最大值 wmwmwm 和小枫部分最大值 fmfmfm
只要找到一个分割方案满足 wm>fmwm > fmwm>fm ,则立即返回YES,若检查完所有分割方案都没有找到满足条件的,则返回NO
* 通过代码
* 时间复杂度 O(N)O(N)O(N),