[题解] P9517 drink

简单题。

先用一个结构体分别表示 first last,然后进行查找即可,两个 for 循环分别计算出 firstlast,最后计算它们的差值。(注意,计算差值时要加 1)

然后你就会发现一个问题:只有 \(90\) 分。

所以我们来思考一下哪里出现了问题。

你会发现:如果全都是 \(0\) 怎么办呢?

所以还要记录是不是全都是 \(0\),如果是就输出 \(0\) 即可得到满分。

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1e5 + 10;

struct cntt
{
	int first, last;
}cnt;

int n;
int a[MAXN];
int cnttt;

int main()
{
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		scanf("%d", &a[i]);
		if (a[i] == 0)
		{
			cnttt++;
		}
	}
	if (cnttt == n)
	{
		printf("0");
		return 0;
	}
	for (int i = 1; i <= n; i++)
	{
		if (a[i] == 1)
		{
			cnt.first = i;
			break;
		}
	}
	for (int i = 1; i <= n; i++)
	{
		if(a[i] == 1)
		{
			cnt.last = i;
		}
	}
	printf("%d", cnt.last - cnt.first + 1);
	return 0;
}
posted @ 2024-05-17 22:42  cq_irritater  阅读(56)  评论(0)    收藏  举报