這是我第一題AC的線段樹

題目簡述: 有N個整數,Q次操作,每次操作為詢問一個區間[a, b]內數的和(0號操作)或者把一個區間內的數全部加上v(1號操作)

線段樹求解即可。

#include <cstdio>
#include <algorithm>
using std::min;
using std::max;
#define L(no) ((no) << 1)
#define R(no) (L(no) | 1)
#define PLUSTAG(no, val) plustag[no] += val, query[no] += val*(rb[no]-lb[no]+1)
const int MAXN = 400001;
int lb[MAXN], rb[MAXN], query[MAXN], ans, plustag[MAXN];
int sum(int a, int b) {return a + b;}
void build(int no, int l, int r) {int mid = l + r >> 1;lb[no] = l;rb[no] = r;if(l == r) scanf("%d", &query[no]);else {build(L(no), l, mid);build(R(no), mid + 1, r);query[no] = query[L(no)] + query[R(no)];}
}
void getval(int no, int l, int r, int(*func)(int, int), int* key) {int mid = lb[no] + rb[no] >> 1;if(l <= r && (lb[no] <= r&& rb[no] >= r || rb[no] >= l && lb[no] <= l)) {if(lb[no] == l && rb[no] == r) ans = func(ans, key[no]);else {if(plustag[no]) {PLUSTAG(L(no), plustag[no]);PLUSTAG(R(no), plustag[no]);plustag[no] = 0;}getval(L(no), l, min(mid, r), func, key);getval(R(no), max(l, mid + 1), r, func, key);}}
}
void plus(int no, int l, int r, int val) {int mid = lb[no] + rb[no] >> 1;if(l <= r && (lb[no] <= r&& rb[no] >= r || rb[no] >= l && lb[no] <= l)) {if(lb[no] == l && rb[no] == r) {PLUSTAG(no, val);}else {if(plustag[no]) {PLUSTAG(L(no), plustag[no]);PLUSTAG(R(no), plustag[no]);plustag[no] = 0;}query[no] += (r - l + 1) * val;plus(L(no), max(l, lb[no]), min(mid, r), val);plus(R(no), max(l, mid + 1), min(r, rb[no]), val);}}
}
int main() {int n, q, i, op, a, b, v;scanf("%d%d", &n, &q);build(1, 1, n);for(i = 1; i <= q; i++) {scanf("%d%d%d", &op, &a, &b);if(op == 0) {ans = 0;getval(1, a, b, sum, query);printf("%d\n", ans);}else {scanf("%d", &v);if(v != 0) plus(1, a, b, v);}}return 0;
}

解釋一下:query[]表示一個區間里面的和……然后左右半區間分別搞……1操作時Lazy優化是必須要加的(就是好像老師布置的作業等要交了再補……),然后,便過之。

問我為什么getval寫函數指針?因為這是百搭函數……要求最大值傳入max最小值傳min求和傳sum……

然后:就沒有然后了。過之。

轉載于:https://www.cnblogs.com/nealchen/p/4290085.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376234.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376234.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376234.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

a頻繁連接不上redis_連接不到redis Caused by:..._慕課問答

redis裝在linux虛擬機上&#xff0c;在xshell上可以成功訪問redis&#xff0c;配了密碼拿了老師完整的代碼作測試&#xff0c;就是訪問失敗&#xff0c;不知道哪里出了問題地址端口密碼都沒錯的&#xff0c;求解org.springframework.data.redis.RedisConnectionFailureExceptio…

抓localhost包 - rawcap

抓localhost包的話用wireshark好像有點麻煩&#xff0c;所以用rawcap RawCap官網 RawCap下載連接 直接運行&#xff0c;首先根據需要選擇監聽相應的網卡&#xff0c;然后再填寫抓包文件保存的名字

持續集成交付CICD:Jira 發布流水線

目錄 一、實驗 1.環境 2.GitLab 查看項目 3.Jira 遠程觸發 Jenkins 實現合并 GitLab 分支 4.K8S master節點操作 5.Jira 發布流水線 一、實驗 1.環境 &#xff08;1&#xff09;主機 表1 主機 主機架構版本IP備注master1K8S master節點1.20.6192.168.204.180 jenkins…

計算幾何_多邊形

判定凸多邊形&#xff1a;頂點凹凸性法 連續三個頂點p1,p2,p3。計算p1p2,p2p3的叉乘&#xff0c;階乘大于0&#xff0c;則表示p3點在線段p1和p2的左側&#xff0c;然后依次計算下一個前后所組成向量的階乘&#xff0c;如果在計算時&#xff0c;出現負值&#xff0c;則此多邊形是…

wps完成率怎么設置_WPS表格中如何計算完成率?詳細操作方法看這里!

平時我們在使用像WPS這樣的辦公軟件時&#xff0c;我們經常會使用到其中的Excel表格軟件&#xff0c;來完成日常工作當中所需要完成的各種數據的統計以及錄入等工作。而在我們使用WPS表格來錄入、修改或者是統計某一些數據時&#xff0c;我們往往會因為表格內容的設定需求&…

[原創]WebScarab工具介紹

[原創]WebScarab工具介紹 一 WebScarab介紹 WebScarab是一個用來分析使用HTTP和HTTPS協議的應用程序框架。其原理很簡單&#xff0c;WebScarab可以記錄它檢測到的會話內容&#xff08;請求和應答&#xff09;&#xff0c;并允許使用者可以通過多種形式來查看記錄。WebScarab的設…

段表的作用

表格來自《程序員的自我修養 ——鏈接、裝載與庫》 ELF段名作用.text代碼段&#xff0c;存放執行語句.data數據段&#xff0c;存放初始化的全局變量和局部靜態變量.bss未初始化的全局變量和局部靜態變量.rodata只讀數據段.comment注釋信息段.note.GNU-stack堆棧提示段.debug調…

layoutSubviews總結

ios layout機制相關方法 - (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————- - (void)layoutSubviews- (void)layoutIfNeeded- (void)setNeedsLayout——————– - (void)setNeedsDisplay- (void)drawRectlayoutSubviews在下面情況下會被調用&#xff1a; …

三個彩燈循環點亮程序_近百組彩燈點亮江畔,義渡燈會正式亮燈啦

10月23日晚上&#xff0c;大渡口區義渡古鎮華燈初上。夜幕之下&#xff0c;2020第一屆義渡燈會亮燈儀式在此舉行&#xff0c;來自四川的近百組彩燈將在這里點亮夜空&#xff0c;一直陪伴廣大市民游客至明年元宵節后。當晚6點半&#xff0c;義渡燈會亮燈儀式正式開啟。本次燈會以…

repeater序列號,換頁數字不重新排

<td><%# Container.ItemIndex 1(Convert.ToInt32(this.drpCurrentPageIndex.SelectedValue)-1)*Convert.ToInt32(this.drpCount.SelectedValue)%></td>轉載于:https://www.cnblogs.com/liziqiang/p/3457203.html

Altera的幾個常用的Synthesis attributes(轉載)

各廠商綜合工具&#xff0c;對HDL綜合時都定義了一些綜合屬性這些屬性可指定a declaration,a module item,a statement, or a port connection 不同的綜合方式。 語法為&#xff1a; /* synthesis, <any_company_specific_attribute value_or_optional_value */ 下面就是Al…

QPushButton hover配置

鼠標移動到QPushButton上面時顯示下劃線 //下面是當鼠標移動到按鈕上時&#xff0c;按鈕上的文字顯示下劃線 QPushButton#Button_2:hover{ text-decoration:underline; }//下面是普通顯示 QPushButton#Button_2{ color:rgba(52, 144, 255 ,255); border-radius:0px; backgrou…

eclipse沒有日志_強化公共DHT以抵抗eclipse攻擊,ipfs官方還說了什么?

近日&#xff0c;IPFS官方發布博客&#xff0c;就如何強化公共DHT以抵抗eclipse攻擊進行詳細介紹&#xff0c;星球君幫大家翻譯了一下&#xff0c;讓我們來看看官方都說了什么吧&#xff1a;IPFS 2020 年的一個主要焦點是隨著網絡規模的不斷擴大而改進內容路由。雖然我們已經對…

mongoDB簡明教程-python(轉)

MongoDB是一個介于關系數據庫和非關系數據庫之間的產品&#xff0c;是非關系數據庫當中功能最豐富&#xff0c;最像關系數據庫的。他支持的數據結構非常松散&#xff0c;是類似 json的bjson格式&#xff0c;因此可以存儲比較復雜的數據類型。官方網站&#xff1a;http://www.mo…

HTTP基礎10--web(2)

因輸出值轉義不完全引發的安全漏洞 實施 Web 應用的安全對策可大致分為以下兩部分。 客戶端的驗證Web 應用端&#xff08;服務器端&#xff09;的驗證: 輸入值驗證 / 輸出值轉義客戶端允許篡改數據或關閉 JavaScript&#xff0c;不適合將 JavaScript 驗證作為安全的防范對策。保…

單一課和綜合課的劃分依據_武夷巖茶產地如何劃分?

產地是指某種物品的生產、出產或加工制造的地點&#xff0c;日常含義是指某種物品的主要生產地。本文探討的武夷巖茶種植產地&#xff0c;也就是當地茶人俗稱的“山場”。武夷巖茶“山場”的俗稱可能緣起于宋代的茶政。宋代官府設置“榷&#xff08;qu&#xff09;茶場”&#…

windows文件路徑大于MAX_PATH

如果文件路徑大于MAX_PATH&#xff0c;是無法直接用CreatFile、fopen等方法來打開文件 但是可以通過在路徑前面加上“\\?\”來獲取文件 比如想要打開下面的文件123.txt&#xff0c;但是文件路徑是很長的&#xff08;假設…是200個字符&#xff09;&#xff1a; C:\123...\1…

C# 枚舉 字符串 轉換

普通方法 這種方法盡管很SB但確實可以解決問題 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e){string SelPath "";switch (comboBox1.SelectedIndex){case 0: SelPath System.Environment.GetFolderPath(System.Environment.SpecialFo…

arduino 機器視覺編程_萬物皆可仿真的MATLAB/Simulink神奇在哪?解析如何將其應用于一整套機器人設計開發流程...

MATLAB/Simulink&#xff1a;萬物皆可仿真 MATLAB是由美國MathWorks公司出品的一款商業數學軟件。它是一個多功能的科學計算平臺&#xff0c;將算法開發、數據分析、矩陣計算等諸多強大功能集成在一個易于操作的視窗環境中。MATLAB下的Simulink更是被認為可以“仿真任何系統”。…

排序算法(1) 快速排序 C++實現

快速排序基本特性 時間復雜度&#xff1a;O&#xff08;n*lgn&#xff09;最壞&#xff1a;O&#xff08;n^2&#xff09;空間復雜度&#xff1a;最好情況下&#xff1a;O&#xff08;lgn&#xff09;&#xff0c;最壞情況&#xff1a;O(n)&#xff0c;平均情況&#xff1a;O(l…