
队列
算球?
在校学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
51nod 1596 搬货物
先全都扔到优先队列里(最小堆),然后出队最小的两个,如果相等的话,合成一个新的再扔到队列里。如果不相等,则把出队那两个其中较小的扔一个单独的数组array里,另一个大一点的再扔回队列里,直到队列为空。array的尺寸就是结果。 我做的时候最后一个没再放回队列,所以是array.size()+1#include <bits/stdc++.h> using namespace std; typedef原创 2017-07-25 22:58:30 · 385 阅读 · 0 评论 -
poj 2823 Sliding Window(单调队列)
tle了好几发,搜题解,题解说用c++提交就不会tle了,然后A掉 《挑战程序设计竞赛》里面讲双端队列的应用讲的就是这个,只不过那里面只讲了求最小值。 #include <stdio.h> #include <string.h>template <class T> inline bool scan_d(T &ret) { char c; int sgn; if(c=get原创 2017-09-14 14:56:16 · 242 阅读 · 0 评论 -
hdu 3706 Second My Problem First(单调队列)
给出n,a,b,可以算出一个S序列,然后就像滑动窗口那样求出每个Si−Si+a−1S_i-S_{i+a-1} 的最小值,然后乘积mod b#include <bits/stdc++.h> using namespace std; typedef long long LL; const int MAXN = 1e7+10; int num[MAXN]; int dque[MAXN]; int n,a,原创 2017-09-14 16:35:49 · 351 阅读 · 0 评论 -
Codeforces Round #436 (Div. 2) D. Make a Permutation!(优先队列)
优先队列随便搞搞就过了。 出现一次的直接输出。没出现的数字放在优先队列里,当判断到出现多次的数字时,和优先队列的队首比较一下,选择较小的输出。#include <bits/stdc++.h> using namespace std;const int MAXN = 200100; int mark[MAXN]; int num[MAXN];int main() { int n; s原创 2017-09-25 22:58:37 · 239 阅读 · 0 评论