AcWing 797:差分 ← 一維差分模板題

【題目來源】
https://www.acwing.com/problem/content/799/

【題目描述】
輸入一個長度為 n 的整數序列。
接下來輸入 m 個操作,每個操作包含三個整數 l,r,c,表示將序列中 [l,r] 之間的每個數加上 c。
請你輸出進行完所有操作后的序列。

【輸入格式】
第一行包含兩個整數 n 和 m。
第二行包含 n 個整數,表示整數序列。
接下來 m 行,每行包含三個整數 l,r,c,表示一個操作。

【輸出格式】
共一行,包含 n 個整數,表示最終序列。

【數據范圍】
1≤n,m≤100000,
1≤l≤r≤n,
?1000≤c≤1000,
?1000≤整數序列中元素的值≤1000

【輸入樣例】
6 3
1 2 2 1 2 1
1 3 1
3 5 1
1 6 1

【輸出樣例】
3 4 5 3 4 2

【算法分析】
● 構建差分數組
設原數組為含有 n 個數的 a 數組(下標常從 1 開始),差分數組為 d 數組(下標常從 1 開始)。則令
d[1]=a[1]d[i]=a[i]-a[i-1]。其中,i∈[2,n]。
● 關鍵操作
d[le]+=x,d[ri+1]-=x
利用差分處理此類“多次對區間進行加減操作”的問題,可以大大降低算法的時間復雜度。這是因為,構造差分數組后,對原數組區間 [le, ri] 的加減操作就轉化為對差分數組的區間端點的操作:d[le]+=x,d[ri+1]-=x。這明顯大大降低了計算量,所以算法效率會很高。注意:此處的原數組及差分數組的下標都從1開始
● 若已知差分數組 d[i],則由語句
d[i]+=d[i-1]?可得到原始數組。其中,i∈[1,n]。

【算法代碼】

#include <bits/stdc++.h>
using namespace std;const int N=1e5+5;
int a[N]; //Primitive array
int d[N]; //Difference arrayint main() {int n,m;cin>>n>>m;for(int i=1; i<=n; i++) { //i from 1cin>>a[i];d[i]=a[i]-a[i-1]; //Building a difference array}int le,ri,c;while(m--) {cin>>le>>ri>>c;d[le]+=c;d[ri+1]-=c;}for(int i=1; i<=n; i++) { //i from 1a[i]=d[i]+a[i-1];cout<<a[i]<<" ";}return 0;
}/*
in:
6 3
1 2 2 1 2 1
1 3 1
3 5 1
1 6 1out:
3 4 5 3 4 2
*/




【參考文獻】
https://blog.csdn.net/hnjzsyjyj/article/details/139855105
https://www.acwing.com/solution/content/26588/








?

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

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

相關文章

富格林:正規操作實現穩健出金

富格林認為&#xff0c;當下的金融市場&#xff0c;投資者進行理財都會特別關注盈利效率高的產品&#xff0c;而近年來興起的現貨黃金&#xff0c;其高效的盈利效率吸引著大批朋友關注。不過&#xff0c;要想在這盈利出金&#xff0c;就得學習掌握正規的交易策略。下面富格林將…

onnx模型修改:去掉Dropout層

文章目錄 嘗試1&#xff1a;強行設置dropout層train mode為False嘗試2&#xff1a;找到onnx模型中的dropout, train mode設置為False嘗試3&#xff1a;直接刪除dropout層&#xff0c;連接其輸入輸出結語 最近訓練模型使用了tinyvit&#xff0c;性能挺強的&#xff1a; 但是導出…

超細毛搭配超寬設計,一款更呵護牙齦的牙刷

牙齦敏感的時候&#xff0c;刷牙特別難受&#xff0c;最近試了試惠百施&#xff08;EBISU&#xff09;65孔寬頭軟毛牙刷&#xff0c;感覺它的口腔護理體驗很不錯。這款牙刷的設計獨特&#xff0c;采用寬頭設計&#xff0c;一次就能刷兩排牙齒&#xff0c;極大地提高了清潔效率。…

RS232自由轉Profinet協議網關模塊連接1200PLC與掃碼槍通訊及手動清零案例

一、RS232和Profinet這兩種通訊接口的特點和應用場景&#xff1a; RS232是一種串行通訊接口標準&#xff0c;常用于連接計算機和外部設備&#xff0c;傳輸速率較低但穩定可靠。Profinet則是一種工業以太網通訊協議&#xff0c;具有高速、實時性強的特點&#xff0c;適用于工業…

C/C++語言通過動態鏈表實現按需內存分配和使用(Linux Ubuntu 24.04環境)

我認為比較理想的內存使用方式應該實現這幾個特性&#xff1a; 1. 分配一塊能滿足大多數情況下需求的內存&#xff0c;比如80%的情況下都不需要再次分配內存。 2. 對另外20%需要較多內存的情況&#xff0c;可以通過動態鏈表按需追加新的內存塊。 3. 要對總共消耗的內存有一個…

【C語言】解決C語言報錯:Dangling Pointer

文章目錄 簡介什么是Dangling PointerDangling Pointer的常見原因如何檢測和調試Dangling Pointer解決Dangling Pointer的最佳實踐詳細實例解析示例1&#xff1a;釋放內存后未將指針置為NULL示例2&#xff1a;返回指向局部變量的指針示例3&#xff1a;指針懸空后繼續使用示例4&…

引領未來:AI Native與物聯網(IoT)的革命性融合

引領未來&#xff1a;AI Native與物聯網(IoT)的革命性融合 在數字化轉型的浪潮中&#xff0c;AI Native作為一種新興的軟件開發模式&#xff0c;正逐漸成為推動技術創新的核心力量。與此同時&#xff0c;物聯網(IoT)技術通過連接物理世界與數字世界&#xff0c;不斷擴展其應用…

自編碼器筆記

編碼器解碼器自編碼器 先壓縮特征&#xff0c;再通過特征還原。 判斷還原的和原來的是否相等 encode data 在一個“潛在空間”里。它的用途是“深度學習”的核心-學習數據的特征并簡化數據表示形式以尋找模式。 變分自編碼器&#xff1a; 1. 首先、假設輸入數據是符合正態分布…

tiny-redis 項目可能的問題

https://build-your-own.org/redis/ 事件循環怎么實現的 首先我將連接包裝為一個 Connect 類&#xff0c;它包含了 socket fd&#xff0c;讀寫緩沖區&#xff0c;連接狀態&#xff08;這個連接是發送數據還是接收數據&#xff09;等成員屬性 我會在全局維護一個從 socket fd…

003 選擇排序

文章目錄 先挑最值&#xff0c;再把剩下的挑最值&#xff0c;再把剩下的挑最值。。。 -- 排序函數 function selectionSort(arr) -- 外層循環&#xff0c;從數組的第一個元素開始&#xff0c;對每個元素進行排序 for i 1, #arr do -- 假設當前位置的元素是最小的 local …

LCR 060. 前 K 個高頻元素

給定一個整數數組 nums 和一個整數 k &#xff0c;請返回其中出現頻率前 k 高的元素。可以按 任意順序 返回答案。 示例 1: 輸入: nums [1,1,1,2,2,3], k 2 輸出: [1,2] 示例 2: 輸入: nums [1], k 1 輸出: [1] 提示&#xff1a; 1 < nums.length < 105k 的取值范…

【SQL Server點滴積累】Setup SQL Server 2008 Database Mirror (二)

【SQL Server點滴積累】Setup SQL Server 2008 Database Mirror (一)-CSDN博客今天分享SQL Server 2008 R2搭建數據庫鏡像(Database Mirror)https://blog.csdn.net/ncutyb123/article/details/139749117?spm1001.2014.3001.5501本篇Blog基于以上Blog步驟進行SQL Server 2008 R…

python03——文件操作(new)

“變量”open&#xff08;‘文件路徑’&#xff0c;‘模式’&#xff09; //注意加引號 “變量”.write( ) //write函數是寫的是字符串&#xff0c;如果你寫的東西不是字符串&#xff0c;要寫成write&#xff08;str&#xff08;。。&#xff09;&#xff09; “變量”.read…

vue3學習教程第四十節(pinia的用法注意事項解構store)

pinia 主要包括以下五部分&#xff0c;經常用到的是 store、state、getters、actions 以下使用說明&#xff0c;注意事項&#xff0c;僅限于 vue3 setup 語法糖中使用&#xff0c;若使用選項式 API 請直接查看官方文檔&#xff1a; 一、前言&#xff1a; pinia 是為了探索 vu…

03_意向鎖

意向鎖&#xff08;Intention Lock&#xff09; 文章目錄 意向鎖&#xff08;Intention Lock&#xff09;簡介類型原理意向鎖加鎖流程鎖兼容矩陣使用場景示例總結擴展&#xff1a;意向鎖和共享鎖排他鎖的加鎖流程假設的場景和前提已加鎖的情況新的加鎖請求加鎖流程鎖的兼容性矩…

力扣算法-9.回文數

9.回文數 個人思考 首先從示例2可以看出符號也算在整數這個整體內&#xff0c;可以先判斷整數若為負數則返回false其次很容易就會想到遍歷兩次&#xff0c;從頭以及從尾&#xff0c;遍歷得到的結果相比較&#xff0c;相同則為回文數 public class Alee9 {public static void …

OpenResty的安裝及高級使用

OpenResty的安裝及高級使用 1. OpenResty的安裝1.1. 二進制版本安裝1.2. 源碼方式安裝2. 日志打印header和body3. 替換body體字符串1. OpenResty的安裝 OpenResty的中文站點:https://openresty.org/cn/ ?? OpenResty的英文站點:https://openresty.org/en/ 1.1. 二進制版本…

【linux基礎】后臺執行命令,防止中斷nohup

前臺運行與后臺運行&#xff1a;前臺運行&#xff0c;就是運行過程一直在屏幕輸出。 目的&#xff1a;1. 提交至后臺 & 2.防止中斷 nohup 1.終端上不要有大量的log出現&#xff0c;后臺運行 (1) & 程序后臺運行 #腳本、修改權限 vi test.sh chmod 777 test.sh#后…

ArcGIS Pro SDK (三)Addin控件 3 事件功能類

22 ArcGIS Pro 放置處理程序 目錄 22 ArcGIS Pro 放置處理程序22.1 添加控件22.2 Code 23 ArcGIS Pro 構造工具23.1 添加控件23.2 Code 24 ArcGIS Pro 表構造工具24.1 添加控件24.2 Code 22.1 添加控件 22.2 Code 放置處理程序可以實現文件拖動放置、TreeVIew、ListBox等控件拖…

極速安裝的藝術:使用 Mamba 革新你的 Conda 環境管理

標題&#xff1a;極速安裝的藝術&#xff1a;使用 Mamba 革新你的 Conda 環境管理 引言 在數據科學和機器學習領域&#xff0c;Conda 是一個廣受歡迎的包管理器和環境管理器。然而&#xff0c;隨著項目規模的增長&#xff0c;Conda 在處理大量依賴時可能會顯得緩慢。Mamba&am…