【CH4301】Can you answer on these queries III
區間操作線段樹問題。需要維護四個信息:區間和sum,緊靠左側的最大連續子段和lmax,緊靠右側的最大連續子段和rmax,區間最大連續子段和dat。
不需要lazy tag,因為只用單點修改,總是要遞歸到最底層。上傳部分:
void up(int ls/*左兒子*/,int rs/*右兒子*/,int fa/*父親*/)
{
t[fa].sum=t[ls].sum+t[rs].sum;//區間和相加
t[fa].lmax=Max(t[ls].lmax,t[ls].sum+t[rs].lmax);
t[fa].rmax=Max(t[rs].rmax,t[rs].sum+t[ls].rmax);
t[fa].dat =Max(Max(t[ls].dat,t[rs].dat),t[ls].rmax+t[rs].lmax/*中央部分才有效*/);
}
因為是單點修改,區間查詢,所以題目中兩種操作x,y的含義不同,change和ask進入下一層的判斷代碼不同,不可以寫錯。
【CH4301】Can you answer on these queries III
相關推薦
【CH4301】Can you answer on these queries III
div 信息 線段樹 ont tag 部分 iii ans 區間和 區間操作線段樹問題。需要維護四個信息:區間和sum,緊靠左側的最大連續子段和lmax,緊靠右側的最大連續子段和rmax,區間最大連續子段和dat。 不需要lazy tag,因為只用單點修改,總是要遞歸到最
Contest Hunter 4301 Can you answer on these queries III【線段樹】
描述 給定長度為N的數列A,以及M條指令 (N≤500000, M≤100000),每條指令可能是以下兩種之一: “2 x y”,把 A[x] 改成 y。 “1 x y”,查詢區間 [x,y] 中的最大連續子段和,即 max(x≤l≤r≤y) { ∑(i=l
4301 Can you answer on these queries III 0x40「資料結構進階」例題(線段樹)
4301 Can you answer on these queries III 0x40「資料結構進階」例題 描述 給定長度為N的數列A,以及M條指令 (N≤500000, M≤100000),每條指令可能是以下兩種之一: “2 x y”,把 A[x] 改成 y。 “1 x
題解 SP4487 【GSS6 - Can you answer these queries VI】
題目大意 給出一個由N個整陣列成的序列A,你需要應用M個操作: I p x 在p 處插入一個元素 x (解釋:這裡插入是p - 1和p 之間插入) D p 刪除p 處的一個元素 R p x 修改p 處元素的值為 x Q l r 查詢一個區間[l,r]的最大子段和 N <= 100000, M
hdoj 4027 Can you answer these queries? 【線段樹 區間減為平方 + 區間求和】
The input contains several test cases, terminated by EOF. For each test case, the first line contains a single integer N, denoting there are N battleshi
Can you answer these queries? 【HDU
題目連結 題意:就是給你一串數,讓你對一段區間操作,要麼是詢問,要麼是把這段區間的每個點開根號。 比賽看到這道題的時候,我還真高興呢,終於有線段樹了,我推了下,發現前期單點更新就行,後期的時候判斷是否為1,也就是此時節點的權值是否等於(r-l+1),於是我興高采烈的敲完了
HDU 4027 Can you answer these queries?(線段樹區間開方)
sizeof sqrt .cn swap %d nes nts following clr Can you answer these queries? Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 6576
HDU 4027 Can you answer these queries?
date 全部 swe shanghai man nts less mina query 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=4027 解題思路:線段樹區間更新,查詢。主要問題在於如何解決快速對一個區間所有數據開根號
HDU 4027 Can you answer these queries?(線段樹/區間不等更新)
push battle mark put action light blog acc lang 傳送門 Can you answer these queries? Time Limit: 4000/2000 MS (Java/Others) Memory Limi
GSS3 - Can you answer these queries III
#define RM () lse eset gin ++ hup tps 題意翻譯 nnn 個數, qqq 次操作 操作0 x y把 AxA_xAx? 修改為 yyy 操作1 l r詢問區間 [l,r][l, r][l,r] 的最大子段和 感謝 @Edgra
Can you answer these queries? HDU - 4027(線段樹+技巧)
fin 題意 ios fff PE sqrt += 長度 scan 題意:給一個數組序列, 數組長度為100000 兩種操作: 一種操作是將某一個固定區間所有數開方(向下取整) 另一種操作是詢問某個區間的所有數字之和。 由於數不超過263,因此開個七八次就變成1,由於只有
[SP1043]GSS1 - Can you answer these queries I
struct answer str == 線段 return shu lib n) 求區間內最大非空子段和,沒什麽可說的吧。 線段樹,每個區間維護從左端開始的最大非空子段和,區間內的最大非空子段和,以右端結束的最大非空子段和,還有區間和。 pushup()的寫法要註意,不要
[SP1557]GSS2 - Can you answer these queries II
常用 最大子段和 bool 修改 == 意義 一次 合並 ans 題意不過只是比GSS1多了幾個字而已,難度卻把GSS1甩得望塵莫及。 給出n個數,q次詢問,求最大子段和(可為空),相同的數只算一次。 說到相同的只算一次這一條件,有點像[SDOI2009]HH的項鏈,但是本
SP1043 GSS1 - Can you answer these queries I(線段樹,區間最大子段和(靜態))
有一種 nbsp 不用 端點 合並 表示 格式 space iostream 題目描述 給出了序列A[1],A[2],…,A[N]。 (a[i]≤15007,1≤N≤50000)。查詢定義如下: 查詢(x,y)=max{a[i]+a[i+1
SP2713 GSS4 - Can you answer these queries IV
() 輸出 line 尋找 ace != == ios 格式 傳送門 \(ZHX\; TQL\) Orz 這道題目我們可以用線段樹維護…… 可能有\(dalao\)會問:“線段樹怎麽維護區間開平方?” 而這道題的精髓就在於,它要我們維護的操作是開平方+下取整。也就是說經
SP1716 GSS3 - Can you answer these queries III
maintain ref fin oid lse etc can [1] fix 題意:給定n個數a[1]~a[n],有q次操作。 操作 0 x y:把第a[x]修改為y; 操作 1 x y:詢問x到y的的最大子段和。 輸入:
SP1043 GSS1 - Can you answer these queries I(貓樹)
log imm str 定義 getc 這就是 out for space 給出了序列A[1],A[2],…,A[N]。 (a[i]≤15007,1≤N≤50000)。查詢定義如下: 查詢(x,y)=max{a[i]+a[i+1]+...+a
SP1557 GSS2 - Can you answer these queries II(線段樹)
傳送門 線段樹好題 因為題目中相同的只算一次,我們可以聯想到HH的項鍊,於是考慮離線的做法 先把所有的詢問按$r$排序,然後每一次不斷將$a[r]$加入線段樹 線段樹上維護四個值,$sum,hix,sumtag,hixtag$,分別代表當前節點的值,節點歷史上的最大值,當前的增加標記,
Can you answer these queries?
A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use our secret weapon to eliminate the battleships.
HDU 4027 Can you answer these queries? (線段樹+暴力)
題意: 給出一段序列和兩種操作,第一種操作,將x,y區間的數均開平方,第二種操作,對x,y區間進行求和。 分析: 一開始還不敢用線段樹做,因為純線段樹下來根暴力列舉複雜度差不了多少,但由於開方,所以在很少次的迴圈裡就能達到1,所以就可以直接這麼做了。但題目沒有說名忍耐值的範圍,要是0太多