洛谷題目 P5994 [PA 2014] Kuglarz 題解 (本題較難)

題目傳送門:

P5994 [PA 2014] Kuglarz - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

前言:

? ? ? ? 本題涉及到最小生成樹中的 kruskal? 算法和并查集算法,圖論基礎概念兩大知識點,瞎按對萊索沒有學過圖論的或最小生成樹的可能會對這道題無從下手,學過最小生成樹和圖論的初學者對這道題可以說是非常好的歷練。難度可以給到中等偏上(很簡單的呀)。

#題目核心目標:

? ? ? ? 這道題的很新目標是確定最少花費,從而保證能猜出哪些被子底下藏著球,而解題的關鍵在于將問題轉化成最小生成樹問題。本題將詳細境界。

##問題分析轉化:

? ? ? ? 1、信息關聯與節點表示:

? ? ? ? ? ? ? ? 把每個被子看做圖中的一個節點。對于一個被子序列,我們要確定每個被子是否藏球,而通過魔術師提供的關于區間?[i,j]?內藏球總數奇偶性的信息,就可以逐步推斷出每個被子的情況。

? ? ? ? ? ? ? ? 例如,知道區間?[l,r]?的詢問都對應途中的一條邊,變得兩個端點分別是i-1j?,變得權值就是這次詢問的花費?c_{i_{j}}?。因為我們可以利用這個區間的奇偶性信息來連接這兩個端點所代表的節點狀態。

3、問題等價性:

? ? ? ? ? ? ? ? 我們的目標使用最少的花費來獲取足夠的信息來確定所有杯子里是否藏球,這就相當于在圖中找到一個變得集合,使得這些邊能夠連接所有節點,并且這些邊的權值總和最小,恰好就是我們經典的最小生成樹問題。

###最小生成樹選擇-Kruskal 算法:

? ? ? ? 1、具體步驟:

? ? ? ? ? ? ? ? 1.1、邊的排序:將所有表示詢問的邊按照花費從小到大進行排序。這里做的目的是優先選擇花費曉得詢問,以滿足最小花費的要求。

? ? ? ? ? ? ? ? 1.2、并查集的使用:

  • 并查集是一種用于處理不相交集合合并與查詢問題的數據結構。在本題中,我們使用并查集來判斷加入一條邊后是否會形成環。
  • 初始時,每個節點的父節點就是它自身,表示每個節點都屬于一個獨立的集合。
  • 對于每條邊,我們查找其兩個端點所在集合的根節點。如果兩個端點的根節點不同,說明這兩個端點屬于不同的集合,加入這條邊不會形成環,我們就將這條邊加入到最小生成樹中,并合并這兩個集合(即將一個集合的根節點指向另一個集合的根節點)。
  • 如果兩個端點的根節點相同,說明這兩個端點已經在同一個集合中,加入這條邊會形成環,我們就跳過這條邊。

####代碼:

#include <bits/stdc++.h>
using namespace std;
const int M = 2005;
struct E {int u, v, w;E(int u, int v, int w) : u(u), v(v), w(w) {}bool operator<(const E& t) const {return w < t.w;}
};
int p[M];
int find(int x) {if (p[x] != x) {p[x] = find(p[x]);}return p[x];
}
void un(int x, int y) {int rx = find(x);int ry = find(y);if (rx != ry) {p[rx] = ry;}
}int main() {int n;cin >> n;vector<E> e;for (int i = 1; i <= n; ++i) {for (int j = i; j <= n; ++j) {int o;cin >> o;e.emplace_back(i - 1, j, o);}}for (int i = 0; i <= n; ++i) {p[i] = i;}sort(e.begin(), e.end());long long C = 0;for (const auto& g : e) {int u = g.u;int v = g.v;int w = g.w;int ru = find(u); int ry = find(v);if (ru != ry) {un(u, v);C += w;}}cout << C << endl;return 0;
}

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

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

相關文章

消息隊列篇--通信協議篇--網絡通信模型(OSI7層參考模型,TCP/IP分層模型)

一、OSI參考模型&#xff08;Open Systems Interconnection Model&#xff09; OSI參考模型是一個用于描述和標準化網絡通信功能的七層框架。它由國際標準化組織&#xff08;ISO&#xff09;提出&#xff0c;旨在為不同的網絡設備和協議提供一個通用的語言和結構&#xff0c;以…

C# Winform制作一個登錄系統

using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace 登錄 {p…

10.7 LangChain Models深度解析:解鎖大模型集成與調優的全景攻略

LangChain Models深度解析:解鎖大模型集成與調優的全景攻略 關鍵詞: LangChain Models模塊、大模型集成、LLM調用優化、多模型管理、本地模型部署 一、Models模塊的定位:大模型應用的“中央調度器” 傳統開發的痛點: 碎片化集成:每個模型需單獨編寫適配代碼性能黑洞:缺…

記一次STM32編譯生成BIN文件過大的問題(基于STM32CubeIDE)

文章目錄 問題描述解決方法更多拓展 問題描述 最近在一個項目中使用了 STM32H743 單片機&#xff08;基于 STM32CubeIDE GCC 開發&#xff09;&#xff0c;它的內存分為了 DTCMRAM RAM_D1 RAM_D2 …等很多部分。其中 DTCM 的速度是比通常的內存要快的&#xff0c;缺點是不支持…

996引擎 -地圖-添加安全區

996引擎 -地圖-添加安全區 文件位置配置 cfg_startpoint.xls特效效果1345參考資料文件位置 文件位置服務端D:\996M2-lua\MirServer-lua\Mir200客戶端D:\996M2-lua\996M2_debug\dev配置 cfg_startpoint.xls 服務端\Mir200\Envir\DATA\cfg_startpoint.xls 填歪了也有可能只畫一…

【leetcode強化練習·二叉樹】同時運用兩種思維解題

本文參考labuladong算法筆記[【強化練習】同時運用兩種思維解題 | labuladong 的算法筆記] 有的題目可以同時用「遍歷」和「分解問題」兩種思路來解&#xff0c;你可以利用這些題目訓練自己的思維。 559. N 叉樹的最大深度 | 力扣 | LeetCode | 給定一個 N 叉樹&#xff0c;…

棧和隊列特別篇:棧和隊列的經典算法問題

圖均為手繪,代碼基于vs2022實現 系列文章目錄 數據結構初探: 順序表 數據結構初探:鏈表之單鏈表篇 數據結構初探:鏈表之雙向鏈表篇 鏈表特別篇:鏈表經典算法問題 數據結構:棧篇 數據結構:隊列篇 文章目錄 系列文章目錄前言一.有效的括號(leetcode 20)二.用隊列實現棧(leetcode…

ios swift畫中畫技術嘗試

繼上篇&#xff1a;iOS swift 后臺運行應用嘗試失敗-CSDN博客 為什么想到畫中畫&#xff0c;起初是看到后臺模式里有一個picture in picture&#xff0c;去了解了后發現這個就是小窗口視頻播放&#xff0c;方便用戶執行多任務。看小窗口視頻的同時&#xff0c;可以作其他的事情…

OpenAI推出o3-mini推理模型,首次免費開放,性能超越o1,AIME測試準確率高達87.3%

OpenAI在2025年初推出了一款新的推理模型o3-mini&#xff0c;這款模型標志著公司在提升性能的同時也降低了成本&#xff0c;并且首次向免費用戶提供訪問權限。o3-mini是OpenAI推理系列中最新、最具成本效益的模型&#xff0c;在科學、數學、編程等領域的性能顯著超越了之前的o1…

人生不止于職業發展

0 你的問題&#xff0c;我知道&#xff01; 工作意義是啥&#xff1f;職業發展在人生啥角色&#xff1f; 1 工作意義 農村人努力學習考上大學&#xff0c;得好工作&#xff0c;為逃離同村同齡人十幾歲就工廠打工命運&#xff0c;過不凡人生&#xff0c;實現改命的唯一途徑。…

【算法設計與分析】實驗3:動態規劃—最長公共子序列

目錄 一、實驗目的 二、實驗環境 三、實驗內容 四、核心代碼 五、記錄與處理 六、思考與總結 七、完整報告和成果文件提取鏈接 一、實驗目的 掌握動態規劃求解問題的思想&#xff1b;針對不同的問題&#xff0c;會利用動態規劃進行設計求解以及時間復雜度分析&#xff0…

動手學圖神經網絡(3):利用圖神經網絡進行節點分類 從理論到實踐

利用圖神經網絡進行節點分類:從理論到實踐 前言 在之前的學習中,大家對圖神經網絡有了初步的了解。本次教程將深入探討如何運用圖神經網絡(GNNs)來解決節點分類問題。在節點分類任務里,大家往往僅掌握少量節點的真實標簽,卻要推斷出其余所有節點的標簽,這屬于歸納式學…

單片機串口打印printf函數顯示內容(固件庫開發)

1.hal_usart.c 文件 #include <stdio.h> #include "hal_usart.h" #include "stm32F10x.h"//**要根據 使用的是哪個串口 對應修改 串口號 eg&#xff1a;USART1** void USART_PUTC(char ch) {/* 等待數據寄存器為空 */while((USART1->SR & …

網關登錄校驗

網關登錄校驗 單體架構時我們只需要完成一次用戶登錄、身份校驗&#xff0c;就可以在所有業務中獲取到用戶信息。而微服務拆分后&#xff0c;每個微服務都獨立部署&#xff0c;不再共享數據。也就意味著每個微服務都需要做登錄校驗&#xff0c;這顯然不可取。 鑒權思路分析 …

wxwidgets直接獲取系統圖標,效果類似QFileIconProvider

目前只做了windows版本&#xff0c;用法類似QFileIconProvider // 頭文件 #ifndef WXFILEICONPROVIDER_H #define WXFILEICONPROVIDER_H#include <wx/wx.h> #include <wx/icon.h> #include <wx/image.h> #include <wx/bmpcbox.h> // Include for wxB…

我的創作紀念日——成為創作者的 第365天(1年)

機緣 考研的結果讓我感到一陣絕望&#xff0c;就像單片機突然死機一樣&#xff0c;所有的努力像是被一場意外的中斷指令打亂了邏輯流程。曾經本科時因為競賽拿了一堆獎&#xff0c;內心充滿虛榮心和成就感&#xff0c;總覺得自己是一個“天選之子”&#xff0c;但考研的失利卻像…

React 封裝高階組件 做路由權限控制

React 高階組件是什么 官方解釋∶ 高階組件&#xff08;HOC&#xff09;是 React 中用于復用組件邏輯的一種高級技巧。HOC 自身不是 React API 的一部分&#xff0c;它是一種基于 React 的組合特性而形成的設計模式。 高階組件&#xff08;HOC&#xff09;就是一個函數&…

【玩轉全棧】--創建一個自己的vue項目

目錄 vue介紹 創建vue項目 vue頁面介紹 element-plus組件庫 啟動項目 vue介紹 Vue.js 是一款輕量級、易于上手的前端 JavaScript 框架&#xff0c;旨在簡化用戶界面的開發。它采用了響應式數據綁定和組件化的設計理念&#xff0c;使得開發者可以通過聲明式的方式輕松管理數據和…

DS并查集(17)

文章目錄 前言一、何為并查集&#xff1f;二、并查集的實現&#xff1f;并查集的初始化查找元素所在的集合判斷兩個元素是否在同一個集合合并兩個元素所在的集合獲取并查集中集合的個數并查集的路徑壓縮 三、來兩道題練練手&#xff1f;省份的數量等式方程的可滿足性 總結 前言…

Appium介紹

在使用不同版本的Appium包進行自動化測試時&#xff0c;出現警告問題可能是由于版本不兼容、配置不正確等原因導致的。下面將詳細介紹解決這些問題的步驟&#xff0c;確保模擬器能夠正常啟動&#xff0c;并能在Appium查看器中同步顯示。 1. 環境準備 首先&#xff0c;確保你已…