算法提高之一個簡單的整數問題2

算法提高之一個簡單的整數問題2

  • 核心思想:線段樹

    • 懶標記:add存每個子節點需要加的數
    • pushdown:將懶標記向下存 同時清除本行懶標記
  •   #include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const int N = 100010;int n,m;int w[N];struct Node{int l,r;LL sum,add;}tr[N*4];void pushup(int u){tr[u].sum = tr[u << 1].sum + tr[u << 1 | 1].sum;}void pushdown(int u){auto &root = tr[u],&left = tr[u<<1],&right = tr[u<<1|1];if(root.add){left.add += root.add,left.sum += (LL)(left.r - left.l + 1)*root.add;right.add += root.add,right.sum += (LL)(right.r - right.l + 1)*root.add;root.add = 0;}}void build(int u,int l,int r){if(l == r){tr[u] = {l,r,w[r],0};}else{tr[u].l = l,tr[u].r = r;int mid = l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);}}void modify(int u,int l,int r,int v){if(l <= tr[u].l && r >= tr[u].r){tr[u].sum += (tr[u].r - tr[u].l + 1) *v;  //長度 * 加的數tr[u].add += v;}else{pushdown(u);  //先清空本行懶標記int mid = tr[u].l + tr[u].r >> 1;if(l <= mid) modify(u<<1,l,r,v);if(r > mid) modify(u<<1|1,l,r,v); pushup(u);}}LL query(int u,int l,int r){if(l<=tr[u].l && r>=tr[u].r) return tr[u].sum;pushdown(u);int mid = tr[u].l + tr[u].r >> 1;LL v=0;if(l<=mid) v = query(u<<1,l,r);if(r > mid) v += query(u<<1|1,l,r);return v;}int main(){cin>>n>>m;for(int i=1;i<=n;i++) cin>>w[i];build(1,1,n);char op[2];int l,r,t;while(m--){cin>>op>>l>>r;if(op[0] == 'Q') cout<<query(1,l,r)<<endl;else{cin>>t;modify(1,l,r,t);}}}
    

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

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

相關文章

數據結構(六)圖

2024年5月26日一稿(王道P220) 6.1 圖的基本概念 6.1.1 圖的定義 6.2 圖的存儲及基本操作 6.2.1鄰接矩陣法 6.2.2 鄰接表

python web自動化(分布式測試Grid)

Grid介紹 Selenium Grid 是 Selenium 提供的?個?具&#xff0c;?于?持在多臺計算機上并?運?測試。 它允許將測試分發到不同的機器和瀏覽器組合上&#xff0c;同時收集結果。 1.并?執?測試?例&#xff1a;在不同的機器上并?執?測試?例&#xff0c;從?加速整個測試過…

Vulhub——adminer

文章目錄 一、CVE-2021-21311&#xff08;SSRF&#xff09;二、CVE-2021-43008&#xff08;遠程文件讀取&#xff09; 一、CVE-2021-21311&#xff08;SSRF&#xff09; Adminer是一個PHP編寫的開源數據庫管理工具&#xff0c;支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL…

如何在WRF模型中更好地設置這些海洋物理參數以提高模擬精度?

在WRF&#xff08;Weather Research and Forecasting&#xff09;模型中正確設置海洠物理參數是提高模擬精度的關鍵&#xff0c;特別是當模擬涉及到海洋和大氣的相互作用時。以下是一些提高模擬精度的策略和建議&#xff1a; 1. 理解模擬的地區和目標 在進行參數設置之前&…

基于SpringBoot+Vue的人事管理系統

引言 目前,人事管理的系統大都是CS架構的大型系統,很少有面向機關,事業單位內部的基于BS架構的微型人事系統,因此.開發一個基于BS架構的人事信息管理系統是非常必要的.但是基于BS架構的人事系統對于安全是一個大的考驗點.在人事信息系統中,功能需簡單清晰,可操作性強,其次安全…

使用paddlepaddle框架構建ViT用于CIFAR10圖像分類

使用paddlepaddle框架構建ViT用于CIFAR10圖像分類 硬件環境&#xff1a;GPU (1 * NVIDIA T4) 運行時間&#xff1a;一個epoch大概一分鐘 import paddle import time import paddle.nn as nn import paddle.nn.functional as F import paddle.vision.transforms as transforms…

CCF-GESP 等級考試 2023年3月認證C++一級真題解析

2024年03月真題 一、單選題&#xff08;每題2分&#xff0c;共30分&#xff09; 第 1 題 以下不屬于計算機輸入設備的有&#xff08; &#xff09;。 A. 鍵盤B. 音箱C. 鼠標D. 傳感器 正確答案&#xff1a;B. 音箱 解析&#xff1a; A. 鍵盤&#xff1a;鍵盤是輸入設備。B. …

第六節:帶你全面理解vue3 淺層響應式API: shallowRef, shallowReactive, shallowReadonly

前言 前面兩章,給大家講解了vue3中ref, reactive,readonly創建響應式數據的API, 以及常用的計算屬性computed, 偵聽器watch,watchEffect的使用 其中reactive, ref, readonly創建的響應式數據都是深層響應. 而本章主要給大家講解以上三個API 對應的創建淺層響應式數據的 API,…

Java面試題:Executor框架在Java并發編程中扮演什么角色?如何使用它?

在Java并發編程中&#xff0c;Executor框架扮演著核心角色&#xff0c;它提供了一種高級的、線程安全的機制來異步執行任務。Executor框架的主要目的是將任務的提交與任務的執行分離&#xff0c;從而簡化了多線程編程的復雜性。 Executor框架的角色&#xff1a; 任務與線程分離…

持續總結中!2024年面試必問 20 道 Redis面試題(八)

上一篇地址&#xff1a;持續總結中&#xff01;2024年面試必問 20 道 Redis面試題&#xff08;七&#xff09;-CSDN博客 十五、使用過Redis做異步隊列么&#xff0c;你是怎么用的&#xff1f; Redis作為一個高性能的鍵值存儲系統&#xff0c;非常適合用來實現異步隊列。異步隊…

【STM32單片機】----實現LED燈閃爍實戰

&#x1f3a9; 歡迎來到技術探索的奇幻世界&#x1f468;?&#x1f4bb; &#x1f4dc; 個人主頁&#xff1a;一倫明悅-CSDN博客 ?&#x1f3fb; 作者簡介&#xff1a; C軟件開發、Python機器學習愛好者 &#x1f5e3;? 互動與支持&#xff1a;&#x1f4ac;評論 &…

【機器學習-23】關聯規則(Apriori)算法:介紹、應用與實現

在現代數據分析中&#xff0c;經常需要從大規模數據集中挖掘有用的信息。關聯規則挖掘是一種強大的技術&#xff0c;可以揭示數據中的隱藏關系和規律。本文將介紹如何使用Python進行關聯規則挖掘&#xff0c;以幫助您發現數據中的有趣模式。 一、引言 1. 簡要介紹關聯規則學習…

[處理器芯片]-5 超標量CPU實現之ALU

ALU&#xff08;Arithmetic Logic Unit&#xff0c;算術邏輯單元&#xff09;&#xff0c;是CPU執行單元中最主要的組成部分。 1 主要功能 算術運算&#xff1a;執行加法、減法、乘法和除法等算術運算。 邏輯運算&#xff1a;執行與、或、非、異或等邏輯運算。 移位運算&am…

動態路由實驗—OSPF

動態路由協議實驗-------OSPF 鏈路狀態路由選擇協議又被稱為最短路徑優先協議&#xff0c;它基SPF&#xff08;shortest path first &#xff09;算法 實驗要求&#xff1a;各個PC之間能夠互通 1.四臺PC配置如下 PC1 PC2 PC3 PC4 2.配置各個交換機的口子的IP R1 <HUAWE…

Room注解無效原因

在Android項目中&#xff0c;如果父模塊使用Kotlin&#xff0c;而子模塊用Java編寫&#xff0c;并且在子模塊中使用了Room庫&#xff0c;那么你會發現需要使用kapt而不是annotationProcessor來處理Room注解。這里有幾個原因和背景知識&#xff1a; 1. 項目配置的影響 父模塊的…

spiderfoot一鍵掃描IP信息(KALI工具系列九)

目錄 1、KALI LINUX簡介 2、spiderfoot工具簡介 3、在KALI中使用spiderfoot 3.1 目標主機IP&#xff08;win&#xff09; 3.2 KALI的IP 4、命令示例 4.1 web訪問 4.2 掃描并進行DNS解析 4.3 全面掃描 5、總結 1、KALI LINUX簡介 Kali Linux 是一個功能強大、多才多…

YOLOv8+PyQt:實時檢測(攝像頭、視頻)

1.YOLO&#xff1a;CPU實時檢測&#xff08;攝像頭、視頻&#xff09;https://blog.csdn.net/qq_45445740/article/details/106557451 2.YOLOv8PyQt&#xff0c;實現攝像頭或視頻的實時檢測 需要安裝 PySide6 和 ultralytics pip install PySide6 pip install ultralyticsfr…

基于docxtpl的模板生成Word

docxtpl是一個用于生成Microsoft Word文檔的模板引擎庫。它結合了docx模塊和Jinja2模板引擎&#xff0c;使用戶能夠使用Microsoft Word模板文件并在其中填充動態數據。這個庫提供了一種方便的方式來生成個性化的Word文檔&#xff0c;并支持條件語句、循環語句和變量等控制結構&…

如何在 Elasticsearch 中選擇精確 kNN 搜索和近似 kNN 搜索

作者&#xff1a;來自 Elastic Carlos Delgado kNN 是什么&#xff1f; 語義搜索&#xff08;semantic search&#xff09;是相關性排名的強大工具。 它使你不僅可以使用關鍵字&#xff0c;還可以考慮文檔和查詢的實際含義。 語義搜索基于向量搜索&#xff08;vector search&…

Angular Ivy:新渲染引擎的性能提升與優化

Angular Ivy是Angular 9及更高版本中引入的默認渲染引擎&#xff0c;它取代了以前的View Engine。Ivy的目標是提高Angular的性能、減少包大小和提高開發者的生產力。 1. AOT編譯的改進&#xff1a; 在Ivy中&#xff0c;Angular使用了更早的AOT&#xff08;Ahead-of-Time&…