CF1591A题解
本文同步发于洛谷博客,您也可以在题解页面访问。
这题真还挺简单的(红题不都是吗?)
废话不多说!开始!(这也不废话吗)
理解题意
题目描述
题中说得很清楚了
输入格式
本题有多组数据。首先,输入整数 $t$ ,表示数据组数 $t(1\le t\le100)$ ,对于每组数据,输入整数 $n$ ,表示一共浇花或没浇花的天数 $(1\leq n\leq100)$ ,然后输入 $n$ 个整数 $a_1,a_2,\dots a_n\ (a_i=0$ 或 $a_i=1)$ , $a_i=1$ 表示第 $i$ 天浇花了,否则表示第 $i$ 天没浇花。
输出格式
对于每组数据,如果花活着,输出花 $n$ 天后的高度,如果花死了,输出 $-1$ 。
解法
这道题我们用模拟的解法。用一变量 $h$ 表示花的高度, $a_1,a_2,\dots a_n$ 浇表示第几天浇花了没。一开始让 $h$ 为 $1$ ,从第 $1$ 天起每天都会有四种情况:
- 如果今天浇花而且昨天也浇花了, $h+5$ 。
- 如果今天浇花而且昨天没浇花, $h+1$ 。
- 如果今天没浇花而且昨天浇花了, $h$ 不变。
- 如果今天没浇花而且昨天也没浇花,花就死掉了,无需继续判断,直接输出 $-1$ 。
但是,这样有一个漏洞:如果第一天没浇花,程序会认为第 $1$ 天和第 $0$ 天(初始状态)都没浇花,然而误判为花死掉了,显然,我们哪怕凭生活经验来看,这都是不可能的,更别说本题了。怎么办?特判。当 $i=1$ 时忽略掉上面的第一、第三、第四条,就可以了。
我们看一组数据:
1 | Simple Input |
四组数据,一组一组看。
一共三天,第一天浇花了,高度+1,第三天浇花了,高度+1,三天后高度为1+1+1=3;
一共三天,第二天浇花了,高度+1,第三天浇花了,且第二天浇花了,高度+5,三天后高度为1+1+5=7;
共有四天,第一天浇花了,高度+1,但第二、三天都没浇花,花死掉了,输出-1,结束;
共有一天,这天没浇花,高度不变,一天后高度为1.
所以,输出应该是:
1 | Simple Output |
核心CODE::
1 | int n; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 0f 的小站!
评论