|
发表于 2024-1-15 11:25:06
|
显示全部楼层
这段代码存在两个明显的编译错误:
1. `#include` 行缺少一个头文件名称。你需要使用 `#include <vector>` 来包含 `<vector>` 头文件。
2. `typedef pairpii;` 这行存在语法错误。正确的写法应该是 `typedef pair<int, int> pii;` 来定义一个名为 `pii` 的 `pair<int, int>` 类型别名。
此外,代码中也存在一些逻辑问题,下面是修改后的代码:
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- typedef long long ll;
- typedef pair<int, int> pii;
- const int N = 1e5 + 10;
- int n, len;
- bool check(ll mid, vector<pii>& a) {
- vector<pii> segs;
- for (int i = 0; i < n; i++) {
- int l = a[i].first;
- int s = a[i].second;
- if (mid > l)
- continue;
- int left = max(1ll, l - mid + s);
- int right = min((ll)len, l + mid - s);
- segs.push_back({left, right});
- }
- int cnt = segs.size();
- sort(segs.begin(), segs.end());
- if (segs.empty())
- return false;
- if (segs[0].first > 1)
- return false;
- int dr = segs[0].second;
- for (int i = 1; i < cnt; i++) {
- if (segs[i].first > dr + 1)
- return false;
- dr = max(dr, segs[i].second);
- }
- return dr == len;
- }
- int main() {
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- cin >> n >> len;
- vector<pii> a(n);
- for (int i = 0; i < n; i++) {
- int l, s;
- cin >> l >> s;
- a[i] = {l, s};
- }
- ll l = 0, r = 2e9;
- while (l + 1 < r) { // 注意这里的条件判断
- ll mid = (l + r) / 2;
- if (check(mid, a))
- r = mid;
- else
- l = mid;
- }
- cout << r << endl;
- return 0;
- }
复制代码
希望对你有帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|