首页 > 其他分享 >洛谷题单指南-常见优化技巧-P1115 最大子段和

洛谷题单指南-常见优化技巧-P1115 最大子段和

时间:2024-08-14 10:08:54浏览次数:14  
标签:www P1115 子段 int 洛谷题 sum https 序列

原题链接:https://www.luogu.com.cn/problem/P1115

题意解读:最大连续子序列的和。

解题思路:

DP的做法可参考:https://www.cnblogs.com/jcwy/p/18144124

也可以采用双指针来枚举:

i从1开始,j=i

用j来枚举连续序列,如果已有序列和+下一个a[j] >= 下一个a[j],那个j一直++,累加序列和

如果出现已有序列和+下一个a[j] < 下一个a[j],那么i跳到j的位置,重复上述过程

100分代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 200005;
int n;
int a[N];
int ans = INT_MIN;

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i];

    int sum = 0;
    for(int i = 1; i <= n; i++)
    {
        int j = i;
        while(sum + a[j] >= a[j] && j <= n)
        {
            sum += a[j];
            ans = max(ans, sum);
            j++;
        }
        if(j > n) break;
        if(sum + a[j] < a[j])
        {
            sum = 0;
            i = j - 1;
        }
    }
    cout << ans;
    return 0;
}

 

标签:www,P1115,子段,int,洛谷题,sum,https,序列
From: https://www.cnblogs.com/jcwy/p/18358287

相关文章

  • 洛谷题单指南-常见优化技巧-P1638 逛画展
    原题链接:https://www.luogu.com.cn/problem/P1638题意解读:在n个数中,选出a、b两个端点,使得a~b之间不同的数字为m,且b-a最小。解题思路:要寻找最小的包括所有数字的区间,可以采用双指针算法1、设i,j分别是左右指针2、如果当前区间内不同数字个数不到m,j往后移3、记录数字个数到m时......
  • 【最大子段和问题:不定长、定长、有长度上界】
    题目思考我由这道题想起了一系列问题:最大连续子段和    贪心 最大连续子段和,但是区间长度为m    前缀和 最大连续子段和,但是区间长度小于等于m    我的思考是从贪心上面改 错误代码#include<bits/stdc++.h>usingnamespacestd;typedefl......
  • 洛谷题单指南-前缀和差分与离散化-P1904 天际线
    原题链接:https://www.luogu.com.cn/problem/P1904题意解读:给出(左端点,高度,右端点)表示的若干建筑,要输出其轮廓,所谓轮廓就是每个点被覆盖的最高建筑的高度所描绘的线。解题思路:如果能计算每个点被覆盖的最高建筑的高度,用数组h[10005]保存,那么输出轮廓的过程只需要枚举每一个点,如......
  • 洛谷题单指南-前缀和差分与离散化-P3029 [USACO11NOV] Cow Lineup S
    原题链接:https://www.luogu.com.cn/problem/P3029题意解读:不同的坐标位置有不同种类的牛,要计算一个最小的区间,包括所有种类的牛。解题思路:由于坐标位置不连续,并且数值范围较大,因此需要离散化处理,将坐标处理成1~n连续分布由于种类编号数值范围也比较大,也需要离散化处理,去重后的......
  • 洛谷题单指南-前缀和差分与离散化-P4552 [Poetize6] IncDec Sequence
    原题链接:https://www.luogu.com.cn/problem/P4552题意解读:对一组数字序列,进行若干次区间+1或者-1操作,最终使得所有数字一样,计算最少的操作次数,以及能得到多少种不同序列。解题思路:要使得序列每一个数字都相同,则其差分除了第一项之外其余项都是0。因此,问题转化为:给定一个差分数......
  • 洛谷题单指南-前缀和差分与离散化-P2882 [USACO07MAR] Face The Right Way G
    原题链接:https://www.luogu.com.cn/problem/P2882题意解读:一个有F、B组成的序列,每次可以翻转k个连续子序列,翻转:F->B,B->F,计算最少翻转多少次可以将序列都变成F,并求相应的k。解题思路:为方便处理,设F为1,B为01、朴素做法枚举k:1~n  枚举序列,一旦遇到0,就将连续k个字符翻转,如果可......
  • 子段和问题
    Abstract本文主要介绍各种序列子段和问题。P1最大子段和传送门Introduction首先来看一道经典例题,求一段序列的最大子段和Idea考虑动态规划,令dp[i]表示在取第i个数的情况下,前i个数所能得到的最大子段和,那么显然有dp[i]=max(dp[i-1]+a[i],a[i]),其中a[i]表......
  • 洛谷题单指南-前缀和差分与离散化-P1083 [NOIP2012 提高组] 借教室
    原题链接:https://www.luogu.com.cn/problem/P1083题意解读:已知第i天有r[i]个教室可以供租借,有m个租借教室的订单,第i订单需要在第s[i]~t[i]天区间内租借d[i]个教室,计算是否全部订单都能满足,如果不满足要输出从第几个订单开始不满足。解题思路:1、朴素做法枚举1~m个订单,通过差分......
  • 洛谷题单指南-前缀和差分与离散化-P3406 海底高铁
    原题链接:https://www.luogu.com.cn/problem/P3406题意解读:1-n个城市共了n段路,第i段路不买卡票价a[i],买卡票价b[i](卡本身花费c[i]),给定一个路程顺序,计算最少的通行费用。解题思路:根据路程,计算每段路各走了多少次,然后对于每段路,计算买卡和不买卡两种花费,取较小的累加即可。如何......
  • 最优 K 子段
    素数的密度约为ln(n),这就是说,1~n中素数的个数约为\(\frac{n}{ln(n)}\)观察你写出来的DP转移式,可以发现检查时没有必要DP,直接贪心就好了由于数据随机,最后十分钟“乱搞”两次成功过题,开心~点击查看代码#include<bits/stdc++.h>usingnamespacestd;intprime[20005],m;i......