社区讨论

这不是 O(n)?

P7912[CSP-J 2021] 小熊的果篮参与者 5已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@m07e5dzh
此快照首次捕获于
2024/08/24 08:17
2 年前
此快照最后确认于
2024/08/24 11:07
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,cnt;
const int N=2e5+5;
int a[N];
queue<int> G[N];
int sum[N];

signed main()
{
//	freopen("fruit.in","r",stdin);
//	freopen("fruit.out","w",stdout);
	scanf("%lld",&n);
	a[0]=-1;
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		if(a[i]==a[i-1]) G[cnt].push(i);
		else G[++cnt].push(i);
	}
	while(n){
		for(int i=1;i<=cnt;i++){
			sum[i]=sum[i-1];
			if(G[i].size()==0) sum[i]++;
			else{
				if(sum[i]%2==0||sum[i]+1==i){
					printf("%lld ",G[i].front());G[i].pop();
					n--;
				}
				sum[i]=0;
			}
		}
		printf("\n");
	}
	return 0;
}
/*
12
1 1 0 0 1 1 1 0 1 1 0 0
*/

回复

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

正在加载回复...