zoukankan      html  css  js  c++  java
  • HDU 5783Divide the Sequence

    Divide the Sequence

    Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 119    Accepted Submission(s): 73


    Problem Description
    Alice has a sequence A, She wants to split A into as much as possible continuous subsequences, satisfying that for each subsequence, every its prefix sum is not small than 0.
     
    Input
    The input consists of multiple test cases. 
    Each test case begin with an integer n in a single line.
    The next line contains n integers A1,A2An.
    1n1e6
    10000A[i]10000
    You can assume that there is at least one solution.
     
    Output
    For each test case, output an integer indicates the maximum number of sequence division.
     
    Sample Input
    6
    1 2 3 4 5 6
    4
    1 2 -3 0
    5
    0 0 0 0 0
     
    Sample Output
    6 2 5
     
    Author
    ZSTU

    贪心。尽量一个个选。考虑到前缀不能为负,可以倒着扫一遍

    /* ***********************************************
    Author        :guanjun
    Created Time  :2016/8/2 12:04:29
    File Name     :p512.cpp
    ************************************************ */
    #include <iostream>
    #include <cstring>
    #include <cstdlib>
    #include <stdio.h>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <set>
    #include <map>
    #include <string>
    #include <math.h>
    #include <stdlib.h>
    #include <iomanip>
    #include <list>
    #include <deque>
    #include <stack>
    #define ull unsigned long long
    #define ll long long
    #define mod 90001
    #define INF 0x3f3f3f3f
    #define maxn 1000010
    #define cle(a) memset(a,0,sizeof(a))
    const ull inf = 1LL << 61;
    const double eps=1e-5;
    using namespace std;
    priority_queue<int,vector<int>,greater<int> >pq;
    struct Node{
        int x,y;
    };
    struct cmp{
        bool operator()(Node a,Node b){
            if(a.x==b.x) return a.y> b.y;
            return a.x>b.x;
        }
    };
    
    bool cmp(int a,int b){
        return a>b;
    }
    int a[maxn];
    int vis[maxn];
    int main()
    {
        #ifndef ONLINE_JUDGE
       // freopen("in.txt","r",stdin);
        #endif
        //freopen("out.txt","w",stdout);
        int n;
        while(cin>>n){
            int mark=0;
            cle(vis);
            for(int i=1;i<=n;i++){
                scanf("%d",&a[i]);
                if(a[i]<0)mark=1,vis[i]=1;
            }
            if(!mark){
                printf("%d
    ",n);continue;
            }
            ll ans=0;
            for(int i=n;i>=1;i--){
                if(vis[i]){
                    ll sum=a[i];
                    while(sum<0){
                        i--;
                        sum+=a[i];
                    }
                }
                ans++;
            }
            printf("%I64d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    Oracle的锁表与解锁
    plsql查询数据显示为乱码解决方法
    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
    javascript基础总结
    通过百度echarts实现数据图表展示功能
    表单中Readonly和Disabled的区别
    mybatis中的#和$的区别
    java持久层框架mybatis如何防止sql注入
    故事讲解:我是一个线程
    Python菜鸟之路:Django 中间件
  • 原文地址:https://www.cnblogs.com/pk28/p/5730319.html
Copyright © 2011-2022 走看看