字首和演算法解決靜態的陣列的字首和字首和–題目連線樹狀陣列演算法可以解決動態陣列的字首和
字首和暴力解法:(tel)
#include
using
namespace std;
const
int n=
100000
;int a[n+10]
;int s[n+10]
;int
main()
while
(m--
) cout<}return0;
}
字首和解法(ac):
#include
using
namespace std;
const
int n=
100000
;int a[n+10]
;int s[n+10]
;int
main()
for(
int i=
1;i<=n;i++
)while
(m--
)return0;
}
子矩陣的和 --題目連線
#include
#include
using
namespace std;
const
int n=
1000
;const
int q=
200000
;int a[n+10]
[n+10];
int s[n+10]
[n+10];
int n,m,q;
int cnt=1;
int qq[q]
;int
main()
}for
(int i=
1;i<=n;i++)}
while
(q--
)for
(int i=
1;i<=cnt-
1;i++
)return0;
}
樹狀陣列–裸題
動態求連續區間和以及插入數–題目鏈結
樹狀陣列解:
#include
using
namespace std;
const
int n=
100000+10
;int n,m;
int a[n]
;int tre[n]
;int
lowbit
(int key)
void
add(
int index,
int key)
}int
query
(int key)
return res;
}int
main()
for(
int i=
1;i<=n;i++
)while
(m--
)else
}return0;
}
線段樹解:
#include
using
namespace std;
const
int n=
100000+10
;int n,m;
int w[n]
;struct nodetr[n*4]
;void
pushup
(int u)
void
build
(int u,
int l,
int r)
;else
;//除以 2 下取整
int mid=
(l + r)
>>1;
build
(u<<
1,l,mid)
;build
(u<<1|
1,mid+
1,r)
;pushup
(u);}}
intquery
(int u,
int l,
int r)
else
}void
modify
(int u,
int x ,
int v)
pushup
(u);}}
intmain()
build(1
,1,n);
int k,a,b;
while
(m--
)return0;
}
字首和演算法 一維字首和 二維字首和
輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對於每個詢問,輸出原序列中從第l個數到第r個數的和。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數,表示整數數列。接下來m行,每行包含兩個整數l和r,表示乙個詢問的區間範圍。輸出格式 共m行,每行輸出乙個詢問的結果。資...
字首和與子矩陣的和
一維字首和 s i a 1 a 2 a i a l a r s r s l 1 二維字首和 s i,j 第i行j列格仔左上部分所有元素的和 以 x1,y1 為左上角,x2,y2 為右下角的子矩陣的和為 s x2,y2 s x1 1,y2 s x2,y1 1 s x1 1,y1資料來自acwing 題...
一維字首和
1 一維字首和 模板 一維字首和 模板題 acwing 795.字首和 s n a i a 2 a 3 a 4 a n s n s n 1 a n a l a l 1 a r s r s l 1 acwing795.字首和 輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對...