GDOI2016 瘋狂動物城

2022-06-27 22:09:12 字數 2820 閱讀 6287

題目大意

description

nick 是只在動物城以坑蒙拐騙為生的狐狸,兒時受到偏見的傷害,放棄了自己的理想。他被兔子 judy 設下圈套,被迫與她合作查案,而捲入意想不到的陰謀,歷盡艱險後成為搭檔。他們識破了綿羊副市長 bellwether 的計畫,發現是 bellwether 陷害食肉動物,用毒藥讓食肉動物發狂。bellwether 被抓到了監獄裡面, nick 和 judy 過上了一段平靜的日子。

然而,故事並沒有這樣結束,之前在車管所幫他們查車牌號的憨厚的樹懶 flash,才是陷害食肉動物事件的幕後主使。flash 批量製作了大量讓食肉動物發狂的藥劑,投放到了食肉動物群中。現在,大量的食肉動物被感染,動物城陷入了一片混亂。警察局的牛局長 bogo 找到了 nick,希望他能幫忙。幸運的是,動物城聯邦安全域性非常有先見之明,他們在每個州都秘密放置了一台機器,機器能生產能量石,這些能量石能讓食肉動物恢復正常。現在 nick 和 judy 需要去啟動這些機器。

動物城是乙個有 n 個州的聯邦,該聯邦是乙個樹的形狀,即 n 個州共有 n−1 條雙向道路連線它們,且 n 個州是相互連通的。 n 個州的編號依次為 1,2,3...n 。每個州都有且僅有一台機器。一台機器啟動後的下乙個時刻,就會開始生產能量石, 每個單位時間生產乙個。能量石從被生產的時刻開始即生效,每乙個單位時間能救一定數量的食肉動物。每個州的解毒機器製造出的能量石的品種可能是不同,第 i 個州的機器生產的能量石每個單位時間能救 ai 只食肉動物。

nick 和 judy 剩下的時間不多了,他們決定分工合作。 nick 從 x 州出發,目的地為 y 州,路徑為 x 到 y 的最短路徑。 nick 從 x 州出發的時刻為 0,每隔乙個單位時間移動乙個州。每到乙個州, nick 就會啟動這個州的機器。 nick 想知道他從 x 州出發到達 y 州的這段時間裡,一共有多少食肉動物被拯救。 nick 在糾結他的路線選擇,因此,他會給你若干的詢問,希望比他更聰明的你能幫助他。

在他給你詢問的過程中,動物城的局勢也在發生著一些變化。動物城聯邦安全域性可以執行乙個修改操作 "x,y,delta" ,會對 x 州到 y 州的最短路徑上的州(包括 x,y 州)的機器進行公升級,這樣,這些機器生產出來的能量石,每個單位時間能救的食肉動物的數量會增加 delta 。樹懶 flash 當然也不會坐以待斃,他有一台監控儀,會監控每個州的機器的情況,每當有機器被公升級,監控儀就會儲存下當前所有州的機器的屬性 ai。 flash可以用一種神秘的**執行乙個讀取操作 "x" ,把當前各個州的機器恢復到第 x 次儲存的狀態( x=0 表示未進行過公升級時的初始狀態)。注意, 只有修改操作執行的時後會進行儲存。

現在,依次給出 m 個操作,若該操作為乙個詢問,請你輸出 nick 在當前局面下,他從 x 州出發到達 y 州的這段時間裡,一共有多少食肉動物被拯救,由於這個答案可能很大,你只需要輸出答案模 20160501 後的值。請注意, m 個操作都是被加密過的。

input

第一行 2 個整數 n,m 表示節點個數和操作次數。

接下來 n−1 每行 2 個整數 ui,vi 表示了這棵樹中 ui 和 vi 這 2 個州間有邊相連。

接下來一行 n 個整數, 表示這 n 個州的機器製造的能量?的初始值。

接下來 m 行每行先有乙個數字表示了操作的型別:

型別 1,代表乙個修改操作,接下來有 3 個整數 x1,y1,delta , x1,y1 是加密後的數字。正確的 x=x1 xor lastans,y=y1 xor lastans。 lastans 為上次輸出的的答案,如果之前沒有輸出過那麼當成 0。

型別 2,代表乙個詢問操作,接下來有 2 個整數 x1,y1 , 和修改操作?樣,正確的 x=x1 xor lastans,y=y1 xor lastans。 lastans 為上次輸出的的答案,如果之前沒有輸出過那麼當成 0。

型別 3,代表一次讀取操作,接下來 1 個整數 x1,正確的 x=x1 xor lastans 。 lastans 為上次輸出的的答案,如果之前沒有輸出過那麼當成 0。

output

對於每個操作 2,輸出一行,每行乙個數,為所詢問的答案模 20160501 後的值。
5 6

1 22 3

3 44 5

1 2 3 4 5

1 1 5 2

3 01 1 3 2

1 3 4 2

3 22 1 5

5 41 2

1 32 4

3 51 1 1 2 2

1 1 4 2

2 1 4

3 12

2 13 8

hint

所有的資料 1≤ai,delta≤100000 。保證資料是合法的,不會讀取沒儲存的局面,即 x≤ 已經給出的修改操作次數。

n≤100000,m≤100000 ;

solution

公式:\(u \in [x,lca] : val[u] \cdot (dep[u]+dep[y]-2dep[lca])(dep[u]+dep[y]-2dep[lca]+1) \div 2\)

\(=val[u]\cdot[[dep[y](dep[y]+1)-2dep[lca](2dep[y] -2dep[lca]+1)]+dep[i](1+2dep[y]-4dep[lca])+dep^2[i]]\div 2\)

\(u \in [lca,y] : val[u] \cdot (dep[y]-dep[i])(dep[y]-dep[i]+1) \div 2\)

\(= val[u] \cdot [dep[y](dep[y]+1)-dep[i](1+2dep[y]) + dep^2[i]] \div 2\)

求出來公式以後就可以樹剖維護了

要用可持久化線段樹,然後標記永久化

**:因為我自己調不出來,所以我不放了qaq

GDOI2016 機密網路

乙個 n 個點的環套樹,每個點有點權 e。詢問所有距離不大於 k 的且滿足 a 的點對 a,b 的個數,以及點對點權乘積和。1 n 105 k n ei 104 我比賽時想到的就是這種方法。我們刪除環上一條邊,將其變成一棵樹,做點分治。如果不考慮刪除的邊的影響,這就是一道點剖經典題 樓天城 樹中點對...

GDOI2016模擬8 8旋轉

alice和bob發明了乙個新的旋轉遊戲。首先,bob給定n個數組成的序列,並把該序列平均分配成若干個塊,每塊正好包含k個數 k能整除n 第一塊由第1到第k個數構成,第二塊由第k 1個數到第2k個數構成,以此類推。接著,bob要求alice對這個序列進行一系列操作,操作有以下兩種 1.把每塊裡面的數...

GDOI2016模擬8 13總結

這次考差了。但事後想了一下,感覺收穫好大。匯報做題情況 當然,裡面不包含收穫 第一題 我的暴力爆零了,原因又是爆int 做題過程中我想到了與眾不同的演算法,一般人會化簡不等式變成斜率優化做,但由於我對斜率優化不大敏感,而且一般斜率優化的題目都是用凸包 叉積來做,這題我也同樣想著用凸包做,但打完發現有...