首页 > 其他分享 >P1121 环状最大两段子段和

P1121 环状最大两段子段和

时间:2024-03-25 21:44:44浏览次数:22  
标签:suf 2e9 -- max ll 段子 max4 P1121 环状

原题链接

题解

这里和线性最大两段子段和不同,没有子段之间必须间隔一米,所以处理方式略有不同

code

#define ll long long
#include<bits/stdc++.h>
using namespace std;
ll a[200005]={0},pre[200005]={0},suf[200005]={0};
int main()
{
    ios::sync_with_stdio(false);
    ll n,total=0,max3=-2e9,max4=-2e9;
    cin>>n;
    for(ll i=1;i<=n;i++)
    {
        cin>>a[i];
        total+=a[i];
        if(a[i]>max3)
        {
            max4=max3;
            max3=a[i];
        }
        else if(a[i]>max4)
        {
            max4=a[i];
        }
    }

    for(ll i=1;i<=n;i++) pre[i]=max(pre[i-1]+a[i],a[i]);//pre[i]代表包括i 的前缀和
    for(ll i=2;i<=n;i++) pre[i]=max(pre[i-1],pre[i]);
    for(ll i=n;i>=1;i--) suf[i]=max(suf[i+1]+a[i],a[i]);
    for(ll i=n-1;i>=1;i--) suf[i]=max(suf[i+1],suf[i]);


    ll max1=-2e9;
    for(ll i=2;i<=n;i++) max1=max(max1,suf[i]+pre[i-1]);//这里的处理方式

    for(int i=1;i<=n;i++) a[i]=-a[i];

    for(ll i=1;i<=n;i++) pre[i]=max(pre[i-1]+a[i],a[i]);
    for(ll i=2;i<=n;i++) pre[i]=max(pre[i-1],pre[i]);
    for(ll i=n;i>=1;i--) suf[i]=max(suf[i+1]+a[i],a[i]);
    for(ll i=n-1;i>=1;i--) suf[i]=max(suf[i+1],suf[i]);


    ll max2=-2e9;
    for(ll i=2;i<=n;i++) max2=max(max2,suf[i]+pre[i-1]);

    if(max3<0) cout<<max4+max3;
    else cout<<max(total+max2,max1);
    return 0;
}

标签:suf,2e9,--,max,ll,段子,max4,P1121,环状
From: https://www.cnblogs.com/pure4knowledge/p/18095431

相关文章

  • 从删库到跑路段子成真!删库了就真的只能跑路了吗?
    Java python从删库到跑路 真要删库肯定要承担刑事责任的。从这件事情可以看出程序员喜欢自嘲,程序员的工作从性质上讲比较枯燥,整天对着电脑所以很多很多做技术的做个几年就转行了,觉得这个工作太没有意思了,来回就那几个人,而且...  恐怕"删库跑路"这种操作大家都耳熟能详......
  • 何以解忧,唯有程序员硬核段子
    ​大家好,我是五月。前言程序员应该是最喜欢自黑的职业了。因为黑程序员这个门槛有点高,外行人根本黑不到点子上,程序员们看不下去了,只好提起裤子自己上了。而且程序员的段子大多比较硬核,一般人可能会有点难以理解其笑点。下面找了几个程序员专属的段子。段子1几个程序员一起......
  • 「???」小段子
    老师:大雄你这学期的诗都背完了没大雄:是的老师:那我得好好考考你大雄:okok老师:山穷水复疑无路大雄:方天画戟捅义父老师:垂死病中惊坐起大雄:吃席麻烦先随礼老师:但使龙城飞将在大雄:Comeonbabydon'tbeshy.老师:巴山楚水凄凉地大雄:蜜雪冰城甜蜜蜜老师:问君能有几多愁大雄:......
  • P1121 环状最大两段子段和
    P1121环状最大两段子段和非环状最大两子段和\[fr[i]表示第1\toi个元素的最大子段和ba[i]表示第n\toi个元素的最大子段和所以最大两子段和就是max(fr[i]+ba[i+1]),i\in[1,n)\]intSolve(){ intans=-0x3f3f3f3f; for(inti=1;i<=n;i++)fr[i]=max(fr[i-1],0ll)+a[i]......
  • 用环状天线测向电压表鉴相器电路定位的无线电测向仪
    用环状天线测向电压表鉴相器电路定位的无线电测向仪用环状天线测向电压表鉴相器电路定位的无线电测向仪,是通过相互垂直的两个环状天线接收远处高频信号发生器发出的信号,来实现测量信号发生器方向的仪器。当环状天线面向高频信号发生器的方向时,它接收的信号强度最大,当环状天线偏移高......
  • 环状替换法详解
    环状替换法详解给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。链接:https://leetcode.cn/problems/rotate-array示例:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,......
  • P1121
    #include<bits/stdc++.h>usingnamespacestd;constintmaxn=206;intn[maxn],m[maxn],ans[maxn];intmain(intargc,charconst*argv[]){stringa,b;while(cin>>a>>b){for(inti=0;i<maxn;i++)ans[i]=0;intl......
  • chatgpt回答了几个关于程序员的段子
    1.一个程序员被问到什么是压缩,他回答:“就是将10个字符压缩成9个字符。”2.为什么程序员总是把自己当作0和1?因为他们觉得自己是二进制最好的。3.什么是程序员最喜欢......
  • 环状图,三种渐变
    <template><div:style="{width:width,height:height}"ref="donutChart"></div></template><script>constecharts=require('echarts');exportdefault{name:"......
  • 搞笑段子
    1某年秋天,和男朋友刚相处没多久,临时决定去海边。我只穿了件卫衣,男朋友穿了外套和里面是很厚的衬衫。去海边的路上他热了,就把外套搭在手上。到了海边,海风一吹我就觉得凉飕......