校內模擬 深邃(貪心)(二分答案)

2021-10-04 21:15:44 字數 1168 閱讀 3390

簡要題意:

一棵樹,有 k

kk 個關鍵點,請你把樹劃分為若干聯通塊,使得每個聯通塊包含至少乙個關鍵點,最小化最大的聯通塊的大小。

首先容易注意到可以二分答案。

然後考慮怎麼判斷,進行dfs,每個點盡量貪心往下劃分。

h vu

hv_u

hvu​

表示 u

uu 為根的子樹,u

uu 這個聯通塊還能多容吶的點數。

n tu

nt_u

ntu​

表示 u

uu 為根的子樹,無法向下分到任何乙個聯通塊的點數。

這樣就非常好計算了,具體轉移見**。

**:

#include

#define ll long long

#define re register

#define cs const

namespace io

template

<

typename t>t get_integer()

inline

intgi()

}using

namespace io;

using std::cerr;

using std::cout;

cs int n=

2e5+7;

int el[n]

,nx[n+n]

,to[n+n]

,ec;

void

adde

(int u,

int v)

bool key[n]

;int lim;

int hv[n]

,nt[n]

;bool

dfs(

int u,

int p)

else

hv[p]

=std::

max(hv[p]

,hv[u]

-nt[u]);

return

true;}

void

main()

cout<"\n";}

inline

void

file()

signed

main()

NOI模擬 深邃(二分 貪心)

題意 給一棵樹,有 n n 個點,其中 k role presentation k k個關鍵點,求一種分割方案 斷掉一些邊 使得每個聯通塊至少有 1 1 個關鍵點,且使得最大塊最小。題解 二分塊的限制 然後記fi gi role presentation fi,gifi gi表示與 i i 聯通的最...

CodeVS1725 探險 二分答案 貪心

題目描述 有編號為1至n的n個同學一起去探險,現在把他們分成k個小組,每個小組完成一項探險任務。分組時,如果第i人與第j人分在同一組 i j 則他們之間的所有人 第i 1,i 2,j 1個 也必須在同乙個小組中。乙個小組內所有人的體力和越小,途中可能越危險。為了確保每個同學的安全,要求分組時,使得所...

二分查詢與二分答案

主要用於在乙個單調的函式中查詢某值 連續函式的情況 若當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y 則 l mid,否則 r mid 直至 r l eps 當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y...