1 条题解
-
0
题解
思路
把每台空调所在格子的初始值设为其温度,其余格子为无穷大。来自左侧空调的最优值沿位置向右每步增加 1,来自右侧空调同理向左传播。
做法
建立数组
answer并写入所有空调温度。先从左到右扫描,用answer[i-1]+1松弛answer[i];再从右到左扫描,用answer[i+1]+1松弛answer[i]。最后输出数组。正确性证明
左向右扫描结束后,归纳可知
answer[i]等于所有位置不超过 的空调对格子 的最小贡献:新位置要么使用自身源值,要么由前一格最优左侧源再增加单位距离。右向左扫描以同理加入所有右侧空调贡献。每台空调必在目标格子左侧或右侧,因此两次扫描后的最小值恰为题目公式中的全体最小值。复杂度分析
每组测试时间复杂度为 ,空间复杂度为 。
子任务说明
- 时逐格枚举所有空调。
- 每组只有一台空调时直接计算单个 V 形函数。
- 满数据使用双向线性松弛。
- 1
信息
- ID
- 1079
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者