社区讨论
这不是 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 条回复,欢迎继续交流。
正在加载回复...