题目链接: Linova and Kingdom

大致题意

有n座城市, n-1条连通城市间的双向道路. 城市1是首都, 所有的城市可以看做是以1号点为根的树形结构.

我们需要从中选择m座城市, 让其发展工业, 其余的城市则发展旅游业.

工业城市i前往城市1最短路径所经过的旅游业城市数目, 定义为i城市的贡献度.

你可以自定义m座发展工业的城市, 问: m座城市的最大贡献度之和是多少.

解题思路

首先不难贪心联想到: 我们选择叶子结点成为工业城市好像要更优一些.

假设1~n所有城市形成一条链, 此时如果m=1必然我们选择叶子结点最优. 那如果m=2呢? 我们应选择最靠下的两个节点.


考虑回正常的树. 我们之所以认为选择叶子节点会更优, 是因为对于树中任意一条链而言, 这条链上距离根节点最远的点为叶子节点. 如果m=2, 此时树有两条链构成, 一条链上只有一个点(距离根节点的距离是1), 另外一条链很长. 我们不难发现, 我们应该在长链上选择链尾的两个节点.

因此我们得出结论: 我们并不是选择叶子节点更优, 而是选择深度更大的节点更优.


接下来我们再思考, 假设有两个相同深度节点a, b. 节点a有2个为叶子节点的子节点, 节点b有1个为叶子节点的子节点, 此时如果我在a, b中做选择, 我应该选择节点a.

选择了某个叶子节点, 也选择了该叶节点的父亲节点时, 此时叶子节点对答案的贡献减少1.

若选择了num个叶子节点, 它们有同一个父亲节点p, 此时我选择p节点后, 相当于对答案的贡献减少了num.

再推广, 如果对于一个节点q, 其子树内选择了num个节点, 我选择节点q后, 对答案贡献减少了num.


由此我们得出结论: 当选择非叶节点时, 我们要考虑其深度其子树内选择的点的数目两个因素.


其实我们也不难想到, 当我们考虑是否选择某个节点时, 该节点子树内所有的节点应都已经被选择. 否则我选择任一子树内部节点, 都比当前节点更优.

由此我们可以得出每个节点对答案贡献公式: 该节点贡献 = 该节点深度 - 其子树节点个数

我们贪心选择前m个贡献最大的节点即可.

AC代码

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 1; i <= (n); ++i)
using namespace std;
typedef long long ll;
const int N = 2E5 + 10;
vector<int> edge[N];
int qaq[N], sz[N];
void dfs(int x = 1, int fa = 0, int depth = 0) {qaq[x] = depth; sz[x] = 1;for (auto& to : edge[x]) {if (to == fa) continue;dfs(to, x, depth + 1);sz[x] += sz[to];}qaq[x] -= sz[x] - 1;
}
int main()
{int n, m; cin >> n >> m;rep(i, n - 1) {int a, b; scanf("%d %d", &a, &b);edge[a].push_back(b);edge[b].push_back(a);}dfs();sort(qaq + 1, qaq + 1 + n, greater<>());ll res = 0;rep(i, m) res += qaq[i];cout << res << endl;return 0;
}

END

Codeforces1336A Linova and Kingdom (思维)相关推荐

  1. Linova and Kingdom

    Linova and Kingdom 题目来源:Codeforces Round #635 (Div. 2) C题 Writing light novels is the most important ...

  2. CF1336 A. Linova and Kingdom

    A. Linova and Kingdom 题意 给你一颗 n n n个节点根为1号节点的树,选 k k k个城市作为工业城市,其余为旅游城市,工业城市的使节每经过旅游城市开心值+1,求所有工业城市的 ...

  3. C. Linova and Kingdom

    链接:https://codeforces.ml/contest/1337/problem/C Writing light novels is the most important thing in ...

  4. 1336A - Linova and Kingdom

    链接: https://codeforces.com/problemset/problem/1336/A 题意: 有一个n节点树,根为1,现在要设置k个工业城市,剩下n-k个旅游城市,让每个工业城市前 ...

  5. CodeForces - 1337C Linova and Kingdom(贪心)

    题目链接:点击查看 题目大意:给出一棵树表示一个国家,点1表示首都,现在需要分配 k 个城市为工业城市,其余 n - k 个城市为旅游城市,这个国家会定时在首都召开会议,换句话说,所有工业城市都必须派 ...

  6. CF1336A Linova and Kingdom

    看这里 大意: 有一个有 n 个点的树,以 1 为根,你可以选择 k 个节点,使得这 k 个节点到 1 节点的最短路径中经过的非选择的点最多. 思路: 简单树形dp 我们肯定会优先最好的叶子结点,这个 ...

  7. bottom sheets_Excel 2013中的SHEET和SHEETS函数

    bottom sheets I've been experimenting with the new SHEET and SHEETS functions in Excel 2013, to see ...

  8. bottom sheets_使用Sheetson建立由Google Sheets支持的免费电子邮件列表

    bottom sheets When building an initial MVP for your product, it's wise to avoid unnecessary expenses ...

  9. Codeforces补题记录(1)

    文章目录 Codeforces补题记录(1) 1.Codeforces Round #632 (Div. 2)(2020.4.11) A.Little Artem B.Kind Anton *C.Eu ...

  10. Codeforces Round #635 (Div. 2)(A~D)题解

    Codeforces #635 A~D A.Ichihime and Triangle B.Kana and Dragon Quest game C.Linova and Kingdom D.Xeni ...

最新文章

  1. IP子网划分和vlsm(变长子网掩码)和路由汇总
  2. 马斯克放话:6个月内公测卫星互联网!颠覆5G的将不是6G
  3. 使用VScode开发ESP32,PlatformIO开发ESP32
  4. python爬虫正则表达式实例-Python 正则表达式爬虫使用案例解析
  5. 在Linux上安装其他版本的cmake 或 升级cmake
  6. 【错误记录】Android 编译时技术版本警告 ( 注解处理器与主应用支持的 Java 版本不匹配 )
  7. 以太坊再爆高危漏洞!黑客增发ATN 1100万枚token事件始末
  8. chrome自动调节窗口大小插件_高效使用Chrome浏览器的10个技巧
  9. 卷积神经网络精确率不增反降_深度学习 第四门课:卷积神经网络(Convolutional Neural Networks)...
  10. 12月29日课程笔记 磁盘格式化与挂载与手动增加swap空间
  11. 新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目
  12. Conda activate报错 CommandNotFoundError: Your shell has not been properly configured to use ‘conda
  13. DIV+CSS的命名规则有利于SEO
  14. Java学习手册:Java网络编程面试问题
  15. 微信公众号开发文档参考
  16. 经纬财富:亳州炒白银操作方法,谨防亏损
  17. JTree创建、获取和删除节点的方法
  18. vue项目没有router文件夹_router文件夹
  19. warning: setUpNet DNN module was not built with CUDA backend; switching to CPU错误解决
  20. mysql查询学生表年龄语句_mysql中一张(居民)表按年龄段查询数据

热门文章

  1. if - else 案例.py
  2. python类似图片查找_python检测相似图片
  3. 阿里云平台购买域名 免费申请SSL证书
  4. win10 摄像头启动不了
  5. hdmi接口线_HDMI高清线注意事项
  6. 离散数学学习心得(一)逻辑和证明
  7. erp计算机英语词汇,ERP词汇 - 外贸英语 - 福步外贸论坛(FOB Business Forum) |中国第一外贸论坛...
  8. c语言开发 kdj,KDJ——随机指标之王
  9. 101名女职工血清总胆固醇测量结果spss描述统计分析
  10. Android键盘删除键问题