小学期 蜜汁序列

题目描述

传说中有一种蜜汁序列特别甜,所以爱吃甜的强渣学长特别喜欢这种序列。。。

蜜汁序列的定义如下:对于一个长度为n的序列a1,...,an,如果这个序列的n个前缀和全部非负,即若a1>=0,a1+a2>=0,...,a1+a2+...+an>=0,则称a序列是蜜汁序列。。。

显然一些蜜汁序列可以分成更多的蜜汁序列,例如1 2这个蜜汁序列可以分成1和2两个蜜汁序列,现在有一个长度为n的蜜汁序列,要求你把他分成若干连续的段,使得每段都是一个蜜汁序列,问最多可以分成多少段?

输入

多组用例,每组用例首先输入一个整数n表示给出的蜜汁序列长度,之后输入n个整数a1,a2,...,an表示该序列的n个元素,以文件尾结束输入

输出

对于每组用例,输出一个整数占一行,表示该序列最多可以分成多少个蜜汁序列

数据范围

用例不超过10组,1<=n<=10^6,-10^4<=ai<=10^4(i=1,2,...,n)

样例输入

1

1

3

1 2 3

样例输出

1

3

题解:

既然输入的是一个蜜汁序列,那么前i(i=1...n)个肯定是蜜汁序列,本题突破口在从后往前遍历,当该数列最后一个为非负整数时,那么这个数可以分开单独成一个蜜汁序列,然后如果是负数,那么就往前遍历,每次把这几个数都加起来,当这几个数之和大于等于0时,这几个数便是一个蜜汁序列,一直遍历到第一个元素。统计可以分成多少个蜜汁序列再输出。

ac代码:





猜你喜欢

转载自blog.csdn.net/silvester123/article/details/77922561