樹狀陣列區間修改+單點求值
以前寫過樹狀陣列區間修改以及區間查詢,現在才發現自己居然不是很會單點查詢,但其實相差不是很多,但還是來填一下坑吧
差分序列:如果我們用 a 陣列表示原序列,則其差分序列為 c 陣列,即 c [ i ]= a [ i ] - a [ i - 1 ]
那麼對於a陣列的區間修改(l,r,w)就可以等價為:c陣列的單點修改,c[ l ] + w 以及 c[ r+1 ] - w(這個由定義就可以很明顯的得到)
那不就完啦,對於區間修改我們就轉化為熟悉的小可愛單點修改了
可單點查詢怎麼辦呢???
這也很容易
我們可以發現 c 陣列的字首和就對應著一個 a陣列中的原數,舉個例子:
a 4 1 5 2
c 4 -3 4 -3
sigma(c) 4 1 5 2
那單點查是不是就變成字首和啦,又是我們所熟知的,~\(≧▽≦)/~啦啦啦
總結:
樹狀陣列的區間修改+單點查詢
就等價於 其差分序列的 單點修改+區間查詢
程式碼什麼的就不放咯~~~很基礎噠
相關推薦
樹狀陣列區間修改+單點求值
以前寫過樹狀陣列區間修改以及區間查詢,現在才發現自己居然不是很會單點查詢,但其實相差不是很多,但還是來填一下坑吧 差分序列:如果我們用 a 陣列表示原序列,則其差分序列為 c 陣列,即 c [ i ]= a [ i ] - a [ i - 1 ] 那麼對於a陣列的區間修
樹狀陣列區間修改+單點查詢 (只能單點查詢)
差分思想: 假設有一個數列 a = { 2, 6, 9, 3, 7 }, 那麼對應的差分陣列b 有 , b = {2, 4, 3, -6, 4 } 因為 b1 + b2 + b3 + ... + = a1 + (a2 - a1) + (a3 - a2) + ..
樹狀陣列模版(單點修改區間求和)(區間修改單點求值)(區間修改區間求和)
eg。 hdu1166(單點修改區間求和) #include<bits/stdc++.h> #define maxn 111111 using namespace std; int n;
樹狀陣列——區間修改,點查詢
板子題 #include <bits/stdc++.h> #define sf1(a) scanf("%d",&a) #define sf2(a,b) scanf("%d%d"
#133. 二維樹狀陣列 1:單點修改,區間查詢
題目描述 這是一道模板題。 給出一個 n\times mn×m 的零矩陣 AA,你需要完成如下操作: 1 x y k:表示元素 A_{x,y}Ax,y 自增 kk;
poj 2155 (二維樹狀陣列 區間修改 求某點值)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 33682
hdu1556 Color the ball (樹狀陣列應用型別二) 【區間更新 單點求值】
題目連線:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Problem Description N個氣球排成一排,從左到右依次編號為1,2,3....N.每次給定2個整數a b(a <= b),lele便為騎上他
HDU - 3584 Cube (三維樹狀數組 + 區間改動 + 單點求值)
btn either -o mem 求值 popu -s onos column HDU - 3584 Cube Time Limit: 1000MS Memory Limit: 65536KB 64bit IO
二維樹狀陣列模板(單點更新,區間求和)(以HDU 2642為例)
題目:點選開啟連結 題意:輸入B後輸入座標,表示對應的點的燈變亮,輸入D後輸入座標表示對應的點燈滅,輸入Q後輸入一個矩形的左下角和右上角 輸出矩形內亮著的等的個數,注意燈亮過不能再亮,燈關了不能再關,所以用陣列標記,樹狀陣列模板中元素下標均從1開始,題目從0開始所以加1。
樹狀陣列專題 (單點更新、區間求和) + (區間更新、單點查詢) + (區間更新、區間求和)(差分思想)
樹狀陣列專題 一直感覺樹狀陣列用處比較小而且侷限、因為最基本的用法就是單點更新和區間求和、
hdu 1556 Color the ball(線段樹區間維護+單點求值)
code AR else map 區間維護 strong ssi 求值 blank 傳送門:Color the ball Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768
樹狀陣列 區間修改 區間查詢 講解
原來的值存在a[]裡面,多建立個數組c1[],注意:c1[i]=a[i]-a[i-1]。 那麼求a[i]的值的時候: a[i]=a[i-1]+c1[i]=a[i-2]+c1[i]+c1[i-1]=…..=c1[1]+c1[2]+…+c1[i]。 我們叫c1[]陣列為差分
bzoj 3779 重組病毒 —— LCT+樹狀陣列(區間修改+區間查詢)
題目:https://www.lydsy.com/JudgeOnline/problem.php?id=3779 RELEASE操作可以對應LCT的 access,RECENTER則是 makeroot; 考慮顏色數,把一條實邊變成虛邊,子樹+1,虛變實子樹-1; 但有換根操作,怎麼維護子樹? 也可以
【洛谷】線段樹 樹狀陣列區間修改區間查詢
在做一道整體二分的題目的時候遇到了這種區間修改區間查詢的樹狀陣列,感覺用起來手感不錯就拿來了。證明的話,那其實不重要,會用就好了 #include<cstdio> #include<
詳解樹狀陣列 區間修改求和
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 102333 using namespace std; typedef long lo
利用差分實現的樹狀陣列區間修改 區間求和
最開始和很不敢相信竟然樹狀陣列還可以區間修改,既然常數這麼小,而且好寫易調的樹狀陣列可以寫區間修改了,那豈不美滋滋? 所以我在網上查了查做法,竟然學會了??? Orz http://blog.c
樹狀陣列 區間修改 差分
傳送門 // by spli #include<cstring> #include<cstdio> #include<algorithm> #include<iostream> using namespace s
hdu4970 Killing Monsters 樹狀陣列 區間修改
Kingdom Rush is a popular TD game, in which you should build some towers to protect your kingdom from monsters. And now another wave of monsters is coming
3468(水題)樹狀陣列區間修改區間查詢模板
U have N integers, A1, A2, ... , AN"C a b c" means adding c to each of Aa, Aa+1, ... , Ab. -10000 ≤ c ≤ 10000."Q a b" means querying the s
樹狀陣列 區間修改區間查詢
在這道題因為資料型別卡了我1個多小時之後,我終於把它幹掉了(洛谷3372也可以用這道題的程式碼過,複製過去改一下讀入順序就行,目測codevs的資料比較毒瘤) 樹狀陣列 區間修改+區間查詢 實在是喜歡樹狀陣列啊!好理解,更重要是好寫啊!這次寫寫區間修改區間查詢哈 首