1 条题解
-
1
比较典型的滑动窗口求最值。按下标从1到n依次把每个数加入优先队列,并在下标大于等于k时,输出队首元素即可。
核心代码
for (int i = 1; i <= n; i++) cin >> a[i].v, a[i].id = i; for (int i = 1; i <= n; i++) { while (!qmax.empty() && qmax.back().v <= a[i].v) qmax.pop_back(); qmax.push_back(a[i]); if (qmax.front().id == i - k) qmax.pop_front(); if (i >= k) cout << qmax.front().v << endl;
- 1
信息
- ID
- 748
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 58
- 已通过
- 23
- 上传者