想象一下(imagine)
想象一下(imagine)
题目描述
我们高大的老班举起了有半个他那么高的三角板,说:“你们想象一下——”
于是你就陷入了想象……
有一棵n个点的树,每个叶子节点上都有一个人,他们按照每秒钟走一条边的速度向树根(节点1)前进。
你可以运用k次想象之力,让某一个节点(除了根节点)上的所有人瞬间(耗时为0)转移到这个节点的父亲上。
你想知道最少需要多少时间,所有人可以到达根节点。
输入
输入的第一行包含两个整数n,k,含义见问题描述。
接下来n-1行,第i行一个整数fai,表示节点i的父亲为fai。
输出
输出一行一个整数,表示所有人到达根节点最少需要的时间。
样例输入
<span style="color:#333333"><span style="color:#333333">【样例1输入】
6 2
1
2
2
2
4
【样例2输入】
3 2
1
2
</span></span>
样例输出
<span style="color:#333333"><span style="color:#333333">【样例1输出】
1
【样例2输出】
0</span></span>
提示
【样例1说明】
一开始,在节点3,5,6上分别有一个人,我们称他们为A,B,C。
时刻0,在节点6运用想象之力,A到达节点4。
第1秒,A,B,C走到节点2。
时刻1,在节点2运用想象之力,A,B,C到达节点1,即目的地。
共用时1秒。
【样例2说明】
一开始只有节点3上有一个人。
时刻0,在节点3运用想象之力,这个人到达节点2;
此时仍然为时刻0,在节点2运用想象之力,这个人到达节点1。
【子任务】
|
测试点 |
n |
k |
特殊性质 |
|
1 |
≤8 |
<n |
无 |
|
2~4 |
≤100 |
||
|
5~8 |
≤3000 |
||
|
9 |
≤500000 |
=1 |
|
|
10 |
<n |
树是一条链 |
|
|
11~20 |
无 |
solution
考场时的想法:答案是有单调性的,那我二分一个mid,然后把所有点往上跳mid步
在用树形dp看看是否合法
效率O(nlog2) 90分
然而这题有O(n)做法
贪心把所有叶子往上跳,如果剩下的边不足k条,就break
因为想象应该越晚用越好(一次拉多个)
好吧说实话我也不太会证
1.一个节点最多只会使用1次想象之力(当最后一个人经过它的时候)
2.对于一个人来说,对他用的想象之力一定越靠近根越好(尽可能多的与其它点共用)。
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define maxn 500005
using namespace std;
int n,K,f[maxn],flag[maxn],s[maxn],ans;
struct node{
int x,bs;
};
queue<node>q;
int main(){
cin>>n>>K;
for(int i=2;i<=n;i++){
scanf("%d",&f[i]);
s[f[i]]++;
}
for(int i=1;i<=n;i++)if(!s[i])q.push(node{i,0});
int sum=n-1;if(K==sum){puts("0");return 0;}
while(!q.empty()){
node a=q.front();q.pop();
sum--;if(sum<=K){ans=a.bs+1;break;}
s[f[a.x]]--;
if(!s[f[a.x]]){
node ne;ne.x=f[a.x];ne.bs=a.bs+1;
q.push(ne);
}
}
cout<<ans<<endl;
return 0;
}
想象一下(imagine)的更多相关文章
- 强化学习之五:基于模型的强化学习(Model-based RL)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- J.K.罗琳女士---《失败的好处和想象的重要性》
目录 sohu ruanyifeng web sohu http://www.sohu.com/a/166181502_467718 <哈利波特>的作者J.K.罗琳女士在出席一次哈佛大学的 ...
- GDAL生成Erdas Imagine
GDAL原生支持超过100种栅格数据类型,涵盖所有主流GIS与RS数据格式,包括• ArcInfo grids, ArcSDE raster, Imagine, Idrisi, ENVI, GRAS ...
- 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图
[源码下载] 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Co ...
- EF并非我们想象的那么智能
我之前在项目中用EF读取一个视图的数据,页面展示出现重复数据,当时百思不得其解,跟踪代码,数据读取时取到的数据并不是重复,为什么在前台显示就有重复了呢,我当时就在业务层将数据去重,但取到的数据跟数据库 ...
- 充满想象力的 JavaScript 物理和重力实验
在这个列表中挑选了9个物理和重力实验,用来展示 Javascript 的强大.几年前,所有这些实验都必须使用 Java 或 Flash 才能做.在下面这些惊人的例子中,就个人而言,我比较喜欢仿真布料的 ...
- 重新想象 Windows 8 Store Apps 系列文章索引
[源码下载][重新想象 Windows 8.1 Store Apps 系列文章] 重新想象 Windows 8 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...
- 重新想象 Windows 8 Store Apps (34) - 通知: Toast Demo, Tile Demo, Badge Demo
[源码下载] 重新想象 Windows 8 Store Apps (34) - 通知: Toast Demo, Tile Demo, Badge Demo 作者:webabcd 介绍重新想象 Wind ...
- 重新想象 Windows 8 Store Apps (35) - 通知: Toast 详解
[源码下载] 重新想象 Windows 8 Store Apps (35) - 通知: Toast 详解 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通知 Toa ...
随机推荐
- CentOS替换系统自带JDK
1.解压jdk安装包到/opt 下 /opt/jdk1.8.0_181 2.编辑/etc/profile, 增加如下内容 export JAVA_HOME=/opt/jdk1.8.0_181expor ...
- sqlldr将txt导入oracle数据库
注意事项: 1.userid 和 control关键字不要缺少: 2.注意数据库格式:test/test@数据库IP:1521/Oracle8,最后一个是tnsnames中的service_name, ...
- c# 科学计数法值转换成正常值,返回字符串
/// <summary> /// 科学计数法值转换成正常值 /// </summary> /// <param name="value">&l ...
- java 字符串中是否有数字
http://www.cnblogs.com/zhangj95/p/4198822.html http://www.cnblogs.com/sunzn/archive/2013/07/12/31865 ...
- 循环 -----JavaScript
本文摘要:http://www.liaoxuefeng.com/ JavaScript的循环有两种,一种是for循环,通过初始条件.结束条件和递增条件来循环执行语句块: var x = 0; var ...
- 更改 Linux 语言为中文
查看当前系统语言环境: echo $LANG 查看安了哪些中文语言包 locale -a |grep "zh_CN" 没有输出,说明没有安装,输入下面的命令安装 ...
- mysql 查询出 n小时 以前的数据
select * FROM biaoming WHERE TIMESTAMPDIFF(SECOND ,CREATE_TIME,now() ) > 3*60*60
- js数组中去重对象
var allCourses = new Array();var coursesId = new Array();function findCourses() { Courses.data().eac ...
- python之质数
质数(prime number)又称素数,有无限个 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 示例: num=[]; i=2 for i in range(2,100): j= ...
- 关于poi的坑
背景故事 今天遇上一个坑,关于poi公式计算结果出错的问题,自己打断点debug了半天,虽然没彻底搞清楚为啥不行,但所幸找到了解决办法. 干货 下面不废话,直接贴干货,原先的公式处理代码如下: fin ...