社区讨论
60分RE求调
P1087[NOIP 2004 普及组] FBI 树参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m1g9kqri
- 此快照首次捕获于
- 2024/09/24 17:58 去年
- 此快照最后确认于
- 2025/11/04 18:57 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
vector<int> m;
int work(int beg, int end, int root) {
if (end == beg) {
if (s[beg] == '0') { m[root] = 0; return 0; }
if (s[beg] == '1') { m[root] = 1; return 1; }
}int mid = (beg + end) / 2;
int l1 = work(beg, mid, root * 2), l2 = work(mid + 1, end, root * 2 + 1);
if (l1 == 1 && l2 == 1) { m[root] = 1; return 1; }
else if (!l1 && !l2) { m[root] = 0; return 0; }
else { m[root] = 2; return 2; }
}void print(int root) {
if (root >= m.size() || m[root] == -1) return;
print(root * 2);
print(root * 2 + 1);
if (m[root] == 0) cout << "B";
if (m[root] == 1) cout << "I";
if (m[root] == 2) cout << "F";
}int main() {
cin >> n;
n = 1 << n;
cin >> s;
s = " " + s;
int size = 1 << (n + 2);
m.resize(size, -1);
work(1, n, 1);
print(1);
}
60point 2、8、9、10 RE
求调
回复
共 0 条回复,欢迎继续交流。
正在加载回复...