#include<bits/stdc++.h>
using namespace std;
const int N=200010;
bool book[N],flag,vis[N];
int tail[N],head[N],num[N];
int n,cnt;
int nxt[N];
int main ()
{
int x;
cin>>n;
cin>>x;
flag=!x;
tail[cnt++]=0;
head[cnt]=1;
book[cnt]=x;
for (int i=2;i<=n;i++)
{
scanf ("%d",&x);
if (x==flag)//水果种类改变就建立新块
{
flag=!flag;
tail[cnt++]=i-1;//tail[i]记录第i块的末端水果编号
head[cnt]=i;//head[i] 记录第i块的前端水果编号
book[cnt]=x;//book[i]记录第i块的水果种类
}
}
tail[cnt]=n+1;
head[cnt+1]=n;
num[1]=tail[1];
num[cnt]=n-head[cnt]+1;
for (int i=2;i<cnt;i++)
num[i]=head[i+1]-tail[i-1]-1;//num[i]记录第i块的剩余水果数量
for (int i=1;i<=cnt;i++)//合法块指可以取水果的块,即水果未被取完块
nxt[i]=i+1;//nxt[i]记录第i块后第一个合法块的编号
nxt[0]=1;
while (n)//n==0时水果取完
{
int point=nxt[0];//poi
P7912 [CSP-J 2021] 小熊的果篮
最新推荐文章于 2023-01-17 15:47:29 发布