当前位置:网站首页>codeforces Linova and Kingdom
codeforces Linova and Kingdom
2022-08-02 14:22:00 【先求一个导】
题目
题意: 给定以1为根的树,选择恰好k个点染黑色,其余点为白色。这k个点的幸福值为其到树根的最短路上白色点的个数,问和最大为多少。
思路: 贪心。首先深度深的叶子最优,其次就不好说了,选了父节点子节点贡献就会减少。不妨把子节点贡献减少的值交给父节点,这样总和不变,可以据此直接排序选出贡献最大的k个点。
时间复杂度: O(nlogn)
代码:
// Problem: A. Linova and Kingdom
// Contest: Codeforces - Codeforces Round #635 (Div. 1)
// URL: https://codeforces.com/problemset/problem/1336/A
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
int n,m,k,T;
vector<int> va[N];
int sz[N];
int ans[N];
void dfs(int cur,int fa,int d)
{
sz[cur] = 1;
for(auto j:va[cur])
{
if(j==fa) continue;
dfs(j,cur,d+1);
sz[cur] += sz[j];
}
// if(cur==4) cout<<d<<" "<<sz[cur]<<"\n";
ans[cur] = d - sz[cur] + 1;
}
void solve()
{
cin>>n>>k;
for(int i=0;i<n-1;++i)
{
int x,y; cin>>x>>y;
va[x].push_back(y),va[y].push_back(x);
}
dfs(1,0,0);
// for(int i=1;i<=n;++i) cout<<i<<":"<<ans[i]<<"\n";
sort(ans+1,ans+n+1);
int now = n;
long long res = 0;
while(k--)
{
res += ans[now--];
}
cout<<res;
}
signed main(void)
{
solve();
return 0;
}
边栏推荐
猜你喜欢
CUDA programming based on Visual Studio 2015 (1): basic configuration
搭建Spark开发环境
使用 docker 搭建 redis-cluster 集群
解决(An error happened during template parsing (template: “class path resource [templates/...]
IIR滤波器设计之冲激响应不变法与双线性变换法
2021年华为杯数学建模竞赛E题——信号干扰下的超宽带(UWB)精确定位问题
【IP基本原理-ARP原理】
BOM(Browser Object Model)浏览器对象模型相关概念
【QMT】给QMT量化交易软件安装和调用第三方库(举例通达信pytdx,MyTT,含代码)
Object.defineProperty方法(详解)
随机推荐
nvm管理node版本 nodenpm不是内部或外部命令,也不是可运行的程序
Spark的概念、特点、应用场景
C语言的基本程序结构详细讲解
test3
2022-07-10 第五小组 瞒春 学习笔记
js中的join()方法
Redis的5中数据类型总结
集成电路实践----D触发器
【web渗透】文件包含漏洞入门级超详细讲解
2021 annual summary - complete a year of harvest
一文让你快速写上扫雷游戏!童年的经典游戏,发给你的小女友让你装一波!!
Filter 过滤器
2022-07-08 第五小组 瞒春 户外拓展
Object.defineProperty方法(详解)
IIR滤波器设计之冲激响应不变法与双线性变换法
2022-7-12 第五组 瞒春 学习报告
this beta version of Typora is expired, please download and install a newer version.Typora的保姆级最新解决方法
scroll、offset、client事件的用法及区别
ADB常用命令--测试人员必备
Golang基础教程