子數列連續和

2022-09-18 13:27:13 字數 1102 閱讀 3589

時間限制: 1 sec  記憶體限制: 128 mb

提交: 25  解決: 16

[提交] [狀態] [討論版] [命題人:admin]

題目描述

給定n個數列,規定有兩種操作,一是修改某個元素,二是求子數列[a,b]的連續和。數列的元素個數最多10萬個,詢問操作最多10萬次。

輸入第一行2個整數n,m(n表示輸入n個數,m表示有m個操作)

第二行輸入n個數列。

接下來m行,每行有三個數k,a,b(k=0表示求子數列[a,b]的和;k=1表示第a個數加b)。

輸出輸出若干行數字,表示k=0時,對應的子數列[a,b]的連續和。

複製樣例資料

10 5

1 2 3 4 5 6 7 8 9 10

1 1 5

0 1 3

0 4 8

1 7 5

0 4 8

樣例輸出
11

3035

#include#include

#include

#include

#include

#include

#include

#define rep(i, a, b) for(int i = (a); i <= (b); ++ i)

#define rep(j, a, b) for(int j = (a); j <= (b); ++ j)

#define per(i, a, b) for(int i = (a); i >= (b); -- i)

using

namespace

std;

const

int maxn = 1e7 + 5

;int

n, k,p[maxn],m,x;

int lowbit(int

a) void add(int pos,int

w) }

int sum(int

pos)

return

tot;

}int

main()

while (m--)

else

}}

最大連續子數列和

題目分析 當我們從前向後遍歷陣列時,對於陣列中每乙個整數,它只有兩種選擇 1 加入到之前的subarray 2 自己另起乙個subarray。那什麼時候會出現這兩種情況呢?如果之前的subarray的總體和大於0的話,我們認為其對後續的結果是有貢獻的。這種情況下我們選擇 將其加入之前的subarra...

最大連續子數列和

最大連續子數列和一道很經典的演算法問題,給定乙個數列,其中可能有正數也可能有負數,我們的任務是找出其中連續的乙個子數列 不允許空序列 使它們的和盡可能大。為了更清晰的理解問題,首先我們先看一組資料 8 2 6 1 5 4 7 2 3 第一行的8是說序列的長度是8,然後第二行有8個數字,即待計算的序列...

最長連續等差子數列

描述 給定乙個長度為n的整數數列,你需要在其中找到最長連續子數列的長度,並滿足這個子數列是等差的。注意公差小於或等於0的情況也是允許的。輸入 第一行為測試資料的組數t 1 t 100 請注意,任意兩組測試資料之間是相互獨立的。每組資料報含兩行 第一行為乙個整數n 1 n 100 表示給定數列長度。第...