为什么使用getline WA,但是cin>> AC?
查看原帖
为什么使用getline WA,但是cin>> AC?
1401594
Firsry楼主2024/12/11 17:21
#include<bits/stdc++.h>

using namespace std;

struct node {
	int l, r, lson, rson;
	char id;
};
int n;
string str;
vector<node> seg;

void push_up(int p) {
	if (seg[seg[p].lson].id == seg[seg[p].rson].id && seg[seg[p].lson].id != 'F')
		seg[p].id = seg[seg[p].lson].id;
	else seg[p].id = 'F';
	return;
}
void build(int p, int l, int r) {
	seg[p].lson = p << 1, seg[p].rson = p << 1 | 1;
	seg[p].l = l, seg[p].r = r;
	if (l == r) {
		if (str[l] == '0') seg[p].id = 'B';
		if (str[l] == '1') seg[p].id = 'I';
		return;
	}
	int mid = (seg[p].l + seg[p].r) >> 1;
	build(seg[p].lson, l, mid);
	build(seg[p].rson, mid + 1, r);
	push_up(p);
	return;
}
void out(int p) {
	if (seg[p].l != seg[p].r) {
		out(seg[p].lson);
		out(seg[p].rson);
	}
	cout << seg[p].id;
}

void in() {
	scanf("%d\n", &n);
	cin >> str;
        //之前写的是getline(cin,str);
	seg.resize(str.size() << 2 | 1);
	build(1, 0, str.size() - 1);
	return;
}

int main() {
	in();
	out(1);
	return 0;
}
2024/12/11 17:21
加载中...