悬1关求助!WA on test16(样例可过)
查看原帖
悬1关求助!WA on test16(样例可过)
804607
rainygame楼主2023/4/14 22:15

RT。布吉岛为什么错了……(在CF上测的)

#include <bits/stdc++.h>
using namespace std;
#define MAXN 100001

int n, ans;
int arr[MAXN], id[MAXN], Next[MAXN];
queue<pair<int, int>> a, b;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	cin >> n;
	for (int i=1; i<=n; i++){
		cin >> arr[i];
		Next[i] = n+1;
	}
	
	for (int i=n; i>=1; i--){
		Next[i] = id[arr[i]];
		id[arr[i]] = i;
	}
	
	a.push(make_pair(0, n+1));
	b.push(make_pair(0, n+1));
	for (int i=1; i<=n; i++){
		if (arr[i] == a.back().first){
			if (arr[i] != b.back().first) ans++;
			b.push(make_pair(arr[i], Next[i]));
		}else if (arr[i] == b.back().first){
			ans++;
			a.push(make_pair(arr[i], Next[i]));
		}else{
			ans++;
			if(a.back().second < b.back().second) a.push(make_pair(arr[i], Next[i]));
			else b.push(make_pair(arr[i], Next[i]));
		}
	}
	
	cout << ans;
	
	return 0;
}

2023/4/14 22:15
加载中...