時間限制: 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
113035
#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 表示給定數列長度。第...