洛谷P1351 [NOIP 2014 提高組] 聯合權值

洛谷P1351 [NOIP 2014 提高組] 聯合權值

洛谷題目傳送門

題目背景

NOIP2014 提高組 D1T2

題目描述

無向連通圖 G G G n n n 個點, n ? 1 n-1 n?1 條邊。點從 1 1 1 n n n 依次編號,編號為 i i i 的點的權值為 W i W_i Wi?,每條邊的長度均為 1 1 1。圖上兩點 ( u , v ) (u, v) (u,v) 的距離定義為 u u u 點到 v v v 點的最短距離。對于圖 G G G 上的點對 ( u , v ) (u, v) (u,v),若它們的距離為 2 2 2,則它們之間會產生 W v × W u W_v \times W_u Wv?×Wu? 的聯合權值。

請問圖 G G G 上所有可產生聯合權值的有序點對中,聯合權值最大的是多少?所有聯合權值之和是多少?

輸入格式

第一行包含 1 1 1 個整數 n n n

接下來 n ? 1 n-1 n?1 行,每行包含 2 2 2 個用空格隔開的正整數 u , v u,v u,v,表示編號為 u u u 和編號為 v v v 的點之間有邊相連。

最后 1 1 1 行,包含 n n n 個正整數,每兩個正整數之間用一個空格隔開,其中第 i i i 個整數表示圖 G G G 上編號為 i i i 的點的權值為 W i W_i Wi?

輸出格式

輸出共 1 1 1 行,包含 2 2 2 個整數,之間用一個空格隔開,依次為圖 G G G 上聯合權值的最大值和所有聯合權值之和。由于所有聯合權值之和可能很大,輸出它時要對 10007 10007 10007 取余。

輸入輸出樣例 #1

輸入 #1

5  
1 2  
2 3
3 4  
4 5  
1 5 2 3 10

輸出 #1

20 74

說明/提示

樣例解釋

本例輸入的圖如上所示,距離為 2 2 2 的有序點對有 ( 1 , 3 ) (1,3) (1,3) ( 2 , 4 ) (2,4) (2,4) ( 3 , 1 ) (3,1) (3,1) 、$(3,5) 、 、 (4,2)$ 、$(5,3) $。

其聯合權值分別為 2 , 15 , 2 , 20 , 15 , 20 2,15,2,20,15,20 2,15,2,20,15,20。其中最大的是 20 20 20,總和為 74 74 74

數據說明

  • 對于 30 % 30\% 30% 的數據, 1 < n ≤ 100 1 < n \leq 100 1<n100
  • 對于 60 % 60\% 60% 的數據, 1 < n ≤ 2000 1 < n \leq 2000 1<n2000
  • 對于 100 % 100\% 100% 的數據, 1 < n ≤ 2 × 1 0 5 1 < n \leq 2\times 10^5 1<n2×105 0 < W i ≤ 10000 0 < W_i \leq 10000 0<Wi?10000

保證一定存在可產生聯合權值的有序點對。

思路詳解

雖然這個題目說他是一個圖,但由n-1條邊的連通圖可得他是一棵樹,思考如何求解出最大值與和。

最大值

首先考慮哪些點可以湊成一個聯合點對???由于只要距離為2,那顯然對于一個節點 u u u u u u的任意子節點 v v v,都可以和 u u u的其余所有子節點組成聯合點對,也可以和 u u u的父親節點組成點對。那最大值就很顯然了:

  1. v v v與其他子節點組合:顯然我們只需要找出最大值 d 1 d_{1} d1?與次大值 d 2 d_{2} d2?組合即可。
  2. v v v u u u的父親組合:直接找到最大值 d 1 d1 d1 a f a u a_{fa_{u}} afau??組合即可。

與上面相同,我們只需要分為兩部分求解即可。具體如下:

  1. v v v u u u的父親組合:令 u u u的所有子節點權值和為 s u m u sum_{u} sumu?,則這一部分答案 a n s 2 = s u m u ? a f a u ans_{2}=sum_{u}*a_{fa_{u}} ans2?=sumu??afau??
  2. v v v與其他子節點組合:則這一部分的答案為 a n s 3 = ∑ v a v ? ( s u m u ? a v ) ans_{3}=\sum _{v} a_{v}*(sum_{u}-a_{v}) ans3?=v?av??(sumu??av?)因為他不能與他自己組合。

但我們發現聯合點對是有序的,那我們是否輸出 2 ( a n s 2 + a n s 3 ) 2(ans_{2}+ans_{3}) 2(ans2?+ans3?)呢???雖然這樣樣例可以過,但我們只能得到0分的好成績,這是為何?我們發現 a n s 3 ans_{3} ans3?其實已經相當于乘過2了,只有 a n s 2 ans_{2} ans2?需要乘2。這就是水樣例的惡劣影響。

code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=5e5+5,mod=10007;
ll n,a[N];
ll h[N],to[N],ne[N],tot=0;
void add(ll u,ll v){//建邊tot++;to[tot]=v;ne[tot]=h[u];h[u]=tot;
}
ll d1[N],d2[N],ans1=0,sum[N],ans2=0,ans3=0;
//d1[u]為u的子節點的最大值,d2[u]為次大值,sum[u]為u的子節點的和。
void dfs(ll u,ll fa){d1[u]=-0x3f3f3f3f;d2[u]=-0x3f3f3f3f;//賦初值sum[u]=0;for(ll i=h[u];i;i=ne[i]){ll v=to[i];if(v==fa)continue;sum[u]=(sum[u]+a[v])%mod;if(a[v]>d1[u]){d2[u]=d1[u];d1[u]=a[v];}//更新最大值else if(a[v]>d2[u]){d2[u]=a[v];}//更新次大值dfs(v,u);}for(ll i=h[u];i;i=ne[i]){//求解ans3ll v=to[i];if(v==fa)continue;ans3=(ans3+a[v]*((sum[u]-a[v]+mod)%mod)%mod)%mod;}ans2=(ans2+sum[u]*a[fa]%mod)%mod;//求解ans2if(d1[u]==-0x3f3f3f3f&&d2[u]==-0x3f3f3f3f)return;//沒有子節點,不更新ans1ans1=max(ans1,max(d1[u]*d2[u],d1[u]*a[fa]));
}
int main(){cin>>n;for(ll i=1;i<=n-1;i++){ll x,y;cin>>x>>y;add(x,y);add(y,x);}for(ll i=1;i<=n;i++)cin>>a[i];sum[0]+=a[1];dfs(1,0);cout<<ans1<<' '<<(ans2*2+ans3)%mod;return 0;
}
/*高級樣例
5
1 2
1 3
2 4
2 5
1 2 4 6 5
*/

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

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

相關文章

Apache Doris Profile 深度解析:從獲取到分析,解鎖查詢性能優化密碼

在 Doris 數據庫中&#xff0c;高效的查詢性能是數據處理的關鍵。當我們遇到查詢緩慢、資源消耗異常等問題時&#xff0c;Doris 提供的 Profile 工具就如同一位 “性能偵探”&#xff0c;能幫我們抽絲剝繭&#xff0c;找到問題根源。今天&#xff0c;我們就來深入聊聊如何分析 …

系統架構師

硬件&#xff1a; 運算器&#xff1a;1&#xff09;算術運算 加減乘除 2&#xff09;邏輯運算并進行邏輯測試&#xff1a;與或非 組件功能&#xff1a;算術邏輯單元ALU :處理數據 實現對數據的算術運算和邏輯運算 累加寄存器AC 通用寄存器&#xff0c;alu提供工作區 暫存運算結…

Unity HDRP + Azure IoT 工業設備監控系統實例

Unity HDRP Azure IoT 工業設備監控系統實例 下面是一個完整的工業設備監控解決方案&#xff0c;結合Unity HDRP&#xff08;高清渲染管線&#xff09;的高質量可視化與Azure IoT的實時數據處理能力。 系統架構 #mermaid-svg-XJnD6acrBbtbqYHW {font-family:"trebuchet…

(超詳細)數據庫項目初體驗:使用C語言連接數據庫完成短地址服務(本地運行版)

數據庫項目初體驗&#xff1a;使用C語言連接數據庫完成短地址服務&#xff08;本地運行版&#xff09; 前言&#xff1a;初學者的思考 作為一個剛初學數據庫的小白并且在之前我的博客中我有嘗試使用C語言寫過一個短地址服務&#xff0c;但是使用C語言編寫的短地址服務只有短記…

mysql基礎(一)快速上手篇

連接mysql 使用命令行窗口連接mysql數據庫 語法&#xff1a;mysql –h主機名 –u用戶名 –p密碼 說明&#xff1a;-h參數指定數據庫ip&#xff0c;本地服務器可以用localhost&#xff0c;-u參數指定用戶名&#xff0c;-p參數指定用戶密碼。 注意&#xff1a;-p和密碼值之間…

IntelliJ IDEA 2025- 下載安裝教程圖文版詳細教程(附激活碼)

目錄 寫在前面 一、介紹 二、下載 三、安裝 &#x1f3c1; 寫在最后 寫在前面 > &#x1f680; 初學 Java&#xff1f;或者剛開始寫項目&#xff0c;不知道該選哪個 IDE&#xff1f; 本篇教程手把手教你安裝 IntelliJ IDEA —— JetBrains 出品的頂級 Java 開發環境&a…

數學經濟專業大學四年規劃

數學經濟專業結合了數學的邏輯嚴謹性和經濟學的現實應用性&#xff0c;為學生提供了強大的數理分析能力和經濟洞察力。該專業畢業生在金融科技、量化投資、商業分析等領域具有顯著優勢&#xff0c;尤其在數字經濟時代&#xff0c;這類復合型人才的需求量持續增長。一、數學經濟…

局域網打印機共享怎么設置?如何配置內網本地網絡打印機給異地電腦遠程連接使用打印?

打印機共享怎么設置&#xff1f;如何設置本地內網的網絡打印機共享給其他網絡下電腦連接打印&#xff1f;打印機設置使用以及異地使用打印都是大家比較關注的問題&#xff0c;下面詳細教程中分二步&#xff0c;先講局域網內的打印機共享&#xff0c;再進一步介紹內網打印機地址…

Rust異步爬蟲實現與優化

Rust 語言在爬蟲領域的應用相對較少&#xff0c;盡管 Rust 的 async/await 已穩定&#xff0c;但其與線程安全、Pin 等概念的結合仍較復雜&#xff0c;而爬蟲高度依賴并發處理&#xff0c;進一步提高了開發成本。這就導致了使用Rust語言爬蟲用的人很少。 下面是一個使用 Rust 編…

Electron 安全最佳實踐:構建安全的桌面應用

Electron 是一個流行的框架&#xff0c;允許開發者使用 Web 技術&#xff08;HTML、CSS、JavaScript&#xff09;構建跨平臺桌面應用。許多知名應用&#xff0c;如 VS Code、Slack 和 Discord&#xff0c;都基于 Electron 開發。然而&#xff0c;由于其結合了 Node.js&#xff…

MySQL 事務詳解:從基礎操作到隔離級別與 MVCC 原理

前言 首先從概念上進行理解什么是事務&#xff0c;以及事務的4大屬性&#xff0c;知道是什么還要知道為什么&#xff1f; 事務是如何進行操作的&#xff0c;最后在談事務的隔離性、隔離級別&#xff08;最重要但是也很難理解&#xff09;&#xff0c;理解隔離級別體現在哪里 …

【Unity 編輯器工具開發:GUILayout 與 EditorGUILayout 對比分析】

Unity 編輯器工具開發&#xff1a;GUILayout 與 EditorGUILayout 對比分析 一、核心區別對比 方面GUILayoutEditorGUILayout區別命名空間UnityEngineUnityEditorEditorGUILayout 僅限編輯器環境適用范圍游戲運行時 編輯器工具僅限編輯器工具運行時禁用 EditorGUILayout渲染管…

[附源碼+數據庫+畢業論文]基于Spring+MyBatis+MySQL+Maven+jsp實現的個人財務管理系統,推薦!

摘 要 隨著軟件信息技術的興起&#xff0c;許多手工作業也升級為軟件管理數據&#xff0c;本次針對個人財務數據的管理&#xff0c;開發一款個人財務管理系統&#xff0c;該系統可以解決許多信息管理上面的難題&#xff0c;比如處理數據時間很長&#xff0c;數據存在錯誤不能及…

Compose入門3 - 高仿小紅書 界面

使用compose 實現一個小紅書UI 界面&#xff0c;主要是為了鍛煉 使用compose布局的能力 demo地址&#xff1a;https://github.com/PangHaHa12138/ComposeDemo 先上demo 截圖 下面是完整的compose代碼 package com.example.test001import android.annotation.SuppressLint imp…

mybatis-plus json字段使用typeHandler自動轉換為List

mybatis-plus json字段使用typeHandler自動轉換為List mybatis-plus json字段使用typeHandler自動轉換為List 一、實現思路 1.配置mybatis配置&#xff0c;注入handlermybatis-plus:typeHandlersPackage: com.power.common.core.handler 2.字段頂部增加注解TableField(typeHand…

(C++)學生管理系統(測試2版)(map數組的應用)(string應用)(引用)(C++教學)(C++項目)

1. 頭文件與命名空間 #include <iostream> // 輸入輸出流庫&#xff0c;提供cin/cout等基本I/O功能 #include <map> // 映射容器庫&#xff0c;提供map數據結構&#xff08;鍵值對集合&#xff09; #include <string> // 字符串庫&#xff0c;…

使用assembly解決jar包超大,實現依賴包、前端資源外置部署

成果物需要部署到用戶內網的童鞋應該都遇到過該問題&#xff1a;引入的maven依賴越來越多&#xff0c;jar包越來越大&#xff0c;我之間甚至見過一兩個G的依賴&#xff0c;想改個代碼換到現場測試&#xff0c;包傳到現場要一二十分鐘&#xff0c;真正實現了改代碼兩分鐘分鐘&am…

基于PHP+MySQL實現(Web)英語學習與測試平臺

數據庫課設&#xff1a;英語學習與測試平臺 運行環境要求 PHP7.1 基于 thinkPHP6.0、Layui、Xadmin 開發 主要功能 公共模塊 登錄注冊個人信息修改密碼修改 教師模塊 文章查看發布班級管理測試查看發布批改歷史成績查看 學生模塊 文章查看參與測試查看成績 管理員模塊…

WinForm中Settings.settings和app.config修改后信息不同步到exe.config問題

在 WinForms 項目中&#xff0c;Settings.settings 和 app.config/exe.config 的關系確實容易讓人困惑。以下是問題的根本原因和解決方案&#xff1a; 問題本質 設計時文件&#xff1a;app.config&#xff08;源碼中的配置文件&#xff09;運行時文件&#xff1a;bin/Debug/Yo…

【公司環境下發布個人NPM包完整教程】

&#x1f3e2; 公司環境下發布個人NPM包完整教程 創建時間: 2025年7月2日 適用場景: 公司電腦&#xff0c;需要臨時切換個人賬戶發布npm包 &#x1f3af; 教程概述 場景說明 環境: 公司電腦&#xff0c;已配置公司npm賬戶目標: 臨時使用個人賬戶發布npm包&#xff0c;發布后恢復…