JZOJ6096 森林 倍增 貪心

2021-09-14 02:23:00 字數 827 閱讀 9096

n<=200000

這道題專門坑那些資料結構學傻的老年選手(比如我)

先考慮如何變換能得到最大的答案。

容易發現我們的最終答案一定形如左圖,像右圖那樣選兩段不相交的一定是不優的。

更進一步,我們可以發現左邊的三叉中的兩叉一定構成了原樹的直徑(有可能往上叉)。

我們對於每一次加入新點,判斷能否換掉直徑的乙個端點,再用剩下的哪乙個跟叉出來的分支比一下長度。

計算樹上距離用倍增就好了。

並不需要什麼lct

時間複雜度o(n

log⁡n)

o(n\log n)

o(nlogn)

#include

#define fo(i,a,b) for(int i=a;i<=b;++i)

#define fod(i,a,b) for(int i=a;i>=b;--i)

#define n 200005

using

namespace std;

int f[n][18

],dep[n]

,n;int

lca(

int x,

int y)

return x;

}int

dis(

int x,

int y)

intdt

(int u,

int v,

int w)

intmain()

}

android學習筆記6 09

今天看書看到了第一行 的3.5.2節的定製listview介面感覺很難。主要用到的函式有 getview getitem layoutinflater.from inflate resoucedid,null 從乙個context中,獲得乙個布局填充器,這樣你就可以使用這個填充器來把xml布局檔案轉...

Redis6 0 9主從搭建

所謂主從,大家都知道主是寫資料,而從是進行資料的拷貝。主節點 127.0.0.1 6379 從節點 127.0.0.1 6378 先將單機版的配置檔案賦值兩份出來,原先的配置中主要改動有 配置項值 bind 0.0.0.0 daemonize yesrequirepass zgq 123456 現拷...

leetcode 609 在系統中查詢重複檔案

目錄給定乙個目錄資訊列表,包括目錄路徑,以及該目錄中的所有包含內容的檔案,您需要找到檔案系統中的所有重複檔案組的路徑。一組重複的檔案至少包括二個具有完全相同內容的檔案。輸入列表中的單個目錄資訊字串的格式如下 root d1 d2 dm f1.txt f1 content f2.txt f2 cont...