[题解] P9517 drink
这道题考场上用的查找做的。
先用一个结构体分别表示 first last
,然后进行查找即可,两个 for
循环分别计算出 first
和 last
,最后计算它们的差值。(注意,计算差值时要加 1)
然后你就会发现一个问题:只有
所以我们来思考一下哪里出现了问题。
你会发现:如果全都是
所以还要记录是不是全都是
#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; }
本文作者:cq_irritater
本文链接:https://www.cnblogs.com/cq-irritater/p/18198835/solution-luogu-p9517
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步