码迷,mamicode.com
首页 > 其他好文 > 详细

B. Just Eat It! CodeForces1285B

时间:2020-01-18 10:55:18      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:一个   typedef   pre   int   大连   最大连续子序列和   def   class   连续子序列   

题意:给你一个序列,他的序列和是否大于他的任何他的子序列(连续的子序列)的和。

题目链接:https://vjudge.net/problem/CodeForces-1285B

思路:求他的最大连续子序列和。那如何求最大子序列和呢?用动态规划求即可。但是要注意的是,子系列不能和原序列一样。

用dp[i]表示以a[i]结尾的最大连续子序列,则容易列出动态转移方程dp[i] = max{dp[i - 1] + a[i], a[i]};

分别求[0, n-1)和[2,n-1]的最大连续子序列和就可以了

 

#include<iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
ll a[N] = {0};
int main()
{
    int t;
    scai(t);
    while (t--)
    {
        int n;
        scai(n);
        ll sum = 0;
        for (int i = 0; i < n; i++)
        {
            scanf("%lld", &a[i]);
            sum += a[i];
        }

        ll ans = 0;
        string s = "YES";
        for (int i = 0; i < n; ++i)
        {
            ans += a[i];
            if (ans >= sum && i != n-1)
                {s = "NO";break;}
            if (ans  < 0) ans = 0;
        }
        ans = 0;
        for (int i = n - 1; i >= 0; --i)
        {
            ans += a[i];
            if (ans >= sum && i != 0)
                {s = "NO";break;}
            if (ans < 0) ans = 0;
        }
        cout << s <<endl;
    }
}

B. Just Eat It! CodeForces1285B

标签:一个   typedef   pre   int   大连   最大连续子序列和   def   class   连续子序列   

原文地址:https://www.cnblogs.com/hulian425/p/12208165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!