思路:樹狀陣列裸題
#includeusing namespace std;
const int maxn = 100000+500;
int c[maxn],a[maxn];
int lowbit(int x)
void update(int i,int d)
{ while(i
description
富庶的建業城中,有一條格格不入的長街,名曰跳蚤街,被戰爭所致的孤兒,聚集於此。全國的經濟都在為戰爭服務之時,也無人顧得了這裡了。
除了兩位夫人。
大喬小喬每天都會帶著一些食物來到跳蚤街,分給某一位孩子。為了避免分配不均,她們時常會詢問乙個區域內食物的總量,然後進行調整以保證每個孩子都有足夠的食物。
input
第一行兩個整數$n$,$m$,表示跳蚤街住著$n$戶孩子,大喬小喬一共分發或詢問了$m$次。
第二行$n$個整數,第$i$個數$a_i$表示第$i$戶孩子已有$a_i$的食物。
接下來$m$行,每行開始先讀入乙個整數$s_i$,指明這是一次詢問還是一次分發。
$s_i = 0$,表明這是一次詢問,然後讀入兩個整數$l_i,r_i$,表示詢問$[l_i,r_i]$區間中的孩子們一共有多少食物。
$s_i = 1$,表明這是一次分發,然後讀入兩個整數$x_i,w_i$,表示對第$x_i$戶孩子分發了$w_i$的食物。
$1\leq n,m\leq100000,0\leq a_i \leq 100000,1\leq x_i \leq n ,0 \leq w_i \leq 10000,1\leq l_i \leq r_i \leq n$
output
有多少詢問就輸出多少行,每行輸出乙個整數,作為對該詢問的回答。
sample input
5 4
1 2 3 4 5
1 2 3
0 2 4
1 4 1
0 1 5
sample output
12 19
UESTC 我要長高
題意是 就是題目描述的那樣了吧 題意很顯而易見,一眼dp題 dp i j 代表第i個人身高為j時的最小消耗,dp i j min dp i 1 k abs j k c j h i 2 複雜度o n h i 2 很明顯有點大,學習了一下單調佇列優化dp之後,發現形如dp i min max dp j ...
演算法概論 8 3
吝嗇sat問題是這樣的 給定一組子句 每個子句都是其中文字的析取 和整數k,求乙個最多有k各變數為true的滿足賦值 如果該賦值存在。證明吝嗇sat是np完全問題。可以將sat問題歸約到此問題。首先,若得到了吝嗇sat問題的乙個解,按照此解對吝嗇sat的每個子句賦值,即可驗證這個解是否成立,這個過程...
演算法設計8 3
題目 吝嗇sat問題是這樣的 給定一組子句 每個子句都是其中文字的析取 和整數k,求乙個最多有k個變數為true的滿足賦值 如果該賦值存在。證明吝嗇sat是np 完全問題。解答 首先我們要證明吝嗇sat問題是np 完全問題,我們首先要證明吝嗇sat問題是np問題,然後如果能把sat問題規約到吝嗇sa...