CodeForces - 622E Ants in Leaves 贪心
题目链接
题意:
给出一颗根节点为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 贪心相关推荐
- codeforces Gym 100338E Numbers (贪心,实现)
题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...
- Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟
传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个贪心策略就是每次都找一个叶子节点最多的点,让后删掉他的kkk个叶子节点,现在我们就来考虑如何模拟这个过程. 我们整一个vector<s ...
- Codeforces 671E Organizing a Race (贪心、线段树)
题目链接 https://codeforces.com/contest/671/problem/E 题解 完全不会做--基本是抄lk的代码 ruogu的题解: https://www.luogu.co ...
- CodeForces - 1529E Trees of Tranquillity(贪心+线段树)
题目链接:https://vjudge.net/problem/CodeForces-1529E 题目大意:给出两棵根节点为 111 的树,分别称为 AAA 树和 BBB 树,现在通过两棵树可以构造出 ...
- [CodeForces 1603C] Extreme Extension(贪心 + 数论分块优化dp)
problem CodeForces solution observation1:\text{observation1}:observation1: 对于一个非空子段 [l,r][l,r][l,r], ...
- codeforces 416C C. Booking System(贪心)
题目链接: codeforces 416C 题目大意: 给出n个请求,每个请求包括客人数量和支付金额,再给出m个桌子,包括桌子大小,问如何安排才能最大盈利.给出最大盈利和一个能够最大盈利的方案. 题目 ...
- Codeforces 540B School Marks 【贪心构造】
题目链接:Codeforces 540B School Marks Little Vova studies programming in an elite school. Vova and his c ...
- CodeForces 508E Arthur and Brackets 贪心
题目: E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input s ...
- Codeforces 797C Minimal string【贪心】
题意: 给出了字符串s的内容,字符串t,u初始默认为空,允许做两种操作: 1.把s字符串第一个字符转移到t字符串最后. 2.把t字符串最后一个字符转移到u字符串最后. 最后要求s.t字符串都为空,问u ...
最新文章
- 在VMware ESX Server使用华为存储
- 自己写分布式配置中心(上篇)- 单机模式
- linux 端口tnpl,Linux和Windows端口占用情况查看
- (转)函数式编程实战教程(Python版)
- XCode Installed!
- 场景分析:用户登录界面场景分析
- 理解Java虚拟机体系结构
- NAND Flash 芯片测试
- 11 个很少人知道但很有用的 Linux 命令
- 「我们只投这两种AI公司」, 三位局内人首次公开AI投资的技术与产业标准
- 忘记teamviewer密码怎么办?
- web服务器、数据库服务器
- SECS/GEM EAP 设备自动化功能原理和设计方案
- canvas压缩图片或者进行视频抓拍
- 【python】批量实现modis数据的辐射定标,大气校正及地形校正
- 常用射频器件性能指标
- EasyExcel CellWriteHandler注入CellStyle不生效问题
- C8051F310 模拟C2协议浅析与实现
- CSS----transform:rotate 旋转基本使用方法
- 设计模式(八)桥梁模式(Bridge)