O(n^2)不是过不了吗?!!
2026-05-01 09:34:27
发布于:四川
题目来源:洛谷P2866
根据《深入浅出》一书以及普遍常识,O(n^2)暴力枚举会TLE。
神奇代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> h(n);
for (int i = 0; i < n; ++i) cin >> h[i];
long long ans = 0; // 总和可能较大
for (int i = 0; i < n - 1; ++i) { // 最后一头牛看不到任何牛
for (int j = i + 1; j < n; ++j) {
if (h[j] >= h[i]) { // 被挡住
break;
}
ans++; // 能看到牛j
}
}
cout << ans << "\n";
return 0;
}
可能是数据太水了,导致这样一个算法AC了。

但是已经十分卡细节了(不考虑算法本身):
1.使用局部变量(包括vecter)
2.关闭同步
少一条都只能拿到90。
官方正解就不说了。
希望调整一下数据。
吐槽:洛谷上实名认证才能发帖对我这种没去更新人脸的挺不友好的……
这里空空如也















有帮助,赞一个