P9517 drink 题解
Part 1 提示
- 题目传送门
- 欢迎大家指出错误并私信这个蒟蒻
- 欢迎大家在下方评论区写出自己的疑问(记得
@
这个蒟蒻)
Part 2 更新日志
- 2023-08-12 18:06 文章完成
- 2023-08-14 15:53 文章通过审核
Part 3 解析
这道题考场上用的查找做的。
先用一个结构体分别表示 first last
,然后进行查找即可,两个 for
循环分别计算出 first
和 last
,最后计算它们的差值。 (注意,计算差值时要加 1)
然后你就会发现一个问题:只有 \(90\) 分。
所以我们来思考一下哪里出现了问题。
你会发现:如果全都是 \(0\) 怎么办呢?
所以还要记录是不是全都是 \(0\),如果是就输出 \(0\) 即可得到满分。
Part 4 代码
#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;
}
标签:P9517,last,int,题解,drink,Part,first
From: https://www.cnblogs.com/szyawa/p/solution-p9517.html