題目描述
給出一段環狀序列,即認為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 ...