社区讨论
平衡树做法90分求助
P1886【模板】单调队列 / 滑动窗口参与者 8已保存回复 38
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 38 条
- 当前快照
- 1 份
- 快照标识符
- @lo1jai6z
- 此快照首次捕获于
- 2023/10/22 21:58 2 年前
- 此快照最后确认于
- 2023/11/02 22:52 2 年前
平衡树做法T#9
CPP#include "cstdio"
#include "vector"
#include "algorithm"
#include "string"
using namespace std;
int n, k, a[1000010];
int mx[1000010];
vector<int> e;
int read() {
int ret = 0, sgn = 0, ch = getchar();
while (!isdigit(ch)) sgn |= ch == '-', ch = getchar();
while (isdigit(ch)) ret = ret * 10 + ch - '0', ch = getchar();
return sgn ? -ret : ret;
}
main() {
n = read(), k = read();
for (int i = 1; i <= n; i ++ ) {
a[i] = read();
e.insert(upper_bound(e.begin(), e.end(), a[i]), a[i]);
if (i >= k) {
if (i > k) e.erase(lower_bound(e.begin(), e.end(), a[i - k]));
mx[i] = e[k - 1];
printf("%d ", e[0]);
}
}
printf("\n");
for (int i = k; i <= n; i ++ )
printf("%d ", mx[i]);
}
想用平衡树试试,但T了,有没有大佬知道怎么回事,复杂度
回复
共 38 条回复,欢迎继续交流。
正在加载回复...