社区讨论

关于尼姑测评机

学术版参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m2j5f2zf
此快照首次捕获于
2024/10/21 23:05
去年
此快照最后确认于
2025/11/04 16:34
4 个月前
查看原帖
如下这段代码:
CPP
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
#define first fi
#define second se

const int MAXN = 2e5 + 5;

int n, flag = -1, tot, tmp;
struct node{
	int lst = -1, nxt = -1;//表示当前块的前一个块和后一个块
	queue<int> q;//使用队列储存每个块的水果 
} a[MAXN];

void add() {
	flag = tmp;
	a[tot].nxt = ++tot;
	a[tot].lst = tot - 1;
	return ;
}
void merge(int k) {
	if(a[k].nxt == -1) {//特殊处理块的尾部 
		a[a[k].lst].nxt = -1;
	}
	else if(a[k].lst == 0) {//特殊处理块的头部 
		a[0].nxt = a[k].nxt;
		a[a[k].nxt].lst = 0;
	}
	else {//处理除了尾部和头部中间的块 
		int u = a[k].lst, v = a[k].nxt;
//		cout << u <<  ' ' << v << '\n';
		while(!a[v].q.empty()) {//合并两个相同块的水果 
			a[u].q.push(a[v].q.front());
			a[v].q.pop();
		}
		a[u].nxt = a[v].nxt;
		if(a[u].nxt != -1) {
			a[a[v].nxt].lst = u;
		}
	}
	return ;
}

int main() {
//	freopen("data.in", "r", stdin);
//	freopen("test.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> n;
	for(int i = 1; i <= n; ++i) {
		cin >> tmp;
		if(tmp != flag) {
			add();
		}
		a[tot].q.push(i);
	}
//	for(int i = 0; i <= tot; ++i) {
//		cout << i << ':' << '\n';
//		cout << a[i].lst << ' ' << a[i].nxt << '\n';
//		while(!a[i].q.empty()) {
//			cout << a[i].q.front() << ' ';
//			a[i].q.pop();
//		}
//		cout << '\n';
//	}
	while(a[0].nxt != -1) {
		for(int i = a[0].nxt; i != -1; i = a[i].nxt) {
			if(!a[i].q.empty()) {
				cout << a[i].q.front() << ' ';
				a[i].q.pop();
			}
		}
		cout << '\n';
		for(int i = a[0].nxt; i != -1; i = a[i].nxt) {
			if(a[i].q.empty()) {
				merge(i);
				i = a[i].lst;//本人错误所在
			}
		}
//		cout << endl << endl << endl;
//		for(int i = a[0].nxt; i != -1; i = a[i].nxt) {
//			cout << i << ':' << '\n';
//			cout << a[i].lst << ' ' << a[i].nxt << '\n';
//		}
//		cout << endl << endl << endl;
	}
	return 0;
}
是我写的P7912小熊的果篮,我两个小样例和一个大样例全过了,我甚至用讨论区的hack生成器和正解拍了拍,拍到几百个没有任何差异,但叫上去就是全WA。我甚至还把原题的一个样例下载了下来,明明输出一模一样却还是WA,十分不理解,求各位大佬解答。

回复

3 条回复,欢迎继续交流。

正在加载回复...