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

1428:数列分段

时间:2019-06-08 01:15:37      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:接下来   代码   mes   个数   +=   bsp   color   顺序   algo   

1428:数列分段

技术图片

 

题解

注意数列分段的题目不可以打乱顺序

原数列是[ 4  2  4  5  1 ]

划分为三段吼是 [ 4  2 ][ 4 ][ 5  1 ]

 

我们先从第一个开始,当前状态标记为 s ,一开始,s=a[1]

那么接下来从2开始枚举到n

如果当前状态加上一个数字仍然不超过最大限度m 的话,那就把这个数字加入当前状态,也就是不再开一个段数,否则就要新开一段了,同时重置状态s=a[ i ]

最后ans要自加,因为一开始的第一个没有算进去

 

 

 

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>

using namespace std;

int n,m,ans,s;
int a[100001];

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
      scanf("%d",&a[i]);
    
    s=a[n];
    for(int i=n-1;i>=1;i--)
    {
        if(s+a[i]<=m) s+=a[i];
        else
        {
            ans++;
            s=a[i];
        }
    }
    ans++;
    printf("%d",ans);
    return 0;
}

 

1428:数列分段

标签:接下来   代码   mes   个数   +=   bsp   color   顺序   algo   

原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10989514.html

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