随笔分类 -  动态规划——单调队列优化

posted @ 2019-03-24 21:38 wxyww 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目 思路 首先按照$t$排序!!!! 首先考虑一个暴力$dp$ 用$f[i]$表示前$i$个人到达地点所需要的时间。 那么就有如下的转移 $$f_i = min_{1 \le j \le i}(max(f_j,t_i) + max\{w_{j + 1} ... w_i\} 2)$$ 这样复杂度是$ 阅读全文
posted @ 2019-01-24 12:46 wxyww 阅读(110) 评论(0) 推荐(0) 编辑
摘要:题目链接 题面 思路 可以发现其实就是询问一个最长的区间,使得这个区间的平均数大于等于k。所以将区间内所有数字减去k,然后做一遍前缀和。只要是前缀和之差大于等于0的区间。就是满足条件的。 所以现在问题就成了对于前缀和上的每个数字,找到一个最靠前的比他小的数字。 这个可以用单调栈。可以发现如果后面的数 阅读全文
posted @ 2019-01-24 12:44 wxyww 阅读(179) 评论(0) 推荐(0) 编辑
摘要:题目链接 题面 思路 先考虑$n \leq 100$的做法。 区间dp。 状态。用$f[l][r]$表示知道l到r内$x$的位置最少需要的时间 转移。枚举一个$l \leq k \leq r$。那么现在我们要在k处挖油了,然后我们根据k处有没有油再去确定下次是挖$[k + 1,r]$还是$[l,k 阅读全文
posted @ 2018-10-07 20:23 wxyww 阅读(182) 评论(0) 推荐(0) 编辑
摘要:"codevs3342" 思路: 既然是要求最小化最长空题段,直接二分答案。然后就是check函数的写法。 先考虑n方转移,假设当前二分的答案是x,用f[i]表示前i个题,第i道题写的最小花费时间。最后再去判断后f数组的后x个值是否小于等于要求时间的。然后返回。 cpp int check(int 阅读全文

点击右上角即可分享
微信分享提示