http://acm.fzu.edu.cn/problem.php?pid=1914
这是"2010年全国大学生程序设计邀请赛(福州)"的F题,
当时卡这题很久, 一直没有AC....
今天上foj, 看到把题目挂出来了.
继续做, 一次就AC了,
哎, rp啊........很无语
如果当时能冷静点, 如果当时思路在开放点.....如果......如果........
/***************************************************/
1<= n <= 500000这么大的数据, 暴力是铁定tle的,
肯定每个人都知道要有线性算法才性.
我的思路是:
变量total表示所有符合条件的系列, 开始total=n;
从后往前扫描, 遇到负数就向前累加total--且flag[i]=1(表示已被访问过) , 直到和为正数为止.
这样遍历完整个数组,
如果到遍历完后累加和sum<=0, 则将sum再从数组最后开始累加直到和为正, 此时, 如果flag[i]=0则total--;
代码: