dp P2642 雙子序列最大和

2022-04-02 16:43:19 字數 1412 閱讀 2662

給定乙個長度為n的整數序列,要求從中選出兩個連續子串行,使得這兩個連續子串行的序列和之和最大,最終只需輸出最大和。乙個連續子串行的和為該子串行中所有數之和。每個連續子串行的最小長度為1,並且兩個連續子串行之間至少間隔乙個數。

輸入格式:

第一行是乙個整數表示n。

第二行是n個整數表示整數序列。

輸出格式:

乙個數,兩個連續子串行的序列和之和。

輸入樣例#1: 

5

83 223 -13 1331 -935

輸出樣例#1: 

1637

輸入樣例#2: 

3

83 223 -13

輸出樣例#2: 

70

對於30%的資料n<=100。

對於60%的資料有n<=10000。

對於100%的資料有n<=1000000。

資料保證運算過程不會超過long long(int64)。

【思路】:

從左到右跑最一遍,從左到右跑一邊,然後列舉分割點(注意要至少相隔1個)

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long int

using

namespace

std;

const

int maxn=999999999

;const

int minn=-999999999

;inline

intread()

while(c >= '

0' && c <= '

9') x = x * 10 + c - '

0', c =getchar();

return x *f;

}ll n,a[

1000005],f1[10000005

],s;

ll f2[

1000005

];int

main()

int b_flag=1,e_flag=1

,b,e;

f1[1]=s=a[1

];

for(int i=2; i<=n; ++i)

f2[n]=s=a[n];

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

ll ans=a[1]+a[3

];

for(int i=2; ii)

cout

<}

洛谷P2642 雙子序列最大和

題目 這種題還交上那麼多遍大概我確實是菜 甚至一開始讀的題意都是錯的 但是拿錯的題意打還過了樣例了 真是 include include include define ll long long define inf 2147483647 using namespace std const int m...

連續子串行最大和

這道題目使用最大和問題的分治演算法 package com.divide.cc author sunnyboy runtime is o nlogn public class sumsequence int maxsum maxsubsequencesum a system.out.println ...

獲得最大和的子串行

如果子串行都是正數,那麼該子串行一定是最大和得子串行的一部分。如果下乙個數為負數,那麼需要判斷該負數和當前子串行的和是否未正。如果是負數,那麼我們可以認為包含這個負數的子串行一定不是最大子串行。但是如果為正數,我們還需要繼續判斷後續節點是否可以使得最大和增加。例如1,2,2,4顯然1,2,2,4為最...