随笔分类 - 数据结构——队列
摘要:题目链接:https://www.acwing.com/problem/content/291/ 题目给出的是一个环状公路,公路上有n个点,每个点都有一个值w[i],点之间的距离就是从两点沿着环的最短路径,问最大的w[i]+w[j]+dis(i,j)是多少。 由于这个dis不会超过n/2,所以可以枚
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/137/ 首先考虑朴素算法,对于一个端点i,考虑前面的[i-m,i-1]的前缀和,sum[i]-minsum[j] 1<=i<=n,可以维护一个长度为M的队列,对于下一个i,搜索队列中的最
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/135/ 可以证明每次切断的两段序列也是分别递减的,使用一个优先队列维护n个输入值的最大值,以及两个本来就有序的队列维护切断的两个序列即可。 注意本题需要使用longlong数据精度。 代码: #include<
阅读全文
摘要:题目链接:http://poj.org/problem?id=2259 由于同一个队伍的一定是连续的排队的,所以用一个队列记录排队的队伍顺序,用N个记录每个队伍内部的顺序。 代码: #include<iostream> #include<queue> using namespace std; #de
阅读全文