其他分享
首页 > 其他分享> > 题解 CF1433B 【Yet Another Bookshelf】

题解 CF1433B 【Yet Another Bookshelf】

作者:互联网

CF1433B

根据题意,将所有 \(1\) 移动为连续的最小操作次数为所有 \(1\) 之间 \(0\) 的个数

因为数据范围很小,只要分别枚举找到第一个 \(1\) 和最后一个 \(1\) 统计他们之间 \(0\) 的个数即可

//AC代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 55
using namespace std;
int T,a[N],n;
int main()
{
	scanf("%d",&T);
	while(T--){
		memset(a,0,sizeof a);
		scanf("%d",&n);
		int ans=0;
		for(int i=1;i<=n;++i){
			scanf("%d",&a[i]);
		}
		int first,last;
		for(int i=1;i<=n;++i)
			if(a[i]==1){
				first=i;break;
			}
		for(int i=n;i>=1;--i)
			if(a[i]==1){
				last=i;break;
			}
		for(int i=first;i<=last;++i){
			if(a[i]==0)ans++;
		}
		printf("%d\n",ans);
	}
	return 0;
}

标签:include,int,题解,scanf,个数,--,Bookshelf,CF1433B
来源: https://www.cnblogs.com/Wuhen-GSL/p/13869523.html