洛谷 P3372 線段樹1-分塊做法
我向來不喜歡廢話,直接開始說啦!
預處理:
①段數t=sqrt(n);
②每段左邊界L[i]=(i-1)*t+1;
③每段右邊界R[i]=i*t;
④補充處理:t2小於n的再補一段,左邊界R[t-1]+1,右邊界n;
⑤區間和sum[i]=∑jL[i]<=j<=R[i]a[j];
⑥預設增量標記add=0;
區間修改:
(情況一)l,r在同一塊內:直接對區間內的每個數加,區間和用詢問長度用修改1次;
(情況二)l,r不在同一塊內:
①l+1到r-1塊內:全部修改增量標記;
②l塊:做法同情況1,右邊界是R[pos[l]];
③r快:做法同情況1,左邊界是L[pos[r]];
區間查詢:
(情況一)l,r在同一塊內:直接對區間內的數求和,再加上增量標記*詢問長;
(情況二)l,r不在同一塊內:
①l+1到r-1塊內:全部加上區間和以及增量標記*段長;
②l塊:做法同情況1,右邊界是R[pos[l]];
③r快:做法同情況1,左邊界是L[pos[r]];
整體思想:大段維護,菊(抱歉打錯字啦)區域性樸素
撒花!
相關推薦
洛谷 P3372 線段樹1-分塊做法
我向來不喜歡廢話,直接開始說啦! 預處理: ①段數t=sqrt(n); ②每段左邊界L[i]=(i-1)*t+1; ③每段右邊界R[i]=i*t; ④補充處理:t2小於n的再補一段,左邊界R[t-1]+1,右邊界n; ⑤區間和sum[i]=∑jL[i]<=j<=R[i]
【luogu P3372 線段樹1】模板
esp algorithm n) col LG uil shu amp urn 線段樹的模板題 update區間修改,query區間求和 1 #include <iostream> 2 #include <cstdio> 3 #include
洛谷P2801 教主的魔法 分塊
我們將序列分成 n \sqrt{n} n
【洛谷P1471】方差 分塊
#include<bits/stdc++.h> using namespace std; #define db double #define N 100005 int n,m,bl[N],t; db a[N],sum1[330],sum2[330],
洛谷P3588 線段樹優化建圖
題目描述 給定一個長度為n的正整數序列a,每個數都在1到10^9範圍內,告訴你其中s個數,並給出m條資訊,每條資訊包含三個數l,r,k以及接下來k個正整數,表示a[l],a[l+1],...,a[r-1],a[r]裡這k個數中的任意一個都比任意一個剩下的r-l+1-k個數大
洛谷3373 線段樹2(線段樹)
傳送門 【題目分析】 RT,就是線段樹的模板,支援區間乘、區間加、區間求和。 很有意思的一點是兩個標記的下傳,解決了就行了。 然後這道題,作為AHOI,竟然是個裸的模板!(可能年份久遠的原因吧。。。)兩個一毛一樣嘛! 【程式碼~】 #include<bits
洛谷P2023 線段樹乘模板
P2023 [AHOI2009]維護序列 題目描述 老師交給小可可一個維護數列的任務,現在小可可希望你來幫他完成。 有長為N的數列,不妨設為a1,a2,…,aN 。有如下三種操作形式: (1)把數列中的一段數全部乘一個值; (2)把數列中的一段數全部加一個值; (3)詢
【洛谷】線段樹 樹狀陣列區間修改區間查詢
在做一道整體二分的題目的時候遇到了這種區間修改區間查詢的樹狀陣列,感覺用起來手感不錯就拿來了。證明的話,那其實不重要,會用就好了 #include<cstdio> #include<
【洛谷P3372】【模板】線段樹 1
return blog 限制 空格 ges 進行 esp -m node 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.求出某區間每一個數的和 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,分別表示該數列數字的個數和操作的
【線段樹】洛谷 P3372 【模板】線段樹 1
tree dtree cnblogs oot ++ query urn true typedef 動態開結點線段樹板子。 #include<cstdio> using namespace std; typedef long long ll; ll s
洛谷 P3372 【模板】線段樹 1
題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.求出某區間每一個數的和 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,分別表示該數列數字的個數和操作的總個數。 第二行包含N個用空格分隔的整數,其中第i個數字表
【刷題】洛谷 P3834 【模板】可持久化線段樹 1(主席樹)
!= tchar 這樣的 信息 reg har mem hair define 題目背景 這是個非常經典的主席樹入門題——靜態區間第K小 數據已經過加強,請使用主席樹。同時請註意常數優化 題目描述 如題,給定N個正整數構成的序列,將對於指定的閉區間查詢其區間內的第K小值。
洛谷P3834 [模板]可持久化線段樹1(主席樹) [主席樹]
resid include tom c++ -a using printf getc int 題目傳送門 可持久化線段樹1(主席樹) 題目背景 這是個非常經典的主席樹入門題——靜態區間第K小 數據已經過加強,請使用主席樹。同時請註意常數優
線段樹1(區間懶標記) 洛谷3372
+= char mes div fin bits down ++ space 感動,,我這個菜鳥把困擾多時的線段樹幹掉了(wanna cry),留給日後作紀念 #pragma GCC optimize(3) #include <bits/stdc++.h>
【模板】可持久化線段樹 1(主席樹) 洛谷p3834
題目背景 這是個非常經典的主席樹入門題——靜態區間第K小 資料已經過加強,請使用主席樹。同時請注意常數優化 題目描述 如題,給定N個正整數構成的序列,將對於指定的閉區間查詢其區間內的第K小值。 輸入輸出格式 輸入格式: 第一行包含兩個正整數N、M,分
洛谷線段樹1、2
傳送門 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define re register #defi
洛谷P3834 【模板】可持久化線段樹 1 主席樹
Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 20000000 + 4; int n,m, sumv[maxn], node_cnt, root[m
洛谷 P2590 [ZJOI2008]樹的統計(樹鏈剖分+線段樹)
題目描述 一棵樹上有n個節點,編號分別為1到n,每個節點都有一個權值w。 我們將以下面的形式來要求你對這棵樹完成一些操作: I. CHANGE u t : 把結點u的權值改為t II. QMAX u v: 詢問從點u到點v的路徑上的節點的最大權值 III. QSUM
P3372 【模板】線段樹 1
load color 求和 整數 數字 amp article http cst 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.求出某區間每一個數的和 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,分別表示該數
線段樹區間修改 P3372 【模板】線段樹 1
print alt namespace clu 格式 getch 輸出格式 包含 模板 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.求出某區間每一個數的和 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,分別表示該數