洛谷1121環狀最大兩段子段和

2021-07-24 09:30:04 字數 766 閱讀 1599

題目描述

給出一段環狀序列,即認為a[1]和a[n]是相鄰的,選出其中連續不重疊且非空的兩段使得這兩段和最大。

輸入輸出格式

輸入格式:

輸入檔案maxsum2.in的第一行是乙個正整數n,表示了序列的長度。

第2行包含n個絕對值不大於10000的整數a[i],描述了這段序列,第乙個數和第n個數是相鄰的。

輸出格式:

輸入檔案maxsum2.out僅包括1個整數,為最大的兩段子段和是多少。

輸入輸出樣例

輸入樣例#1:

72 -4 3 -1 2 -4 3

輸出樣例#1:9說明

【樣例說明】

一段為3

【思路】由於是環狀的,所以有兩種情況;

1、頭尾相連

這種情況,預處理兩邊最區間和,列舉中間分隔點,用sum-這兩段區間和;

2、頭尾不相連

雙向最長區間子段和,列舉中間點,兩段相加;

#include #include #include #include #include #define maxn 1000006

using namespace std;

int n,a[maxn],mnl[maxn],mnr[maxn],mxl[maxn],mxr[maxn],mn,mx,ans=-maxn,sum=0;

int main()

mx=mn=mnr[n]=mxr[n]=a[n];

for(int i=n-1;i>=1;--i)

for(int i=1;i

洛谷 P1121 環狀最大兩段子段和

題目描述 給出一段環狀序列,即認為a 1 和a n 是相鄰的,選出其中連續不重疊且非空的兩段使得這兩段和最大。輸入輸出格式 輸入格式 輸入檔案maxsum2.in的第一行是乙個正整數n,表示了序列的長度。第2行包含n個絕對值不大於10000的整數a i 描述了這段序列,第乙個數和第n個數是相鄰的。輸...

luoguP1121 環狀最大兩段子段和

給出一段環狀序列,即認為a 1 和a n 是相鄰的,選出其中連續不重疊且非空的兩段使得這兩段和最大。輸入格式 輸入檔案maxsum2.in的第一行是乙個正整數n n 2 105 n le 2 times 10 n 2 1 05 表示了序列的長度。第2行包含n個絕對值不大於10000的整數a i 描述...

P1121 環狀最大兩段子段和

p1121 環狀最大兩段子段和 給出一段環狀序列,選出其中連續不重疊且非空的兩段使得這兩段和最大。n 2e5 輸入樣例 1 複製 7 2 4 3 1 2 4 3 輸出樣例 1 複製 9 題解 一道好題 考慮兩種情況,o代表選擇 ooo ooo 正做一遍最大子段和,倒做一遍最大子段和兩者相加 ooo ...