CF-1249 F.Maximum Weight Subset(贪心)

题目链接

题意


在一棵树上选一些点构成一个集合,满足集合内任意两点的距离大于kkk,求集合的最大权值和

思路

一共200个点,可以从最低层的点uuu开始,默认选择这个点,然后将它距离kkk的点权值减小val[u]val[u]val[u]表示这些点不选.

这样向上找的时候如果碰到权值为正的点,表示选择这个点的权值更优,同时不会影响其他点

复杂度O(n2)O(n^2)O(n2)

#include <bits/stdc++.h>
const int maxn = 1e5 + 5;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
using namespace std;
vector<int> g[maxn];
int a[maxn], b[maxn], dep[maxn], n, k;
void dfs(int u, int fa, int d) {dep[u] = d;for (auto v : g[u]) {if (fa == v) continue;dfs(v, u, d+1);}
}
void dfs(int u, int fa, int x, int d) {if (d > k) return;a[u] -= x;for (auto v : g[u]) {if (fa == v) continue;dfs(v, u, x, d+1);}
}
int main() {cin >> n >> k;for (int i = 1; i <= n; ++i) cin >> a[i];for (int i = 1; i < n; ++i) {int u, v;cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}dfs(1, 0, 0);for (int i = 1; i <= n; ++i) b[i] = i;sort(b+1, b+1+n, [&](int x, int y){return dep[x] > dep[y];});int ans = 0;for (int i = 1; i <= n; ++i) {if (a[b[i]] <= 0) continue;ans += a[b[i]];dfs(b[i], 0, a[b[i]], 0);}cout << ans << endl;return 0;
}

CF-1249 F.Maximum Weight Subset(贪心)相关推荐

  1. Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp

    传送门 文章目录 题意: 思路: 题意: n≤200n\le200n≤200 思路: 明显的树形dpdpdp,所以考虑一下dpdpdp状态. 这个题状态挺神的..可能是因为我太菜了,看了半天才看懂. ...

  2. 【CF 732E】Sockets(优先队列+贪心)

    [CF 732E]Sockets(优先队列+贪心) 题目大意: n台电脑,m个供电器. 每台电脑和每个供电器都有电量,当电脑i的电量和供电器j电量相同时,可以连接供电. 现在提供变压器,可以连接到供电 ...

  3. CodeFores 665D Simple Subset(贪心)

    D. Simple Subset time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  4. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

  5. CF 1642 F. Two Arrays 随机 + sosdp

    文章目录 题意 思路 传送门 题意 给你nnn个长度为mmm的数组,每个数组都有一个价值wiw_iwi​,让你选出两个数组他们没有交集且价值和最大,如果没有输出−1-1−1. 2≤n≤1e5,1≤m≤ ...

  6. CF 1475 F . Unusual Matrix 思维

    传送门 大体题意:给定两个矩阵a和b,给定一个操作,这个操作可以将a矩阵任意一行或者任意一列取反,问能否将a变成b. 乍一看不是一个很难的题,但是想我这样思维不好的还是看不出来什么东西.让后看到了题解 ...

  7. cf 1504 F. Flip the Cards

    F. Flip the Cards 题意: 这个题你也可以看看,就是一个卡片正反两个数,n个卡片在桌子上摆好,你可以任意移动卡片的位置,也可以翻转卡片(翻转一次消耗1点),最终使得卡片的正面为升序,反 ...

  8. 2017.10.17 CF#441 F题 思考记录

    .果然没有题解做题感觉是不一样的. 这个F题可能是最像往常B题的题了(往常B题就是dp,还一般都不难) 首先这个是|,所以|的数越多,它一定是不降的 那么合法的一定是一个数到一个数往后的数所构成的所有 ...

  9. cf 1450 F The Struggling Contestant

    link 题意:给一长度为n的数组A,求以排列p满足A[pi],A[pi-1]不同,定义每一个排列的权值为abs(pi-pi-1) >1 的i的个数.输出满足条件排列的最小权值.无解输出-1 思 ...

最新文章

  1. form左上角有个锁的符号_第三章 表单笔记
  2. Abbirb120型工业机器人_工业机器人市场深度调研及投资前景预测报告2020-2024年
  3. iOS Sprite Kit教程之场景的切换
  4. eclipse远程调试失败
  5. boost::hana::fold用法的测试程序
  6. jenkins 使用LDAP认证
  7. [坑] IDEA Unable to import maven project 解决办法
  8. Android—Gson原理解析
  9. union共用体(联合体)、宏定义、枚举
  10. 中根遍历二叉查找树所得序列一定是有序序列_数据结构考研学习笔记(九)树、森林...
  11. php ci_controller,php – CodeIgniter 2:如何多次扩展CI_Controller?
  12. 关于SSM项目中配置文件的一些心得
  13. python怎么求中位数_Python求两个有序数组的中位数的几种方法
  14. WPF太阳、地球、月球运动轨迹模拟
  15. 扫描域名和扫描IP的区别
  16. linux 怎样恢复模式,删除Linux的依赖库并进入救援模式恢复
  17. 访问阿里云服务器配置的ftp后,报错227 entering passive mode
  18. 怎样计算机翼升力大小,飞机的升力系数如何计算
  19. 数学史思维导图_8张思维导图揭示:数学应该如何学,才能逆袭为学霸?
  20. length和length()的区别

热门文章

  1. 蓝桥杯历届试题 国王的烦恼(并查集逆序加边+坑)
  2. HTML 5入门学习,源码中全部使用HTML 5标签
  3. apache 的工作模式
  4. android studio插件提升工作效率
  5. 使用命令对象代替switch语句的写法示例
  6. lambda表达式初步
  7. (转)C#网络编程(订立协议和发送文件) - Part.4
  8. SQL注入_1-6_user-agent注入
  9. java redisson_Java使用Redisson分布式锁实现原理
  10. [Python学习] 专题三.字符串的基础知识