最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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 部落沖突 題解的評論 (共 條)

分享到微博請遵守國家法律
武宁县| 乌兰浩特市| 壤塘县| 铜梁县| 通州市| 丹凤县| 广昌县| 托克逊县| 同江市| 锦屏县| 恩平市| 湘乡市| 滨海县| 偃师市| 晋州市| 章丘市| 平顶山市| 南皮县| 青河县| 京山县| 广西| 盖州市| 鞍山市| 通化县| 栾城县| 兴义市| 临邑县| 达州市| 陆川县| 南充市| 全椒县| 江达县| 远安县| 竹溪县| 咸丰县| 绥德县| 霍山县| 定日县| 南通市| 酒泉市| 会昌县|