随笔分类 -  队列

摘要:"题目" DP 设状态dp[i]i位置放了斑点牛,前i个位置能得到的最多的牛。 有方程dp[i]=max(dp[j]+1,dp[i]),而我们并不知道什么j可以使i不在区间内 由于i位置放了牛,又因为i所在的区间只能放一个,j不能跟i同属于一个区间,又因 阅读全文
posted @ 2019-11-09 08:33 DAGGGGGGGGGGGG 阅读(179) 评论(0) 推荐(0) 编辑
摘要:"题目" 单调队列+阅读理解 简化题意。 找到一个最长的区间使得区间每个点的r要大于该点之前的点的l。 然后可以用单调队列维护单调递减的l。最后尺取法O(n)枚举所有区间并取最大值。 单调队列可以快速找某个位置左右两侧比他大(或小)的数的位置 阅读全文
posted @ 2019-09-21 19:14 DAGGGGGGGGGGGG 阅读(188) 评论(0) 推荐(0) 编辑
摘要:SPFA和DIJ求最短路的算法的坑点一直是很多的。经常会让人搞不懂。 易错案例: 用重载运算符来排序,如: 这种做法是不对的,该dis值在堆里不会更新甚至会堵住。 正确案例: 目前只有两种优化算法最可靠,分别为优先队列来优化spfa或dij。 SPFA: 每次从堆中只需要取出到t的最短路最小的元 阅读全文
posted @ 2019-07-14 19:02 DAGGGGGGGGGGGG 阅读(530) 评论(0) 推荐(0) 编辑
摘要:"题目" 该题目就是求这n个数的前缀和所组成的数组的所有子区间的左端点和右端点相差不超过m,且他们的前缀和差最大,求出这个最大值即可。 而朴素算法肯定会T,而我们发现如果前缀和最大的话,则前缀和的值一定是满足单调递增的,因此可以用单调队列优化。 阅读全文
posted @ 2019-06-19 17:03 DAGGGGGGGGGGGG 阅读(135) 评论(0) 推荐(0) 编辑

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