【數據結構】量子危機

問題

宇宙時間公元 5.55 億年,由于某種原因兩大聯盟展開了激戰(maxingc 聯盟采用了微子技術):
邪惡的 maxingc 聯盟采集好了微子能,就要運輸。Maxingc 聯盟的領袖 xc 此時才發現,自己的軍事基地中
由微子發射器組成的微子能量網存在很大的問題,于是他決定修改。
之前,TT 為了整齊,把軍事基地建成了矩形,而且如果兩個微子發射器的連線平行于軍事基地的一邊,這
兩個微子發射器之間就一定有微子能量傳輸線相連。
(*注:比如有 3 個微子發射器A(1,1)、B(1,3)、C(2,2),那么 A 和 B 之間有微子能量傳輸線相連,
A 和 B 不能傳輸到 C。*)
但是在微子能運輸過程中發現,常常不能從一個微子發射器運抵另一個微子發射器。
為了可以從任何一個微子傳輸器能運抵其它任意一個微子傳輸器,而且能和原來的微子能量網同樣整齊,
TT 決定遵循原來的規則,調動他的百萬農奴新修建一些微子能量傳輸線和微子發射器。由于微子發射器的
造價比微子傳輸線高得多,所以 TT 決定忽略微子能量傳輸線的成本。
但是 TT 又不想花費不必要的錢,所以找到你為他計算最少需要建多少個微子發射器。
輸入格式? Input Format
第一行三個正整數 n、m、p。(2<=n,m<=100000,表示軍事基地的兩邊長;2<=p<=200000,表示微子

發射器的個數。)
接下來 p行,每行兩個正整數數 Xi、 Yi(1<=Xi<=n?? 1<=Yi<=m),代表每個微子發射器在軍事基地的位置。
(可能會由于疏漏,有些微子發射器重復)
輸出格式? Output Format
樣例:
?輸入:5 6 6
1 1
2 2
2 4
3 3
5 1
5 5
輸出:
2
只有一行,為最少修建微子發射器的數量。
樣例的一種方案:
#.....
|#-#..
|.#+..
|.|...
#-+-#.
#表示原有微子發射器,-、|表示微子能量傳輸線,+表示興建的微子發射器。所以至少興建 2 個微子發射
器。

分析

我們先這樣考慮,如果對所有已知的節點進行染色的話,能染成同一種顏色的節點一定在同一個強連通分量中(內部連同),那么需要興建的節點數就等于強連通分量數減一

我們來證明這個結論:對于任意一個節點它可以照顧到一行一列上的所有節點。也就是說,一個節點最多可以連接到4個強連通分量。如果一個興建的節點只連接一個強連通分量,那么這個節點是毫無用處的。如果一個節點連接3個強連同分量,那么這3個強連通分量必有兩個已經在一個強連通分量中。連接4個同理。只有當一個節點連接兩個強連通分量時,才能讓這兩個原先不連通的分量相互連同。

這就類似于最小生成樹,將興建的節點看成邊,原有的強連通分量看做節點,那么n個節點連成一顆生成樹必然需要n-1個節點。

下面的問題就是如何染色。

如果用floodfill會很復雜,而且顯然會超時。我們要考慮更加優秀的的算法。我們現在需要將在一個強連通分量中的原節點賦予同一個標識,并查集!

再加一個標記數組(n+m 表示某行或某列上是否有節點)。每讀入一個節點我們就將其所在的行和列和并在一個集合中。這樣就將一個強連同分量中的所有行和列合并在了同一個集合中。

最后,只需要枚舉每行(列),如果該行(列)被標記過(在某個強連通分量中),那么找到它的根節點,累計總數并且標記當前強連通分量被訪問過(應用并查集壓縮路徑后在同一個集合中的元素的祖先相同),只需標記其祖先即可。

ContractedBlock.gifExpandedBlockStart.gifView Code
program liukeke;
var
f:
array[1..400000] of longint;
v:
array[1..400000] of boolean;
i,n,m,p,x,y,temp1,temp2,ans:longint;

function find(x:longint):longint;
begin
if f[x]=x then exit(x);
f[x]:
=find(f[x]);
exit(f[x]);
end;

begin
assign(input,
'wei.in');reset(input);
assign(output,
'wei.out');rewrite(output);
readln(n,m,p);
for i:=1 to n+m do f[i]:=i;
for i:=1 to p do
begin
readln(x,y);
temp1:
=find(x);
temp2:
=find(y+n);
if temp1<>temp2 then
f[temp1]:
=temp2;
v[x]:
=true;
v[y
+n]:=true;
end;
for i:=1 to n+m do
if v[i] then
begin
temp1:
=find(i);
if v[temp1] then
begin
inc(ans);
v[temp1]:
=false;
end;
end;
writeln(ans
-1);
close(input);
close(output);
end.

反思

要先對題目分析,抽象其模型,再選取合適的數據結構解決問題,并查集應用不多但都很巧妙,可用來判斷邏輯關系和集合關系

轉載于:https://www.cnblogs.com/liukeke/archive/2011/06/12/2078972.html

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

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

相關文章

android 自定義menu背景,Android編程實現自定義系統菜單背景的方法

本文實例講述了Android編程實現自定義系統菜單背景的方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;不多說&#xff0c;上圖&#xff0c;見代碼。package lab.sodino.menutest;import android.content.Context;import android.app.Activity;import android.os.Bu…

面試官問 async、await 函數原理是在問什么?

大家好&#xff0c;我是若川。這是 源碼共讀活動《1個月&#xff0c;200人&#xff0c;一起讀了4周源碼》 第四期&#xff0c;紀年小姐姐的第四次投稿。紀年小姐姐通過本次學習提早接觸到generator&#xff0c;協程概念&#xff0c;了解了async/await函數的原理等。第四期是 學…

一步步優化JVM六:優化吞吐量[轉]

2019獨角獸企業重金招聘Python工程師標準>>> 原文&#xff1a;http://ganlv.iteye.com/blog/1571315 參考&#xff1a;http://www.myexception.cn/software-architecture-design/1455594.html 現代JVM是一個具有靈活適應各種應用能力的軟件&#xff0c;盡管很多應用…

element-ui 網格_UI備忘單:列表與網格

element-ui 網格重點 (Top highlight)Grids or lists? That is the question we will look at in this cheat sheet. While they can be used anywhere in your site, we are going to look primarily at search results, catalogs and newsfeeds. Making this choice will de…

asp.net mvc使用TagBuilder的應用程序集

在asp.net mvc編寫擴展方法中需要使用到TagBuilder類&#xff0c;根據msdn的說法應該應用System.Web.Mvc.dll 程序集。 TagBuilder 構造函數 .NET Framework 4 初始化 TagBuilder 類的新實例。命名空間&#xff1a; System.Web.Mvc程序集&#xff1a; System.Web.Mvc&#xf…

50行 koa-compose,面試常考的中間件原理原來這么簡單?

大家好&#xff0c;我是若川。源碼共讀《1個月&#xff0c;200人&#xff0c;一起讀了4周源碼》 活動第五期是學習 koa 源碼的整體架構&#xff0c;淺析koa洋蔥模型原理和co原理中的koa-compose源碼原理&#xff0c;閱讀不到50行的koa-compose源碼。這篇是izjing小哥哥的投稿。…

sqlite3源碼編譯到Android,實現SQLite跨全平臺使用

文&#xff0f;何曉杰Dev(高級Android架構師)著作權歸作者所有&#xff0c;轉載請聯系作者獲得授權。初看這個標題你可能會不解&#xff0c;SQLite 本身就是一個跨平臺的數據庫&#xff0c;在這里再說跨平臺有什么意義呢&#xff1f;其實不然&#xff0c;目前我就遇到了一個項目…

在Red Hat 4 AS U7上安裝oracle10gR2

軟件&#xff1a;Red Hat 4 AS U7, Oracle 10g R2 for linux32, VMWare 7, Windows 7詳細步驟清單&#xff1a;在Red Hat 4 AS U7上安裝oracle10gR2 1. 硬件需求&#xff1a; &#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1…

illustrator下載_平面設計:16個Illustrator快捷方式可加快工作流程

illustrator下載I know, I know — keyboard shortcuts sound so nerdy, and you’re a graphic designer, not an IT Director, why should you learn keyboard shortcuts?我知道&#xff0c;我知道—鍵盤快捷鍵聽起來很書呆&#xff0c;而且您是圖形設計師&#xff0c;而不是…

手把手教你五分鐘扒個源碼寫個無敵外掛

大家好&#xff0c;我是若川。源碼共讀《1個月&#xff0c;200人&#xff0c;一起讀了4周源碼》 活動進行到第五期了&#xff0c;歡迎點鏈接加我微信 ruochuan12 報名參加。前言前段時間群里分享了一個小游戲&#xff0c;多次懷疑自己的眼睛以后&#xff0c;嘗試去寫個外掛。中…

Kubernetes 1.14重磅來襲,多項關鍵特性生產可用

走過了突飛猛進的2018年&#xff0c;Kubernetes在2019年終于迎來了第一個大動作&#xff1a;Kubernetes 1.14版本的正式發布&#xff01;Kubernetes 本次發布的 1.14 版本&#xff0c;包含了 31 項增強&#xff0c;其中 10 項為 GA&#xff0c;12 項進入 beta 試用階段&#xf…

中英文

http://it.freesion.com/3220/4888028/13606306/#轉載于:https://www.cnblogs.com/yqskj/articles/2082326.html

open ai gpt_讓我們來談談將GPT-3 AI推文震撼到核心的那條推文

open ai gpt重點 (Top highlight)“設計師”插件 (The ‘Designer’ plugin) A couple days ago, a tweet shared by Jordan Singer turned the heads of thousands of designers. With the capabilities of GPT-3 (from OpenAI), he shared a sample of what he was able to c…

我歷時3年才寫了10余篇源碼文章,但收獲了100w+閱讀

你好&#xff0c;我是若川。最近來了一些讀者朋友&#xff0c;在這里簡單介紹自己的經歷&#xff0c;也許對你有些啟發。之前發過這篇文章&#xff0c;現在修改下聲明原創&#xff0c;方便保護版權。最近組織了源碼共讀活動1個月&#xff0c;200人&#xff0c;一起讀了4周源碼&…

android onlescan 參數,Android BLE:從iOS外設廣告時,在onLeScan()回調中檢索服務UUID

我正在使用Nexus 4(4.4 kitkat)作為中央和iPad作為外設.外圍設備有廣告服務.廣告包有一些數據(22字節)的服務UUID.當我嘗試從Android掃描外圍設備時,iPad外圍設備被發現.但是當我嘗試從回調中的scanRecord參數獲取服務UUID時,我找不到它.我得到的是外設發送的20byte數據.當我嘗…

第 8 章 容器網絡 - 061 - flannel 的連通與隔離

flannel 的連通與隔離 測試 bbox1 和 bbxo2 的連通性&#xff1a; bbox1 能夠 ping 到位于不同 subnet 的 bbox2&#xff0c;通過 traceroute 分析一下 bbox1 到 bbox2 的路徑。 1&#xff09; bbox1 與 bbox2 不是一個 subnet&#xff0c;數據包發送給默認網關 10.2.9.1&#…

Javascript 檢測 頁面是否在iframe中

//檢測是否在iframe中if(self.frameElement ! null && (self.frameElement.tagName "IFRAME" || self.frameElement.tagName "iframe")){parent.parent.location "login.jsp";}轉載于:https://www.cnblogs.com/kenkofox/archive/2011…

寫給前端的算法進階指南,我是如何兩個月零基礎刷200題 等推薦

大家好&#xff0c;我是若川。話不多說&#xff0c;這一次花了幾小時精心為大家挑選了20余篇好文&#xff0c;供大家閱讀學習。本文閱讀技巧&#xff0c;先粗看標題&#xff0c;感興趣可以都關注一波&#xff0c;一起共同進步。前端從進階到入院作者ssh就職于字節跳動基礎工程團…

計算機視覺筆記本推薦_視覺靈感:Mishti筆記本

計算機視覺筆記本推薦The Mishti Notebook is a project close to my heart, wherein I experimented with screen printing techniques at the Print Labs at the National Institute of Design, Ahmedabad. Dating back to the year 2012 when the NID Print Labs was first …

Google工程師:如何看待程序員普遍缺乏數據結構和算法知識?

出處&#xff1a;極客時間《數據結構與算法之美》很多技術人都很迷茫&#xff0c;覺得自己做的項目沒有技術含量&#xff0c;成天就是賣苦力。技術的東西&#xff0c;日新月異&#xff0c;有些人總在忙于追求熱點新技術&#xff0c;東學學、西學學&#xff0c;平時泛泛地看技術…