社区讨论
关于upper_bound
学术版参与者 4已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @lo2385ye
- 此快照首次捕获于
- 2023/10/23 07:16 2 年前
- 此快照最后确认于
- 2023/11/03 07:36 2 年前
CPP
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int a[N], f[N], f1[N];
int main() {
int n = 0;
while (scanf("%d", &a[++n]) != EOF);
n--, f[1] = f1[1] = a[1];
int num = 1, num1 = 1;
for(int i = 2; i <= n; i++){
int tmp;
if (a[i] <= f[num]) f[++num] = a[i];
else { tmp = upper_bound(f + 1, f + num + 1, a[i], greater<int> ()) - f; f[tmp] = a[i]; }
if (a[i] > f1[num1]) f1[++num1] = a[i];
else { tmp = lower_bound(f1 + 1, f1 + num1 + 1, a[i]) - f1; f1[tmp] = a[i]; }
}
printf("%d\n%d\n", num, num1);
return 0;
}
这是一份
P1020 [NOIP1999 普及组] 导弹拦截的代码。在其中,我使用了upper_bound(f + 1, f + num + 1, a[i], greater<int> ()),但使用C++14编译时错误,并返回错误:‘greater’在此作用域中尚未声明以及错误:expected primary-expression before ‘int’,但使用C++17以及C++20 编译时通过了,请问是为什么?回复
共 10 条回复,欢迎继续交流。
正在加载回复...