ACM:W: Super-increasing sequence

来源:互联网 发布:知乎 匿名 赞 编辑:程序博客网 时间:2024/05/19 16:05

ACM:W: Super-increasing sequence

Description

如果一个序列中任意一项都大于前面所有项之和,那么我们就称这个序列为超递增序列。

现在有一个整数序列,你可以将序列中任意相邻的若干项合并成一项,合并之后这项的值为合并前各项的值之和。通过若干次合并,最终一定能得到一个超递增序列,那么得到的超递增序列最多能有多少项呢?

Input

输入数据的第一行包含正整数T (1 <= T <= 500),表示接下来一共有T组测试数据。

每组测试数据的第一行包含一个整数N (1 <= N <= 100000),表示这个整数序列一共有N项。接下来一行包含N个不大于10000的正整数,依次描述了这个序列中各项的值。

至多有10组数据满足N > 1000

Output

对于每组测试数据,用一行输出一个整数,表示最终得到的超递增序列最多能有多少项。

Sample Input

321 131 2 461 2 4 3 6 5

Sample Output

134
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
using namespace std;
#define N 100010
int aa[N];
int main()
{
    int T,n;
    cin>>T;
    while(T--)
    {
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>aa[i];
        }
        int sum=aa[0];
        int count=1;
        int now_sum=0;
        for(int i=1;i<n;i++)
        {
            now_sum +=aa[i];
            if(now_sum>sum)
            {
                sum +=now_sum;
                now_sum=0;
                count++;
            }
        }
        cout<<count<<endl;
    }
    return 0;
}
                                             
0 0
原创粉丝点击