【C++】APIO2010 巡邏
1.題目描述
Luogu-P3629
Bzoj-1912
2.分析
1.對於原圖,我們可以知道,若要回到節點1,每一條邊至少經過兩次(來一次,去一次),所以此時$ans=(n-1)*2$
2.不妨設$L_1$為第一條路徑長,$L_2$為第二條路徑長,當$k=1$時,從貪心的角度來考慮,肯定是要將距離最遠的兩個點連接在一起
3.若要找出距離最遠的兩個點,這兩個點肯定是樹的任意一條直徑中的兩個端點
4.當我們將這兩個點連接時,顯然會形成一個環,此時$ans=(n-1)*2-L_1+1$
5.故當$k=2$時,連接兩個點$(u,v)$之後,又會形成一個環
6.此時存在兩種情況:
1°兩個環沒有重疊部分
2°兩個環有重疊部分
7.對於情況1,樹上$(u,v)$之間原有的路徑只需經過一次,$ans$繼續減小
8.對於情況2,如果我們依然按照$k=1$的情況建立新的路徑,則兩個環重疊的部分就不會有巡邏車經過,不滿足原題要求。
9.所以我們不得不讓巡邏車必須經過這些邊。
10.最終,我們使得這些重疊的邊又經過了兩次,此時$ans=(n-1)*2-L_1+1-L_2+1$
【C++】APIO2010 巡邏
相關推薦
【C++】APIO2010 巡邏
分析 php 題目 lan ans blank n-1 之間 【c++】 1.題目描述 Luogu-P3629 Bzoj-1912 2.分析 1.對於原圖,我們可以知道,若要回到節點1,每一條邊至少經過兩次(來一次,去一次),所以此時$ans=(n-1)*2$ 2
【洛谷 P3629】 [APIO2010]巡邏
struct printf == pan bre char 交點 容易 第一個 題目鏈接 容易發現,當加一條邊時,樹上會形成一個環,這個環上的每個點都是只要走一次的,也就是說我們的答案減少了這個環上點的個數,要使答案最小,即要使環上的點最多,求出直徑\(L\),則答案為\(
【C】字符串常量和字符數組
gcc pre class fun 後者 一段 put light cmp 此次博客是轉載某位博主的文章,不過現在找不到了,所以先聲明一下。 先貼一段代碼: #include <stdio.h> int main(int argc, const char**
【C#】監測文件改變類
tco private clas 目錄修改 obj directory 設置 行修改 config using System.IO;//首先實例化一個對象 FileSystemWatcher watcher = new FileSystemWatcher(); //
【C#】報表制作<機房重構>
接下來 機房 工具 學習 test trac fcm 報表 感覺 前言 和VB須要引用其它報表軟件不同,VS自帶報表設計的功能,初次嘗試。就感受到了它的強大之處。 報表制作 話不多說。直接報表的制作過程。 1、首先,我們要先制作一個報表的
【C#】單例模式<機房重構>
機房 .sh 不能 是否 gist 應用 調用方法 單例模式 sender 前言 在機房重構之前。我們學習了設計模式。在這次重構中,我們的任務就是將這些模式,加入到機房的重構中去。如今先來解決一個最簡單的問題——窗口的超生。 假設不加以限
【C#】Color顏色對照表
pac eee lower fda flow dig val rim cee Color.AliceBlue 240,248,255 Color.LightSalmon 255,160,122 Color.
【轉】【C#】全局鍵盤監聽
控制 keyevent 註冊 相關 一個 rsh rds api函數 start using System; using System.Collections.Generic; using System.Text; using System.Runtime.Inter
Debug目錄、Release目錄,bin目錄、obj目錄,vshost.exe.config文件、.exe.config文件分析【C#】
修改 .com 重啟 不同 span http ocs 資料 更改 Debug目錄、Release目錄,bin目錄、obj目錄,vshost.exe.config文件、.exe.config文件分析【C#】 2013-10-06 孤風卓影 摘自 csdn博客 閱 5
【c++】LUOGU P1808 單詞分類
使用 排序 nbsp pan size pre 最短 include namespace STL大法好!!! 使用sort()將string排序,map去重並統計即可。 最短代碼如下: 1 #include<bits/stdc++.h> 2 using n
【C】常用的字符串函數
uri 實例 返回 blog logs tin bsp main include 1. strcpy 函數名:strcpy 用法:char *strcpy(char *destin, char *cource) 功能:將一個字符串從一個拷貝到另外一個 程序示
【C#】獲取機器碼MachineCode
manage .get ble returns ext cat using pos window using System; using System.Collections.Generic; using System.Management; using System.T
【C++】cmdline —— 輕量級的C++命令行解析庫
pre eas 很好 -- 創建 tar mod ans valid 平時用C++寫一些命令行工具,須要解析命令行的輸入參數,這是一項繁瑣而且easy出錯的工作,我們不應該將主要精力放在這上面。能夠考慮使用開源的庫。以下的cmdline就是當中很好用
【C#】多線程解決UI界面卡死的問題
archive 界面 小結 com 同步 logs 解決辦法 相對 invoke 一個經典的例子: http://www.cnblogs.com/wangchuang/p/4485797.html 問題: 都說Invoke是同步的,BeginInvoke是異步的,但為
【C】——如何用線程進行參數的傳遞
turn send 實例化 printf join tex str null print #include<pthread.h> 2 #include<stdio.h> 3 4 struct val{ 5 int num1; 6
【c#】winform 上傳圖片
geb mes tap pict efi for text 選擇 amp 1、拖拽上傳圖片 1.1、後臺代碼中修改窗體屬性,添加 AllowDrop = true 1.2、給窗體添加拖拽事件,在事件列表找到拖拽 雙擊即可: 在 DragDrop 生成的方法中添加代碼如
【C#】C#實現事務
identity title ini body pro 簡單例子 ear scalar 技術分享 1、創建事務的結構 SqlConnection sqlConnection = new SqlConnection(); ...初始化連
【C#】淺析C#中的日期處理
see var time tostring 靈活性 ide format tin 介紹 1.字符串轉化為日期 1.1第一種方式 使用 Convert.toDateTime 方法,該方法有很多重載方法,這裏筆者就介紹兩個常用的重載方法。 第一種: 使用: Con
【C++】最近公共祖先LCA(Tarjan離線算法)&& 洛谷P3379LCA模板
target sizeof add 例題 開始 實現 再看 根節點 strong 1.前言 首先我們介紹的算法是LCA問題中的離線算法-Tarjan算法,該算法采用DFS+並查集,再看此算法之前首先你得知道並查集(盡管我相信你如果知道這個的話肯定是知道並查集的),
【C】wchar、char格式化符輸出
div mar class cnblogs ive pos arc 編譯器 align VC、BCB、MinGW Linux下的GCC、C99標準 printf wprintf printf wprintf s char wchar_t char S wc