求调
查看原帖
求调
1288333
XURUIFAN楼主2024/10/1 00:25

WA on #21

#include<bits/stdc++.h>
using namespace std;
struct Node {
	char data;
	int next, pre;
} s[200100], t[200100];
int s_s = 1, t_s = 1;
string a;
void del(Node *s, int i) {
	s[i].next = s[s[i].next].next;
	s[s[i].next].pre = i;
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> a;
	int x = a.size();
	for (int i = 0; i < (int)a.size(); i++) {
		s[i + 1].data = a[i];
		s[i + 1].next = i + 2;
		if (i == (int)a.size() - 1) s[i + 1].next = 0;
		s[i + 1].pre = i;
	}
	cin >> a;
	if (x > (int)a.size()) {
		cout << "No";
		return 0;
	}
	for (int i = 0; i < (int)a.size(); i++) {
		t[i + 1].data = a[i];
		t[i + 1].next = i + 2;
		if (i == (int)a.size() - 1) t[i + 1].next = 0;
		t[i + 1].pre = i;
	}
	for (int i = s_s; i; i = s[i].next)
		if (s[i].data == s[s[i].pre].data && s[i].data == s[s[i].next].data) {
			del(s, i);
			i = s[i].pre;
		}

	for (int i = t_s; i; i = t[i].next)
		if (t[i].data == t[t[i].pre].data && t[i].data == t[t[i].next].data) {
			del(t, i);
			i = t[i].pre;
		}

	int i = s_s, j = t_s;
	for (; i && j; i = s[i].next, j = t[j].next) if (s[i].data != t[j].data) {
			cout << "No\n";
			return 0;
		}
	if (i || j) {
		cout << "No\n";
		return 0;
	}
	cout << "Yes\n";
	return 0;
}

主要思路就是把s和t都删掉能删的,然后对比是否相等,用的手写链表。
补丁有点小多

2024/10/1 00:25
加载中...