[BZOJ2325][ZJOI2011]道館之戰(樹剖+線段樹)
Address
Solution
先樹剖,把樹轉成序列。然後線段樹上每個點維護
8 個值:
z00 :從對應區間左端點的
A 區域走到右端點的
A 區域經過的最多格子數,如果不連通則為
0 。
z01 :從對應區間左端點的
A 區域走到右端點的
B 區域經過的最多格子數,如果不連通則為
0 。
z10 :從對應區間左端點的
B 區域走到右端點的
A 區域經過的最多格子數,如果不連通則為
0 。
z11 :從對應區間左端點的
B 區域走到右端點的
B 區域經過的最多格子數,如果不連通則為
0 。
fr00 :從對應區間左端點的
A 區域開始走經過的最多格子數。
fr01 :從對應區間左端點的
B 區域開始走經過的最多格子數。
fr10 :從對應區間右端點的
A 區域開始走經過的最多格子數。
fr11 :從對應區間右端點的
B 區域開始走經過的最多格子數。
下面定義運算:
x⨁y={x+y0x,y̸=0ELSE
線段樹左右子節點合併時(
lc 和
rc 分別為
u 的左右子節點):
z00[u]=max(z00[lc]⨁z00[rc],z01[lc]⨁z10[rc])
z01[u]=max(z00[lc]⨁z01[rc],z01[lc]⨁z11[rc])
z10[u]=max(z10[lc]⨁z00[rc],z11[lc]⨁z10[rc])
z11[u]=max(z10[lc]⨁z01[rc],z11[lc]⨁z11[rc])
fr00[u]=max(fr00[lc],max(z00[lc]⨁fr00[rc],z01[lc]⨁fr01[rc]))
相關推薦
[BZOJ2325][ZJOI2011]道館之戰(樹剖+線段樹)
Address 洛谷P4679 BZOJ2325 Solution 先樹剖,把樹轉成序列。然後線段樹上每個點維護 8 8
[ZJOI2011]道館之戰
Description 口袋妖怪(又名神奇寶貝或寵物小精靈)紅/藍/綠寶石中的水系道館需要經過三個冰地才能到達館主的面前,冰地中的每一個冰塊都只能經過一次。當一個冰地上的所有冰塊都被經過之後,到下一個冰地的樓梯才會被開啟。三個冰地分別如下: 當走出第三個冰地之後,就可以與館主進行道館戰了。館主發現這個難度太
【題解】Luogu P4679 [ZJOI2011]道館之戰
原題傳送門 碼農題樹剖好題 這道題要用樹鏈剖分(好像也有神仙用LCT),我部落格裡有對樹鏈剖分的詳細介紹 考慮在鏈上的情況,在當前考慮的區間中,令dis[0][0]表示從左上走到右上的最長路,dis[0][1]表示從左上到右下,dis[1][0],dis[1][1]以此類推. 令maxx[0][0]表示
POJ3417Network(LCA+樹上查分||樹剖+線段樹)
兩個 += gpo scan channels span work received best Yixght is a manager of the company called SzqNetwork(SN). Now she‘s very worried becaus
bzoj 4034: [HAOI2015]樹上操作 (樹剖+線段樹 子樹操作)
size define next dfs ans n-1 兩個 center mit 4034: [HAOI2015]樹上操作 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 6779 Solved: 2275[Sub
CF487E Tourists + 圓方樹學習筆記(圓方樹+樹剖+線段樹+multiset)
QWQ果然我已經什麼都學不會的人了。 這個題目要求的是圖上所有路徑的點權和!QWQ(我只會樹上啊!) 這個如果是好啊 這時候就需要 圓方樹! 首先在介紹圓方樹之前,我們先來一點簡單的前置知識 首先,我們需要知道什麼是 點雙聯通分量 若一個無向圖中的去掉任意一個節點都不會改變此圖的連通性,即不存
洛谷2543AHOI2005]航線規劃 (樹剖+線段樹+割邊思路)
這個題的思路還是比較巧妙的。 首先,我們發現操作只有刪除和詢問兩種,而刪除並不好維護連通性和割邊之類的資訊。 所以我們不妨像WC2006水管局長那樣,將詢問離線,然後把操作轉化成加邊和詢問。 然後,我們會發現,若存在一條邊
[GX/GZOI2019]舊詞(樹上差分+樹剖+線段樹)
open first http gif 題解 com c++ 賦值 hid 考慮k=1的做法:這是一道原題,我還寫過題解,其實挺水的,但當時我菜還是看題解的:https://www.cnblogs.com/hfctf0210/p/10187947.html。其實就是樹上差分
poj3728The merchant樹剖+線段樹
++ swa names include using wap eve scanf mes 如果直接在一條直線上,那麽就建線段樹 考慮每一個區間維護最小值和最大值和答案,就符合了合並的條件,一個log輕松做 那麽在樹上只要套一個樹剖就搞定了,多一個log也不是問題 註意考慮在
BZOJ_2157_旅遊_樹剖+線段樹
void span 有時 他還 scanf AI 原來 pushd 每一個 BZOJ_2157_旅遊_樹剖+線段樹 Description Ray 樂忠於旅遊,這次他來到了T 城。T 城是一個水上城市,一共有 N 個景點,有些景點之間會用一座橋連接。為了方便遊客到達
LUOGU P1967 貨車運輸(最大生成樹+樹剖+線段樹)
main sed != org names dfs 線段 char ons 傳送門 解題思路 貨車所走的路徑一定是最大生成樹上的路徑,所以先跑一個最大生成樹,之後就是求一條路徑上的最小值,用樹剖+線段樹,註意圖可能不連通。將邊權下放到點權上,但x,y路徑上的lca的答案
旅行[樹剖][線段樹動態開點]
題目描述 S國有N個城市,編號從1到N。城市間用N-1條雙向道路連線,滿足從一個城市出發可以到達其它所有城市。每個城市信仰不同的宗教,如飛天麵條神教、隱形獨角獸教、絕地教都是常見的信仰。 為了方便,我們用不同的正整數代表各種宗教, S國的居民常常旅行。旅行時他們總會走最短路,並且為了避免麻煩
LCT+樹剖+線段樹+dfs序--bzoj3779: 重組病毒
傳送門 一道資料結構綜合神題(敲的我手都要斷了 首先看三個操作,每次一個新病毒會感染一條鏈,而每個點用的時間就是到根的鏈上不同病毒的數量和,查詢的時候相當於查整個子樹的時間和。 很重要的一個思想是,當一個新病毒感染時,就像
樹剖+線段樹+dfs序+LCA--bzoj3083 遙遠的國度
傳送門 一道樹剖線段樹維護 d f s
NOIP2018 Day2 T3 保衛王國 - 動態dp - 樹剖 - 線段樹
直接裸上動態dp即可,因為某些不知道的原因NOIP能過,別的地方不開O2都過不了。 #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) #define lint long long #defi
LCT+樹剖+線段樹--bzoj4817: [Sdoi2017]樹點塗色
傳送門 和bzoj3379有異曲同工之妙 也是用樹剖+線段樹的思想維護 d f s
樹剖+線段樹--bzoj3626
傳送門 也是一道思路很好的題。 對於一個點 z z z,和一個標號區間
bzoj 5210: 最大連通子塊和【動態dp+樹剖+線段樹+堆】
參考:https://www.cnblogs.com/CQzhangyu/p/8632904.html 要開longlong的 首先看dp,設f[u]為必選u點的子樹內最大聯通塊,p[u]為不一定選u的子樹內最大聯通塊,轉移很顯然就是f[u]=max(Σf[v],0),p[u]=max(max(p[v]),f
[BZOJ5279][Usaco2018 Open]Disruption(樹剖+線段樹)
題目傳送門 分析 這題我們仔細分析一下,每次斷掉一條樹邊其實就是將一棵樹分成兩部分,然後走一條邊權最短的,端點分別在兩個區域的就行了。那麼轉化一下題意,其實就是對於每一條樹邊,我們要求的就是覆蓋到這條邊的所有給出的m條邊中邊權最小的是多少。轉化完之後實
BZOJ 2402 陶陶的難題II (樹剖+線段樹+凸包+二分)
題目大意:略 一定範圍內求最大值,考慮二分答案 設現在選擇的答案是$mid$,$max \left \{ \frac{yi+qj}{xi+pj} \right \} \geq mid $ 展開可得,$(yi-mid*xi)+(qj-mid*pj)>=0$,只要存在$i,j$使得這個式子成