CSP - J day7
创始人
2024-11-04 21:07:31

 一. 砍树

(1)思路:

· 答案具有单调性:对于正确答案 ans ,小于 ans 的都一定符合条件,大于 ans 的一定不符合条件,因此可以二分答案。

· 先dfs到叶节点,再逐步递归出来,过程中节点数增加,一旦达到 mid ,ans 加一,同时向上贡献节点数变为零。

(2)代码:

#include #define LL long long using namespace std;  const int N = 1e5 + 5;  int n, k, ans; vector G[N];   int dfs(int u, int fa, int mid) { 	int s = 1; 	for (auto v : G[u]) 	{ 		if (v == fa) 			continue; 		s += dfs(v, u, mid); 	} 	if (s >= mid) 	{ 		ans ++; 		return 0;					// µ±Ç°½Úµã¿ªÊ¼µÄ×ÓÊ÷²»»áÔÙ¶ÔÉÏÃæ×ö³ö¹±Ï×  	} 	return s;						// µ±Ç°½ÚµãÄܹ»ÏòÉÏ×ö³ö¹±Ï×  }  bool check(int mid) { 	ans = 0;						// ans ²»Êdzõʼ»¯Îª 1  ²¢²»Äܹ»±£Ö¤ËùÓнڵãÊý±¾Éí¾Í´óÓÚ mid  	dfs(1, -1, mid); 	return ans >= k + 1; }  int main() { 	cin >> n >> k; 	for (int i = 1; i < n; i ++) 	{ 		int u, v; 		cin >> u >> v; 		G[u].push_back(v), G[v].push_back(u); 	} 	int l = 1, r = n + 1, mid; 	while (l + 1 < r) 	{ 		mid = l + (r - l) / 2; 		if (check(mid)) 			l = mid; 		else 			r = mid; 	} 	cout << l; 	return 0; }

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...