CF926C题解
本文同步发于洛谷博客,您也可以在题解页面访问。
这是一道很简单的模拟。
解题思路:
我们定义两个变量 ,分别用于记录上一个连续 区间的长度和这一个连续 区间的长度。只要这个连续区间的长度不等于上个区间的长度,那么直接输出NO
,然后return 0
就可以了(因为这里不一样后面就无需判断,这是一个小优化)。如果相等,那么 清零,重新计算新的连续区间的长度,以此类推计算就可以了。
那么这个过程怎么实现呢?
对于代码实现来说,对于当前的 来说,分两种情况:
-
如果 等于 ,那么说明还在当前的区间中,那么 ,长度加 。
-
如果 不等于 ,那么按照上面的思路判断就可以了。
这里需要注意一些细节:加一个特判,判断 是不是 ,并在cnt2=1
前面把 修改为 ,就可以了。然后把 赋值为 ,循环到 就可以处理最后一次的问题。
ps:一定要从 开始循环,要不然会出问题,为什么呢?
因为从 开始循环,那么 的值始终是 ,我们无法确定 是零是一,这样就会造成 错误。
如果大家还是看的不清楚,可以看代码里的注释。
Code:
1 | a[n+1]=2; |
这个写法应该是目前特判比较少的解法了吧。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Odt03's blog!