08.21總結

圓方樹

引入

我們注意到,樹結構相比普通圖具有諸多優良特性。若能將在無向圖上求解的問題轉化為樹結構問題,往往能大幅簡化求解過程。圓方樹正是實現這一轉化的有效工具。

定義

我們稱原圖中的點為"圓點"。通過引入方點并調整邊的關系,可以構造出一棵樹。通過合理賦權,使這棵樹能夠保持原圖的某些特性,從而將原問題轉化為樹上的問題。具體構建過程如下:對于每個點雙連通分量,首先刪除其中所有圓點之間的直接連接邊。然后為該點雙新增一個方點,并將該點雙內的所有圓點都與這個方點相連。這樣構建出的圖是一個無環的連通圖,即所謂的圓方樹。構建過程本身并不復雜,只要掌握點雙連通分量的求法即可完成。而難點在于:如何恰當設置權值,使得在圓方樹上能夠求解原問題。

代碼

void tarjan(int u, int fa) {low[u] = dfn[u] = ++tot;sta.push(u);for (auto v : ve[u]) {if (v == fa) continue;if (!dfn[v]) {tarjan(v, u);low[u] = min(low[u], low[v]);if (low[v] >= dfn[u]) {      // 發現點雙int now = 0;sid++;    // 方點id,初始值為nvn[u].push_back(sid);    //建雙向邊vn[sid].push_back(u);while (now != v) {now = sta.top();vn[now].push_back(sid);    //建雙向邊vn[sid].push_back(now);sta.pop();}}} else {low[u] = min(low[u], dfn[v]);}}
}

例題

鐵人兩項
給定一張無向圖,問有多少互不相同三元組<aaa, bbb, ccc>
使得存在一條從 aaabbb 經過 ccc 的簡單路徑。

題解

在同一個點雙連通分量中,任意兩點之間的所有簡單路徑的并集恰好構成該點雙。對于任意兩點,其簡單路徑所經過的點集可表示為路徑上各點雙的并集。在圓方樹模型中,該點集對應為: 兩個圓點路徑上的所有圓點和路徑上方點相鄰的所有圓點 。由于限制條件 c≠ac ≠ ac=ac≠bc ≠ bc=b,最終答案為該點集大小減 2。 具體實現時,考慮圓方樹上的權值設計: 將方點權值設為相鄰圓點數量,并將圓點權值設為 -1(避免相鄰方點重復計算),而路徑端點不計入貢獻。這樣,圓方樹上兩圓點間路徑的點權和即為所求答案。問題轉化為統計樹上所有圓點對的路徑權值和,可通過樹形 DP 計算每個點的貢獻(點權 ×\times× 經過該點的路徑數)來高效求解。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96532.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

亞馬遜廣告優化新邏輯:從人工苦力到AI智能的進化之路

"為什么我的廣告花費越來越高&#xff0c;轉化卻越來越差&#xff1f;""如何在海量關鍵詞中找到真正能帶來轉化的黃金詞&#xff1f;""為什么手動調整出價總是跟不上流量變化的速度&#xff1f;""怎樣才能避免因庫存問題導致的廣告權重暴跌…

【51單片機】【protues仿真】基于51單片機水位監測系統

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 一、主要功能 1、數碼管顯示當前水位值 2、按鍵設置水位上下限閾值 3、當水位低于下限&#xff0c;啟動蜂鳴器警報并抽水至水位上限停止抽水 4、電機模擬水泵&#xff0c;蜂鳴器&#xff0c;指示…

白名單過濾的文件上傳如何bypass:boot2root靶機之fristileaks

靶機提示 base64解碼提取圖片 文件上傳之apache多后綴名解析漏洞 linpeas dirtycow提權 靶機下載 通過網盤分享的文件&#xff1a;FristiLeaks_1.3.ova 鏈接: https://pan.baidu.com/s/1ZWznp8egNGwnQqwh1gkSZg?pwdwwvp 提取碼: wwvp --來自百度網盤超級會員v8的分享主…

Centos 8 管理防火墻

firewall-cmd 檢查與安裝 在 CentOS 8 上安裝和啟用 firewalld&#xff08;提供 firewall-cmd 工具&#xff09;的步驟如下&#xff1a;1. 檢查 **firewalld** 是否已安裝 在安裝前&#xff0c;先檢查系統中是否已安裝&#xff1a; sudo firewall-cmd --version如果返回版本號&…

使用PPT進行科研繪圖過程中常用的快捷鍵

PPT科研繪圖常用快捷鍵速查表功能類別快捷鍵功能描述基礎操作與選擇Ctrl A全選幻燈片上的所有對象。Ctrl D快速復制選中的對象&#xff0c;并自動保持等間距排列。Shift Click多選多個對象。Ctrl G將選中的多個對象組合成一個整體。Ctrl Shift G取消組合。Ctrl 拖動復制…

`strchr` 字符串查找函數

1) 函數的概念與用途 strchr 是 C 標準庫中的一個基礎但極其重要的字符串處理函數&#xff0c;它的名字來源于"string chracter"&#xff08;字符串字符&#xff09;。這個函數的功能非常明確&#xff1a;在字符串中查找特定字符的第一次出現位置。 可以將 strchr 想…

Redis 678

Redis 8 是當前的最新穩定版&#xff08;截至 2024 年中&#xff09;&#xff0c;它在 Redis 7 的基礎上帶來了更多重要改進。我們來對這三個主要版本進行一次全面的功能和性能對比。 核心演進脈絡 Redis 6 (2020)&#xff1a;多線程時代的開創者。解決了網絡 I/O 瓶頸&#xf…

【大白話解析】 OpenZeppelin 的 Address 庫:Solidity安全地址交互工具箱?(附源代碼)

?? 一、這個文件是干嘛的?—— Address.sol 是個“工具箱” 你可以把這個 Address.sol文件理解為一個 ??“工具箱”??,里面裝了一堆??專門用來安全地跟別的地址(賬戶或合約)打交道的工具函數??。 在區塊鏈世界里,地址(address)可以是: ??外部賬戶(EOA)…

漫談《數字圖像處理》之測不準原理

在數字圖像處理中&#xff0c;提到的 “測不準原理” &#xff0c;和量子力學里由海森堡提出的 “不確定性原理” &#xff08;Heisenberg uncertainty principle&#xff0c;也叫海森堡測不準原理&#xff09;有一定的類比關系&#xff0c;但本質上并不是同一個概念。以下為詳…

Linux服務測試

一、環境準備確認 確保 4 臺主機&#xff08;APPSRV、STORAGESRV、ROUTERSRV、CLIENT &#xff09;網絡連接正常&#xff0c;虛擬機網卡模式按要求設置&#xff08;APPSRV、STORAGESRV 為 NAT 模式&#xff1b;ROUTERSRV 為雙網卡&#xff0c;NAT 僅主機模式&#xff1b;CLIE…

2.Shell腳本修煉手冊---創建第一個 Shell 腳本

2. 創建第一個 Shell 腳本 文章目錄2. 創建第一個 Shell 腳本2.1 什么是 Shell 腳本&#xff1f;2.1.1 腳本開頭&#xff1a;告訴系統用什么程序執行2.1.2 腳本注釋&#xff1a;給人看的 “說明書”2.1.3 bash 與 sh 的區別2.2 如何執行 Shell 腳本&#xff1f;方法 1&#xff…

Day22 順序表與鏈表的實現及應用(含字典功能與操作對比)

day22 順序表與鏈表的實現及應用&#xff08;含字典功能與操作對比&#xff09; 使用順序表實現查字典功能 支持連續查詢單詞&#xff0c;輸入 #quit 退出程序。數據格式示例如下&#xff1a; a\0 indef art one\r\n word mean [---buf--->] [---i--…

51單片機與stm32單片機,先學習哪一個?

糾結 51 單片機和 STM32 該先學哪個&#xff0c;就像剛學開車的人在自動擋和手動擋之間打轉。有人一上來就愛開自動擋&#xff0c;踩著油門就能跑&#xff0c;不用琢磨換擋踩離合的門道&#xff1b;有人偏要從手動擋練起&#xff0c;哪怕起步時熄十幾次火&#xff0c;也得搞明白…

DS 0 | 數據結構學習:前言

數據結構是CS最基礎、最重要的課程之一在學習數據結構時&#xff0c;通常來講&#xff0c;學生遇到的難點不在于對數據結構的理解&#xff0c;而在于如何寫程序。即編寫特定的程序&#xff0c;來實現這些數據結構&#xff0c;特別是如何按照面向對象思想將一個個數據結構設計成…

JVM-(8)JVM啟動的常用命令以及參數

JVM啟動的常用命令以及參數 在上文 JVM 堆內存邏輯分區 中已經使用過一些 jvm 啟動命令&#xff0c;本文著重講述JVM啟動命令用法以及一些常用的參數 一. 基本命令格式 java [options] classname [args...] java [options] -jar filename.jar [args...]① [options] - 命令行…

GO學習記錄七——上傳/下載文件功能,添加啟動運行工具

本來計劃是學習Docker部署的&#xff0c;研究了一天沒搞出來&#xff0c;得出結論是需要翻墻&#xff0c;懶得弄了&#xff0c;暫時放置。 一、以下是&#xff0c;上傳/下載代碼&#xff0c;和之前是重復的&#xff0c;只多添加了&#xff0c;上傳/下載功能。 測試目錄為工程根…

SQL中對視圖的操作命令匯總

以下是基于搜索結果整理的SQL視圖操作命令匯總&#xff0c;按功能分類說明&#xff1a; 一、創建視圖 使用 CREATE VIEW 語句定義視圖&#xff0c;需指定視圖名稱和基礎查詢表達式&#xff1a; CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHER…

【Spring Cloud 微服務】2.守護神網關Gateway

目錄 1.API網關的作用 2.Spring Cloud Gateway 是什么&#xff1f; 3.核心由來與背景 1. 微服務架構的挑戰&#xff1a; 2. API 網關模式的興起&#xff1a; 3. Zuul 的局限性&#xff1a; 4. Spring Cloud Gateway 的誕生&#xff1a; 4.核心特征&#xff1a; 5.核心概…

解讀商業智能BI,數據倉庫中的元數據

之前的文章討論過數據分析、數據治理、數據倉庫等等&#xff0c;即使是非業內人員從字面意思&#xff0c;也是可以了解一二的&#xff0c;但是&#xff0c;很多人對于元數據可能就比較陌生了。那么&#xff0c;今天我們就來聊一聊元數據管理。數據倉庫要說元數據&#xff0c;那…

3 種無誤的方式刪除 Itel 手機上的短信

如果你希望釋放存儲空間、保護隱私&#xff0c;或者準備出售或轉讓手機&#xff0c;刪除 Itel 手機上的短信是一個實用的步驟。無論是收件箱中充斥著垃圾短信、過時的對話還是敏感內容&#xff0c;刪除不需要的短信可以讓你的消息體驗更加干凈和安全。本文將向你介紹 3 種簡單且…