【题解】Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
作者:
Alier
,
2019-12-20 20:47:43
,
所有人可见
,
阅读 1186
#include<iostream>
using namespace std;
const int N=200010;
int T,n,m;
int last[N],A[N];
int main()
{
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=0;i<=n*2;i++) last[i]=-1;
int sum=0,ans=2*n;
last[n]=0;
for(int i=1;i<=2*n;i++){
scanf("%d",&A[i]);
if(A[i]==1) sum++;
else sum--;
if(i<=n) last[n+sum]=i;
}
int cnt=0;
for(int i=1;i<=2*n;i++){
if(A[i]==1) cnt++;
else cnt--;
if(i>=n&&n+cnt-sum>=0&&last[n+cnt-sum]>=0)
ans=min(ans,i-last[n+cnt-sum]);
}
printf("%d\n",ans);
}
return 0;
}
大佬你知道这次cf的d题怎么做吗?除了用set加并查集外有没有其他解法?
我没有欸