题目链接

题意:

   给出一颗根节点为1的树,树的每个叶子结点都有一只蚂蚁,现在所有蚂蚁要到根节点1去问最少时间多少,
每秒钟蚂蚁移动一个结点,每个结点除根节点外只能有一个蚂蚁(可以同时有多个蚂蚁到达根节点)。
思路:
   这个题的话,看到了是树.还是个E题,一般会去想树形dp,可是仔细一想的话其实贪心是可以解决的.由于可以从一号点所有的子孩子同时到达1(不阻塞),那么我们只需要找到1号点所有的孩子所分别构成的子树中,到根节点最长的时间是多少,最后在维护这个最大值就可以啦.我们对于每一个子树求出其叶子节点的深度,然后按照从小到大排序,对于当前的叶子节点到达根节点的时间,与前一个+1取最大值.(加1是因为当两个叶子到根节点的时间相同,即深度相同时需要阻塞一秒钟),然后维护整体最大值就可以了。num[i]=max(num[i-1]+1,num[i]);
   
   
#include<bits/stdc++.h>
#define Ri(a) scanf("%d", &a)
#define Rl(a) scanf("%lld", &a)
#define Rf(a) scanf("%lf", &a)
#define Rs(a) scanf("%s", a)
#define Pi(a) printf("%d\n", (a))
#define Pf(a) printf("%lf\n", (a))
#define Pl(a) printf("%lld\n", (a))
#define Ps(a) printf("%s\n", (a))
#define W(a) while(a--)
#define CLR(a, b) memset(a, (b), sizeof(a))
#define MOD 1000000007
#define inf 0x3f3f3f3f
#define pb push_back
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
int n;
int num[5*maxn];
vector<int>vt[5*maxn];
int k;
int book[5*maxn];
void dfs(int x,int deep)
{book[x]=1;if(vt[x].size()==1){num[k++]=deep;//printf("%d ",x);//Pi(deep);return ;}for(int i=0;i<vt[x].size();i++){int v=vt[x][i];if(!book[v]){  dfs(v,deep+1);} }return ;
}
int main()
{int x,y;Ri(n);for(int i=1;i<n;i++){Ri(x),Ri(y);vt[x].pb(y);vt[y].pb(x); }//puts("");int ans=0;CLR(book,0);CLR(num,0);book[1]=1;for(int i=0;i<vt[1].size();i++){k=0;int v=vt[1][i];//cout<<v<<' '<<endl;dfs(v,1);sort(num,num+k);for(int j=1;j<k;j++){num[j]=max(num[j-1]+1,num[j]);}ans=max(ans,num[k-1]);}Pi(ans);return 0;}
   
												

CodeForces - 622E Ants in Leaves 贪心相关推荐

  1. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  2. Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟

    传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个贪心策略就是每次都找一个叶子节点最多的点,让后删掉他的kkk个叶子节点,现在我们就来考虑如何模拟这个过程. 我们整一个vector<s ...

  3. Codeforces 671E Organizing a Race (贪心、线段树)

    题目链接 https://codeforces.com/contest/671/problem/E 题解 完全不会做--基本是抄lk的代码 ruogu的题解: https://www.luogu.co ...

  4. CodeForces - 1529E Trees of Tranquillity(贪心+线段树)

    题目链接:https://vjudge.net/problem/CodeForces-1529E 题目大意:给出两棵根节点为 111 的树,分别称为 AAA 树和 BBB 树,现在通过两棵树可以构造出 ...

  5. [CodeForces 1603C] Extreme Extension(贪心 + 数论分块优化dp)

    problem CodeForces solution observation1:\text{observation1}:observation1: 对于一个非空子段 [l,r][l,r][l,r], ...

  6. codeforces 416C C. Booking System(贪心)

    题目链接: codeforces 416C 题目大意: 给出n个请求,每个请求包括客人数量和支付金额,再给出m个桌子,包括桌子大小,问如何安排才能最大盈利.给出最大盈利和一个能够最大盈利的方案. 题目 ...

  7. Codeforces 540B School Marks 【贪心构造】

    题目链接:Codeforces 540B School Marks Little Vova studies programming in an elite school. Vova and his c ...

  8. CodeForces 508E Arthur and Brackets 贪心

    题目: E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input s ...

  9. Codeforces 797C Minimal string【贪心】

    题意: 给出了字符串s的内容,字符串t,u初始默认为空,允许做两种操作: 1.把s字符串第一个字符转移到t字符串最后. 2.把t字符串最后一个字符转移到u字符串最后. 最后要求s.t字符串都为空,问u ...

最新文章

  1. 在VMware ESX Server使用华为存储
  2. 自己写分布式配置中心(上篇)- 单机模式
  3. linux 端口tnpl,Linux和Windows端口占用情况查看
  4. (转)函数式编程实战教程(Python版)
  5. XCode Installed!
  6. 场景分析:用户登录界面场景分析
  7. 理解Java虚拟机体系结构
  8. NAND Flash 芯片测试
  9. 11 个很少人知道但很有用的 Linux 命令
  10. 「我们只投这两种AI公司」, 三位局内人首次公开AI投资的技术与产业标准
  11. 忘记teamviewer密码怎么办?
  12. web服务器、数据库服务器
  13. SECS/GEM EAP 设备自动化功能原理和设计方案
  14. canvas压缩图片或者进行视频抓拍
  15. 【python】批量实现modis数据的辐射定标,大气校正及地形校正
  16. 常用射频器件性能指标
  17. EasyExcel CellWriteHandler注入CellStyle不生效问题
  18. C8051F310 模拟C2协议浅析与实现
  19. CSS----transform:rotate 旋转基本使用方法
  20. 设计模式(八)桥梁模式(Bridge)

热门文章

  1. Oracle以周五为一周的第一天统计数量
  2. SQL大批量删除数据
  3. weakreference 用法
  4. Mysql之数据库备份与恢复
  5. mosh operators
  6. Python 五种图片相似度比较方法
  7. vb.net按式样比较字符串
  8. 全国计算机二进制计算原理,二进制的运算方法
  9. unity接在线科大讯飞语音合成(Windows)
  10. 结构型模式---修饰器模式