洛谷 P2607 [ZJOI2008] 騎士-提高+/省選-

題目描述

Z 國的騎士團是一個很有勢力的組織,幫會中匯聚了來自各地的精英。他們劫富濟貧,懲惡揚善,受到社會各界的贊揚。

最近發生了一件可怕的事情,邪惡的 Y 國發動了一場針對 Z 國的侵略戰爭。戰火綿延五百里,在和平環境中安逸了數百年的 Z 國又怎能抵擋的住 Y 國的軍隊。于是人們把所有的希望都寄托在了騎士團的身上,就像期待有一個真龍天子的降生,帶領正義打敗邪惡。

騎士團是肯定具有打敗邪惡勢力的能力的,但是騎士們互相之間往往有一些矛盾。每個騎士都有且僅有一個自己最厭惡的騎士(當然不是他自己),他是絕對不會與自己最厭惡的人一同出征的。

戰火綿延,人民生靈涂炭,組織起一個騎士軍團加入戰斗刻不容緩!國王交給了你一個艱巨的任務,從所有的騎士中選出一個騎士軍團,使得軍團內沒有矛盾的兩人(不存在一個騎士與他最痛恨的人一同被選入騎士軍團的情況),并且,使得這支騎士軍團最具有戰斗力。

為了描述戰斗力,我們將騎士按照 111nnn 編號,給每名騎士一個戰斗力的估計,一個軍團的戰斗力為所有騎士的戰斗力總和。

輸入格式

第一行包含一個整數 nnn,描述騎士團的人數。

接下來 nnn 行,每行兩個整數,按順序描述每一名騎士的戰斗力和他最痛恨的騎士。

輸出格式

應輸出一行,包含一個整數,表示你所選出的騎士軍團的戰斗力。

輸入輸出樣例 #1

輸入 #1

3
10 2
20 3
30 1

輸出 #1

30

說明/提示

數據規模與約定

對于 30%30\%30% 的測試數據,滿足 n≤10n \le 10n10

對于 60%60\%60% 的測試數據,滿足 n≤100n \le 100n100

對于 80%80\%80% 的測試數據,滿足 n≤104n \le 10 ^4n104

對于 100%100\%100% 的測試數據,滿足 1≤n≤1061\le n \le 10^61n106,每名騎士的戰斗力都是不大于 10610^6106 的正整數。

solution

題目大意:基環森林中,不相鄰點的距離和的最大值
思路:

  • 找到環上的某個點 u
  • 以 u 和其父節點 fa[u] 為根節點樹上 dp 計算 f[i], g[i] ,即包含本節點的子樹最大和和不含本節點的子樹最大和
  • 結果為 ∑(max(g[u],g[fa[u]])\sum(max(g[u],g[fa[u]])(max(g[u],g[fa[u]]) 其中 u 為每個基環樹中環上取一個點

代碼


#include<iostream>
#include<vector>
#include "algorithm"
#include "cstring"using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N = 1e6 + 5, M = 1e9 + 7;int n, fa[N], vis[N], a[N];ll f[N], g[N];vector<int> e[N];int find_u(int u) {vis[u] = 1;return vis[fa[u]] ? u : find_u(fa[u]);
}void dp(int u, int p) {vis[u] = 1;for (int v: e[u]) {if (v == p) continue; // p 是起點,相當于斷開了起點和其fa的邊dp(v, p);f[u] += g[v];g[u] += max(f[v], g[v]);}f[u] += a[u];
}/** 1 反向建圖,形成外向基環樹* 2 找到環上一個點 u, 以 u 為根節點進行樹上 dp*      f[u]:包含本節點的最大值*      g[u]:不包含本節點的最大值* 3 以 fa[u] 為根節點進行樹上 dp*      max(g[u], g[fa])*/int main() {cin >> n;for (int i = 1; i <= n; i++) {scanf("%d%d", a + i, fa + i);// cin >> a[i] >> fa[i]; // 反向建圖,形成外向基環樹e[fa[i]].push_back(i);}ll ans = 0; for (int i = 1; i <= n; i++) {if (!vis[i]) {ll Max = 0;int u = find_u(i);dp(u, u);Max = max(Max, g[u]);memset(f, 0, sizeof f);memset(g, 0, sizeof g);dp(fa[u], fa[u]);Max = max(Max, g[fa[u]]);ans += Max;}}cout << ans << endl;return 0;
}

結果

在這里插入圖片描述

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

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

相關文章

不止于GET:掌握POST報錯注入的精髓

文章目錄引言POST請求簡述報錯注入核心思想關鍵前提實戰演練POST報錯注入與GET報錯注入的區別防御之道&#xff1a;如何避免POST報錯注入&#xff1f;引言 SQL注入是Web安全領域危害性最大、最常見、最持久的高危漏洞之一。它直接威脅到應用程序核心數據庫的安全&#xff0c;可…

01數據結構-Prim算法

01數據結構-Prim算法1.普利姆(Prim)算法1.1Prim算法定義1.2Prim算法邏輯1.3Prim代碼分析2.Prim算法代碼實現1.普利姆(Prim)算法 1.1Prim算法定義 Prim算法在找最小生成樹的時候&#xff0c;將頂點分為兩類&#xff0c;一類是在查找的過程中已經包含在生成樹中的頂點(假設為A類…

CacheBlend:結合緩存知識融合的快速RAG大語言模型推理服務

溫馨提示&#xff1a; 本篇文章已同步至"AI專題精講" CacheBlend&#xff1a;結合緩存知識融合的快速RAG大語言模型推理服務 摘要 大語言模型&#xff08;LLMs&#xff09;通常在輸入中包含多個文本片段&#xff0c;以提供必要的上下文。為了加速對較長LLM輸入的預…

Docker 在 Linux 中的額外資源占用分析

Docker 本身作為一個運行時環境&#xff0c;除了容器應用本身消耗的資源外&#xff0c;還會引入一些額外的開銷。主要體現在以下幾個方面&#xff1a; 1. 存儲空間占用 (Disk Space) 這是最顯著的額外開銷&#xff0c;主要來源于 Docker 的存儲驅動&#xff08;如 overlay2&…

[激光原理與應用-264]:理論 - 幾何光學 - 什么是焦距,長焦與短焦的比較

長焦與短焦透鏡是光學系統中兩類核心組件&#xff0c;其成像特性在焦距、視角、景深、像場特性及典型應用中存在顯著差異。以下從多個維度進行詳細對比&#xff1a;一、核心參數對比參數長焦透鏡短焦透鏡焦距范圍通常 >50mm&#xff08;全畫幅相機標準&#xff09;通常 <…

el-input 復制大量數據導致頁面卡頓問題解決

問題根源 復制粘貼操作會瞬間觸發大量 input 事件&#xff0c;導致 Vue 頻繁更新響應式數據&#xff0c;引發性能瓶頸。 解決方案&#xff1a;使用 .lazy 修飾符 <el-input v-model.lazy"inputValue" />

PCIe Electrical Idle Sequences ( EIOS and EIEOS )

前言 PCI Express (PCIe)協議中&#xff0c;EIOS (Electrical Idle Ordered Set) 和 EIEOS (Electrical Idle Exit Ordered Set) 是在高速鏈路管理和狀態切換過程中極為重要的特殊序列。下面做詳細解釋&#xff1a; 一、EIOS&#xff08;Electrical Idle Ordered Set&#xff0…

【GPT入門】第45課 無梯子,linux/win下載huggingface模型方法

【GPT入門】第45課 無梯子&#xff0c;下載huggingface模型方法1.下載模型代碼2. linux 設置鏡像與加速3.windows1.下載模型代碼 from transformers import AutoModelForCausalLM, BertTokenizer, BertForSequenceClassificationmodel_dir /root/autodl-tmp/model_hf# 加載模…

計算機網絡摘星題庫800題筆記 第5章 傳輸層

第5章 傳輸層5.1 傳輸層概述題組闖關1.Internet 傳輸層滑動窗口協議規定 ( )。 A. 網絡接收分組的最低效率&#xff0c;只需要重傳未被確認的分組 B. 固定的窗口大小&#xff0c;只需要重傳未被確認的分組 C. 網絡接收分組的最低效率&#xff0c;固定的窗口大小 D. 未被確認的分…

Apache虛擬主機三種配置實戰

一、虛擬主機概述 目的&#xff1a;實現單臺服務器部署多個獨立站點 三種部署方式&#xff1a; 相同IP 不同端口不同IP 相同端口相同IP和端口 不同域名&#xff08;FQDN&#xff09; 示例目標&#xff1a;在服務器上部署 baidu 和 taobao 兩個站點方式1&#xff1a;相同IP …

【SpringBoot】04 基礎入門 - 自動配置原理入門:依賴管理 + 自動配置

文章目錄前言一、Spring Boot Maven項目POM文件解析1. 基礎項目信息2. 父項目繼承3. 依賴管理4. 構建配置5. 屬性配置Spring Boot特性體現典型Spring Boot項目特點二、依賴管理1、父項目做依賴管理無需關注版本號&#xff0c;自動版本仲裁修改自動仲裁的版本官網文檔2、依賴項引…

機器學習—— TF-IDF文本特征提取評估權重 + Jieba 庫進行分詞(以《紅樓夢》為例)

使用 Jieba 庫進行 TF-IDF 關鍵詞提取&#xff08;以《紅樓夢》為例&#xff09;在中文文本分析中&#xff0c;TF-IDF&#xff08;Term Frequency - Inverse Document Frequency&#xff09; 是最常用的關鍵詞提取方法之一。它通過評估詞在單個文檔中的出現頻率和在所有文檔中的…

Kotlin語法整理

Kotlin語法整理 Kotlin語法整理 一、基本數據類型 共8種 二、變量的聲明三、條件 1. if…else if…else語句2. when 語句 四、循環 1. while 語句2. do…while 語句3. for 語句4. repeat 語句5. break 語句6. continue 語句 五、數組 1. 創建元素未初始化的數組2. 創建元素初始…

跨平臺低延遲的RTMP推流播放在無紙化會議與智慧教室的技術設計和架構實踐

?? 引言&#xff1a;讓每一塊屏幕“同頻”的核心技術 無紙化會議與智慧教室&#xff0c;正在從“輔助工具”走向“核心基礎設施”&#xff0c;成為政企數字化與教育信息化建設的標配。它們的核心訴求并不只是替代紙質文檔或黑板&#xff0c;而是要在多終端、多地點、多網絡環…

最優擴展大型語言模型測試時計算量可能比擴展模型參數更有效

摘要 通過增加測試時計算量使大型語言模型&#xff08;LLMs&#xff09;提升輸出效果&#xff0c;是構建能基于開放自然語言自主改進的通用智能體的重要步驟。本文研究LLMs推理階段計算量的擴展規律&#xff0c;重點回答以下問題&#xff1a;若允許LLM使用固定但可觀的推理階段…

GPT5評測對比與使用

經過長達一年的技術迭代&#xff0c;OpenAI正式推出GPT-5系列模型&#xff0c;包含GPT-5&#xff08;標準版&#xff09;、GPT-5-mini&#xff08;輕量版&#xff09;和GPT-5-nano&#xff08;極簡版&#xff09;三個版本&#xff0c;定價策略保持統一。本次升級在性能、效率與…

Git與CI/CD相關知識點總結

Git與CI/CD相關知識點總結 1. Git對象模型與存儲機制 1.1 Git對象類型 Commit對象&#xff1a;包含提交信息、作者、時間、父commit引用、樹對象引用Tree對象&#xff1a;描述目錄結構和文件引用Blob對象&#xff1a;實際的文件內容 1.2 存儲機制特點 增量存儲&#xff1a;每次…

CS2服務器是何方神圣

CS2服務器是何方神圣CS2「子刷新頻率」深度拆解&#xff1a;從官方宣言到“吞子彈”真相00 先給結論01 官方原話到底說了什么02 一條時間線看懂「Sub-tick」03 技術解剖&#xff1a;Sub-tick 的實現細節3.1 輸入包結構&#xff08;Valve 公開源碼節選&#xff09;3.2 連續積分&…

Docker守護進程安全加固在香港VPS環境的操作標準

Docker守護進程安全加固在香港vps環境的操作標準隨著云計算技術的普及&#xff0c;Docker守護進程安全加固已成為香港VPS環境中不可忽視的重要環節。本文將系統性地介紹如何通過配置優化、訪問控制、網絡隔離等維度&#xff0c;在香港虛擬私有服務器上建立符合企業級安全標準的…

Rust 項目編譯故障排查:從 ‘onnxruntime‘ 鏈接失敗到 ‘#![feature]‘ 工具鏈不兼容錯誤

Rust 項目編譯故障排查報告&#xff1a;從原生庫鏈接失敗到工具鏈不兼容 場景: 編譯一個本地 Rust 項目時遇到連續的編譯錯誤。一、 故障現象概述 在對一個 Rust 項目執行 cargo build 命令時&#xff0c;先后遇到了兩個不同性質的編譯錯誤&#xff0c;導致編譯流程中斷。初始錯…