想象一下(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)的更多相关文章

  1. 强化学习之五:基于模型的强化学习(Model-based RL)

    本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...

  2. J.K.罗琳女士---《失败的好处和想象的重要性》

    目录 sohu ruanyifeng web sohu http://www.sohu.com/a/166181502_467718 <哈利波特>的作者J.K.罗琳女士在出席一次哈佛大学的 ...

  3. GDAL生成Erdas Imagine

    GDAL原生支持超过100种栅格数据类型,涵盖所有主流GIS与RS数据格式,包括•  ArcInfo grids, ArcSDE raster, Imagine, Idrisi, ENVI, GRAS ...

  4. 重新想象 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 ...

  5. EF并非我们想象的那么智能

    我之前在项目中用EF读取一个视图的数据,页面展示出现重复数据,当时百思不得其解,跟踪代码,数据读取时取到的数据并不是重复,为什么在前台显示就有重复了呢,我当时就在业务层将数据去重,但取到的数据跟数据库 ...

  6. 充满想象力的 JavaScript 物理和重力实验

    在这个列表中挑选了9个物理和重力实验,用来展示 Javascript 的强大.几年前,所有这些实验都必须使用 Java 或 Flash 才能做.在下面这些惊人的例子中,就个人而言,我比较喜欢仿真布料的 ...

  7. 重新想象 Windows 8 Store Apps 系列文章索引

    [源码下载][重新想象 Windows 8.1 Store Apps 系列文章] 重新想象 Windows 8 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...

  8. 重新想象 Windows 8 Store Apps (34) - 通知: Toast Demo, Tile Demo, Badge Demo

    [源码下载] 重新想象 Windows 8 Store Apps (34) - 通知: Toast Demo, Tile Demo, Badge Demo 作者:webabcd 介绍重新想象 Wind ...

  9. 重新想象 Windows 8 Store Apps (35) - 通知: Toast 详解

    [源码下载] 重新想象 Windows 8 Store Apps (35) - 通知: Toast 详解 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通知 Toa ...

随机推荐

  1. zabbix监控系统时间的问题

    分类: 监控 2013-03-19 21:40:11   发现zabbix监控系统时间的一个问题!zabbix监控系统时间用的key是system.localtime,返回当前的系统时间,而配置tig ...

  2. Vue -computed传参数

    vue 中computed想传递参数怎么办? 闭包在这里起到的重要的作用 <input v-model="newItem(key,val)" type="text& ...

  3. ATM-conf-settings

    import os BASE_DIR = os.path.dirname(os.path.dirname(__file__))BASE_DB = os.path.join(BASE_DIR, 'db' ...

  4. 37.VUE学习之-表单的综合运用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  5. 第2章 CentOS7集群环境配置

    目录 2.1 关闭防火墙 2.2 设置固定IP 2.3 修改主机名 2.4 添加用户 2.5 修改用户权限 2.6 新建目录 2.7 安装JDK 1.卸载系统自带的JDK 2.安装JDK 2.8 克隆 ...

  6. 基于Ajax提交formdata数据、错误信息展示和局部钩子、全局钩子的校验。

    formdata重点: 实例化FormData这个类 循环serializeArray可以节省代码量 图片要用$('#id')[0].files[0]来获得 加上contentType:false和p ...

  7. String使用方法详解

    标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作 ...

  8. centos6.4编译hadoop2.4源码

    4.1.环境: 1)Linux 64 位操作系统,CentOS 6.4 版本,VMWare 搭建的虚拟机 2)虚拟机可以联网 4.2.官方编译说明: 解压命令:tar -zxvf hadoop-2.4 ...

  9. 在MAC下使用Robotframework+Selenium2【第一枪】robotframework安装步骤

    最近使用苹果的MAC Pro本本,感受着苹果系统的新鲜,确实让我手忙脚乱一阵,毕竟使用windows系统太长时间了,刚开始用MAC Pro确实感觉别扭,用了一段,发现MAC系统还不错,好了,转入正题. ...

  10. iview框架 两侧弹框 出现第二层弹框 一闪而过的问题

    分析原因:寡人怀疑可能是,两层弹出框 采用的是一个开关值,发生了覆盖 解决方式 是在第二层弹框外套层计时器 源代码如下: 修改后为: