【CodeM初赛B轮】A

题目大意:给你一棵树,起初所有点都是白色的,你每次都能选择一个白点i,将这个点i到根路径上的所有到i的距离<k[i]的点都染成黑色(根和i也算,已经被染成黑色的点还是黑色)。问最少需要染多少次才能将所有点都变黑。

n<=100000

题解:显然贪心啊,但是我一开始居然写了树剖。。。

因为叶子节点是一定要染的,所以我们可以将所有点按DFS序排序,从后往前染。记录vis[i],表示之前已经将所有到i的距离<=vis[i]的点染成了黑色;再维护mx[i],表示之前染过的点最多能将到i的距离<=mx[i]的点染成黑色。然后用当前的vis和mx去更新fa就行了。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn=100010;
int n,cnt,ans;
int fa[maxn],tag[maxn],k[maxn],p[maxn],head[maxn],nxt[maxn],to[maxn],ml[maxn];
void add(int a,int b)
{to[cnt]=b,nxt[cnt]=head[a],head[a]=cnt++;
}
void dfs(int x)
{p[++p[0]]=x;for(int i=head[x];i!=-1;i=nxt[i])    dfs(to[i]);
}
int main()
{scanf("%d",&n);int i,a;memset(head,-1,sizeof(head));for(i=2;i<=n;i++) scanf("%d",&fa[i]),add(fa[i],i);for(i=1;i<=n;i++)  scanf("%d",&k[i]);dfs(1);for(i=n;i>=1;i--){a=p[i];ml[a]=max(ml[a],k[a]);if(!tag[a])    tag[a]=ml[a],ans++;ml[fa[a]]=max(ml[fa[a]],ml[a]-1),tag[fa[a]]=max(tag[fa[a]],tag[a]-1);}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/CQzhangyu/p/7077212.html

【CodeM初赛B轮】A 贪心相关推荐

  1. 2018 CodeM初赛B轮:D.神奇盘子

    链接:https://www.nowcoder.com/acm/contest/151/D 来源:牛客网 题目描述 有一个神奇的盘子,形状为圆形.盘子上面爬着一个大象(视作一个点).由于现实的扭曲,当 ...

  2. CodeM美团2018初赛A轮 题目一

    CodeM美团2018初赛A轮 题目一 描述 小美想要在电视上看电影,我们知道在电视上搜索电影可以通过搜索电影名字首字母缩写得到,通过首字母搜索电影的界面由一个九宫格组成,如下图: 光标初始在这个九宫 ...

  3. 2018 codeM 初赛A卷 第二题 棋盘题 -java

    import java.util.Scanner; /*** Created by 90684 on 2018/6/10.*/ // codeM 初赛A卷 第二题/*贪心算法 该题.start[i] ...

  4. #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

    #6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...

  5. CodeM2018美团 初赛A轮 题目二 下棋

    CodeM2018美团 初赛A轮 题目二 下棋 [编程|1000分] 下棋 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C/C++ 262144K,其他语言 524288K 64bit IO ...

  6. CodeM2018 初赛A轮 第1,2题

    CodeM2018 初赛A轮 今晚参加了CodeM2018初赛A,结果只做对了两题-- 第1题:求一段字符串对应手机按键移动最少次数. 送分题非常简单,我的解法是一个数组保存A-Z的按键,一个二维数组 ...

  7. LibreOJ #6177. 「美团 CodeM 初赛 Round B」送外卖2【状压DP】

    「美团 CodeM 初赛 Round B」送外卖2 内存限制:32 MiB 时间限制:200 ms 题目描述 一 张 n 个 点 m 条 有 向 边 的 图 上 , 有 q 个 配 送 需 求 , 需 ...

  8. 2021年CSP-J入门级初赛(第一轮)真题讲解

    2017年NOIP普及组初赛真题讲解 2017年NOIP普及组初赛真题讲解_哔哩哔哩_bilibili 2018年NOIP普及组初赛真题讲解 2018年NOIP普及组初赛真题讲解_哔哩哔哩_bilib ...

  9. CodeM美团点评编程大赛 初赛B轮 A 黑白树 贪心 E 子串 暴力

    A题类似想到给多个区间,求最少多少个区间可以覆盖全部的问题,求法就是从当前这步能够到达的区间里,选一个下一步能到的最大值,对于本题,区别一是树形结构,不是一维的直线了,区别二是点都是连续的,不是离散的 ...

最新文章

  1. 这所211大学,迎来80后女科学家任副校长
  2. 独家 | 可预测COVID-19病例峰值的新算法
  3. 5.1.6 假脱机技术
  4. 《数据结构》c语言版学习笔记——其他链表(线性表的链式存储结构Part2)
  5. 存储过程排版工具_安利一款比Evernote更为实用的云笔记工具,不容错过
  6. java如何保证redis设置过期时间的原子性_分布式锁用 Redis 还是 Zookeeper
  7. linux重启网卡的命令行,linux系统重启网卡命令
  8. antlr 可以用java写吗_java – 我们可以用ANTLR定义一个非上下文语法吗?
  9. 【Flink】Flink时间之internalTimerService初始化
  10. R语言中如何查看已安装的R包
  11. Halcon算子threshold、dyn_threshold、binary_threshold、auto_threshold、fast_threshold、var_threshold
  12. 判定两个矩形框是否相交
  13. Vivado IP核fifo使用指南
  14. 江苏省职称计算机word2003教材,[205]Word 2003中文字处理 考试大纲
  15. 安大计算机学院汤进,“CCF合肥庐州论坛——认知计算研讨会”成功举办
  16. 关于动物识别论文的阅读笔记——青鳉鱼的个体识别和“面部反转效应”
  17. MOOS通信框架初探(一)
  18. 一文读懂SpringBoot定时任务
  19. 如何阻止某款软件访问网络
  20. matlab在读取或者导入excel时,服务器出现意外情况

热门文章

  1. GT24L24A2W16 字库Flash的读写
  2. 软件测试实战:Day02-完成黑马Ego微商小程序的前后台本地部署
  3. AmbiguityVis: Visualization of Ambiguity in Graph Layouts
  4. 算法:输出10以内数的阶乘的结果。
  5. 高效能人士的七个习惯-读后感
  6. HDU 2547 无剑无我
  7. 华中首家美高梅酒店落地武汉;洲际酒店集团与蚂蚁集团达成合作 | 美通企业日报...
  8. 数据结构java版之《数组》
  9. 【NLP】2 Distributed Word Representation
  10. 书店售书管理系统(二)