解題思路:
以度最大的那個點為根節點,那麼從根節點出去的肯定要麼是直線,要麼就是圓。
然後我們再看這題要怎麼做,首先二分答案,然後就是要想怎麼貪心,怎麼樣才能使得建立房屋的數量盡量小呢,那麼就要盡量使得每個位置的兔子只能去乙個屋子,也就是假設答案為x,那麼就可以在一條長為2*x+1的鏈的中間放置乙個房子使得這條鏈上的所有兔子都能到達這個屋子。
剩餘的點如果離根節點大於x,那麼顯然還需要再建立乙個房子,那麼剩下的點就是沒有能到達的房子,且離根節點#define inf 0x3f3f3f3f
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pairpa;
const int mx = 5e3 + 10;
int n,m,k,rt,du[mx];
int line[mx],loop[mx];
int ie,ip;
vector g[mx];
bool vis[mx];
void dfs(int u,int fa,int d)
if(vis[u]) return;
vis[u] = 1;
for(int v:g[u]) if(v!=fa)
dfs(v,u,d+1);
if(u!=rt&&g[u].size()==1)
line[ie++] = d;
}bool check(int x)else if(re==0)
mi = min(mi,x);
else ma = max(ma,re-1);
} for(int i=0;ix) used++;
return used<=k;
}int main()
dfs(rt,-1,1);
int l = 1,r = 1e5;
while(l>1;
if(check(mid)) r = mid;
else l = mid + 1;
} printf("%d\n",l);
return 0;
}
H 指數 二分 lower bound二分
給定一位研究者 被引用次數的陣列 被引用次數是非負整數 編寫乙個方法,計算出研究者的 h 指數。h 指數的定義 h 代表 高引用次數 high citations 一名科研人員的 h 指數是指他 她 的 n 篇 中 總共有 h 篇 分別被引用了至少 h 次。其餘的 n h 篇 每篇被引用次數不超過h...
H 二分練習
description 給你乙個序列,然後給你m個元素,讓你從序列中找出與每個元素最接近的數字輸出來,如果有兩個就輸出兩個。input 多組輸入,第一行給你兩個數n 0 n 10000000 m 0 m n 接下來是數列的n個數,然後再輸入m個元素,讓你找出最接近每個元素的值。如果有兩個,按從小到大...
二分貪心 21
題目大概 有n堆積木,積木高度不同,每個小方塊高度相同。問,最少移動多少小方塊,使得這些積木堆高度相等。思路 先求這些積木的平均數,在把所有的高度與平均數的差值加起來,最後除2,就是最少移動的方塊數。感想 這個題有一點很坑人,最後輸出的時候有乙個小點,不注意看看不到。include include ...