社区讨论
不知道为什么能过
P11146 「SFMOI Round I」Strange Train Game参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhj9v97p
- 此快照首次捕获于
- 2025/11/03 23:05 4 个月前
- 此快照最后确认于
- 2025/11/03 23:05 4 个月前
我不知道怎么算我写的代码的复杂度,有没有大佬帮我算算
CPP#include <bits/stdc++.h>
using namespace std;
int n, m, ka[200001], ki[200001];
string s1, s2;
set<int> q[210001];
int main() {
cin >> n >> m;
cin >> s1 >> s2;
int qq = 0;
for (int i = n; i >= 1; i--) {
if (s1[i - 1] != s2[i - 1]) qq = i;
ki[i] = qq;
}
for (int i = 1; i <= m; i++) {
int l, r;
cin >> l >> r;
if (ki[l] && ki[l] <= r) q[ki[l]].insert(r);
}
for (int i = 1; i <= n; i++) {
int qs = i;
for (int s : q[i]) {
if (ki[qs] <= s) q[ki[qs]].insert(s);
qs = s + 1;
}
if (q[i].size()) ka[i] = *q[i].begin();
}
priority_queue<int, vector<int>, greater<int>> ms;
for (int i = 1; i <= n; i++) {
while (ms.size() && ms.top() < i) ms.pop();
if (ms.size() % 2) {
if (s1[i - 1] == '1' && s2[i - 1] == '0' && ka[i]) ms.push(ka[i]);
} else if (s1[i - 1] == '0' && s2[i - 1] == '1' && ka[i])
ms.push(ka[i]);
if (ms.size() % 2) swap(s1[i - 1], s2[i - 1]);
}
cout << s1;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...