AcWing 凸包DP优化相关问题
皓首不倦
算法爱好者 码农一枚 欢迎志同道合 技术爱好者加微信CODER-GRH 非技术人员勿扰
展开
-
AcWing 凸包优化DP相关问题 303. 运输小猫
from collections import deque N, M, P = map(int, input().split()) dis = [0, 0] + list(map(int, input().split())) for i in range(1, len(dis)): dis[i] += dis[i-1] A = [] for i in range(M): h, t = map(int, input().split()) A.append(t - dis[h]).原创 2020-07-31 23:52:26 · 155 阅读 · 0 评论 -
AcWing 凸包优化DP相关问题 302. 任务安排3
问题根上一篇的任务安排2 差不多,唯一区别就是直线的斜率可正可负,因此上一个问题中,最后从队列头删除斜率小的元素的操作就不能有了,然后Sc序列里面可能出现连续的相同的值,注意下除以0的操作特殊处理下即可,时间复杂度O(NLogN),凸包优化思路是跟任务安排2 这个题目没差的,总的讲凸包优化这个思路还是比较难想到的 ''' dp 转移思想 dp(i)表示前i个任务所有分组方案中,总开销的最小值 按照最后一组的情况来划分集合,也就是倒数第二组的最后一个任务的编号,假设这个编号是j 注意有个巧妙的转化.原创 2020-07-31 18:42:03 · 153 阅读 · 0 评论 -
AcWing 凸包优化DP相关问题 301. 任务安排2
这个题目数据量比较大,还是平方级DP肯定TLE没跑,所以采用凸包优化的方式压缩时间复杂度,凸包优化思路有点绕,梳理半天记录一下自己的分析笔记 凸包点序列中查找和直线的切点的方法 最后是Python 代码 from collections import deque N = int(input()) S = int(input()) St = [0] * N Sc = [0] * N for i in range(N): St[i], Sc[i] = map(int, input()原创 2020-07-31 18:34:07 · 191 阅读 · 0 评论 -
AcWing 凸包优化DP相关问题 300. 任务安排1
比较朴素的思维,二维动态规划,时间复杂度平方级,凸包优化的思路下一篇博客再降,先粘贴个朴素思路代码 ''' dp 转移思想 dp(i)表示前i个任务所有分组方案中,总开销的最小值 按照最后一组的情况来划分集合,也就是倒数第二组的最后一个任务的编号,假设这个编号是j 注意有个巧妙的转化,在算每一组开始启动的时间S带来的开销时候,对这个组后面的所有任务 的带来的开销的增加量全部累加到当前这一组任务上,这样处理每一组任务时候,就可以排除 掉前面的组对当前组的开销的影响, dp(i)是已经包含了前i个元素所有原创 2020-07-31 18:29:00 · 147 阅读 · 0 评论