首页 > 其他分享 >51nod 1050 循环数组最大子段和

51nod 1050 循环数组最大子段和

时间:2024-09-09 10:36:10浏览次数:3  
标签:1050 子段 51nod ll int 循环

51nod 1050 循环数组最大子段和

虽然是板子题,两种做法,我们先写一种,另一个咕咕。

因为是循环,所以分为两种,中间的和两边的,中间的直接dp求最大,两边的转化一下就是总的数字和减去中间的最小数字和。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll a[500005];
int n;
int main() {
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>a[i];
    }
    ll ans=0;
    ll mx=INT_MIN,cmx=0;
    ll mi=INT_MAX,cmi=0;
    for (int i=1;i<=n;i++) {
        cmx=max(a[i],cmx+a[i]);
        mx=max(mx,cmx);
        cmi=min(a[i],cmi+a[i]);
        mi=min(mi,cmi);
        ans+=a[i];
    }
    if(mx<0){
        cout<<0;
    }
    else{
    	cout<<max(mx,ans-mi);
	}
    return 0;
}

标签:1050,子段,51nod,ll,int,循环
From: https://www.cnblogs.com/sadlin/p/18404082

相关文章

  • 51nod 1791 合法括号子段
    51nod1791原题链接因为在括号串固定的情况下,括号的匹配是固定不变的。所以对左括号进行匹配,p[i]表示与i这个括号相匹配的括号的位置,易得到dp方程ans[i]=ans[p[i]+1]+1,然后再从后先前一遍求和即可。#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconst......
  • 51nod 石子分配
    可以发现步数限制把数轴变为了环。环之间不可以交换,环内相邻两点可以交换,然后我们只需要对每个环操作,最后累加。对于环上的每个石子堆,我们需要将其石子数调整到均值\(avg\)。因此,我们首先计算每个堆石子相对于\(avg\)的偏差,即\(nowa[i]-avg\)。因为相邻节点不一定能凑齐......
  • 51nod 1110 距离之和最小
    51nod1110距离之和最小考虑贪心取中位数,因为中位数到左边的点和右边的点的个数相同,更合理,权值的话可以转化为一个单点,然后没了。#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintn;structss{ llx,w;}a[100005];boolcmp(ssg,ssh){ return......
  • 51nod 1383 整数分解为2的幂
    整数分解为2的幂这题非常厉害,建议认真看下去虽然我讲的也不好。首先肯定先想到的是多重背包,可以把每个次幂当作物品,然后套板子。但是这题有\(O(n)\)复杂度的做法,我们想如果一个数\(i\)是奇数,那他只能由\((i-1)+1\)转化过来(2的幂次只有1是奇数),那方案数就是\(i-1\)的方案......
  • 51nod 2180 争渡
    争渡原题链接常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。——李清照《如梦令·常记溪亭日暮》给出线段上界和下界,要在严格递增地在区间内选数,问到最后一条线段的方案数。见上图,第\(i\)条线段\(j\)点的方案数为\(i-1\)条线段的\(j-1\)......
  • 51nod 2842 城际旅行
    原题链接这题因为要求满足t时间内,所以用dp,不过我们的状态比较特殊,\(dp[i][j]\)表示到\(i\)点时经过\(j\)个点的最短时间,因为题目为DAG所以要用拓扑排序,每到一个点,枚举所有出边,更新出点的状态\(f[v][j+1]=min(f[v][j+1],f[u][j])\),最后的答案就是所有\(f[t][j]\let......
  • 51nod 1366 贫富差距
    51nod1366贫富差距这题题面挺抽象的,一个人与他所以的朋友的钱不能超过\(d\),问朋友链上钱最多的人的钱与钱最少的人的钱相差多少,求差距的最大值。如果两个人不属于同一个连通块那么差距可以无穷大,好了特殊情况解决了。然后为了使这个差距最大,那么对于每个朋友我们都取\(d\)......
  • 51nod 3179 绝世好题
    3179绝世好题他仅仅要求序列最长的长度,我们可以引用最长上升子序列的思想(有些隐蔽),设状态\(dp[i]\)为二进制第i位为1的最长序列长度,对于一个数10101\(dp[1],dp[3],dp[5]\)都应该加一,对他们的数值取个最大值,并将他们的状态与最大值比较更新。下列代码为上述思路:#includ......
  • 51nod 3010 The Captain
    暴力构图为\(O(n^2)\)无法实现,但可以发现有些边无用,可以先按x排序,第i号点与第i+1号点一定最近,所以建一条边,y坐标同理,然后跑最短路即可自动选择\(min(|x_1-x_2|,|y_1-y_2|)\)#include<bits/stdc++.h>usingnamespacestd;constlonglongINF=0x3f3f3f3f;constint......
  • A-计算机毕业设计定制:10508民大校园美食推荐系统的设计与实现(免费领源码)可做计算机毕
    摘要 随着数字化时代的到来,校园美食推荐系统的设计与实现具有重要意义。针对民大校园中商家、普通用户和管理员之间的信息交互和服务需求,开发这样一个系统能够有效促进校园内美食资源的共享和利用,提供美食介绍和美食推荐的渠道,提高校园内美食行业的服务水平,增强校园内外用户......