CF1591A题解
本文同步发于洛谷博客,您也可以在题解页面访问。
这题真还挺简单的(红题不都是吗?)
废话不多说!开始!(这也不废话吗)
理解题意
题目描述
题中说得很清楚了
输入格式
本题有多组数据。首先,输入整数 ,表示数据组数 ,对于每组数据,输入整数 ,表示一共浇花或没浇花的天数 ,然后输入 个整数 或 , 表示第 天浇花了,否则表示第 天没浇花。
输出格式
对于每组数据,如果花活着,输出花 天后的高度,如果花死了,输出 。
解法
这道题我们用模拟的解法。用一变量 表示花的高度, 浇表示第几天浇花了没。一开始让 为 ,从第 天起每天都会有四种情况:
- 如果今天浇花而且昨天也浇花了, 。
- 如果今天浇花而且昨天没浇花, 。
- 如果今天没浇花而且昨天浇花了, 不变。
- 如果今天没浇花而且昨天也没浇花,花就死掉了,无需继续判断,直接输出 。
但是,这样有一个漏洞:如果第一天没浇花,程序会认为第 天和第 天(初始状态)都没浇花,然而误判为花死掉了,显然,我们哪怕凭生活经验来看,这都是不可能的,更别说本题了。怎么办?特判。当 时忽略掉上面的第一、第三、第四条,就可以了。
我们看一组数据:
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 许可协议。转载请注明来源 Odt03's blog!