国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

P3950 部落沖突 題解

2023-03-23 20:34 作者:fdsji  | 我要投稿

想練練樹剖,找到了一個不像板子的板子。(題目故事情節(jié)引人入勝)

這里來記錄一下樹剖的一些原理。

樹剖的基本原理就是把一棵很高大的樹分成很多塊,然后使用數(shù)據(jù)結(jié)構(gòu)來維護這么多塊。那么怎么分呢?我們定義對于一個節(jié)點,其兒子中的子樹大小最大的那個兒子被稱為這個節(jié)點的重兒子,其他兒子被稱為輕兒子。那么在一棵樹上,一定有很多的重兒子,我們把全部都由重兒子組成的鏈稱為重鏈,都由輕兒子組成的鏈被稱為輕鏈。由此一棵樹被我們分成了很多條重鏈和很多條輕鏈。接著我們考慮如何維護這堆重鏈和輕鏈。

對于某個節(jié)點?u,我們定義:

  • sz_u?以?u?為根的子樹節(jié)點個數(shù)。

  • son_u?u?的重兒子編號

  • fa_u?u?的父親編號

  • dep_u?u?的深度

  • dfn_u?u?的 dfs 序

  • top_u?u?所在鏈的最小的節(jié)點編號(若一個節(jié)點是輕兒子,則 top_u%20%3D%20u

然后接下來的很多東西很多算法書上都有了,省掉好多字。

正式進(jìn)入題解部分:

我們考慮每個操作的實質(zhì)是什么:

操作 1,也就是詢問,也就是詢問邊權(quán)和是否為?0。

操作 2,3 就是修改單條邊。

我們只需要維護每個節(jié)點與其父親的連邊即可。(這種點權(quán)表邊權(quán)的小 trick 應(yīng)該來看這篇文章的人都是會的叭)

Code:


P3950 部落沖突 題解的評論 (共 條)

分享到微博請遵守國家法律
寿宁县| 临潭县| 万年县| 日土县| 新营市| 澄城县| 金阳县| 花莲县| 云龙县| 宁乡县| 和平区| 安图县| 丰顺县| 沂水县| 神农架林区| 盐津县| 旺苍县| 海安县| 肇东市| 临海市| 曲靖市| 莆田市| 安岳县| 上犹县| 县级市| 南充市| 江津市| 柯坪县| 分宜县| 江油市| 新巴尔虎左旗| 石狮市| 北碚区| 玛纳斯县| 四川省| 皋兰县| 屯昌县| 蛟河市| 三都| 化德县| 阿拉尔市|