第二题 网页浏览

提交文件: webpage.cpp

输入文件: webpage.in

输出文件: webpage.out

时间空间限制: 1 秒, 256 MB

我们在上网时,从一个网页上的链接打开另一个网页有两种方式,一个是直接替换正在浏览的页面,另

一个是在新标签页中打开。如果善用这两种打开方式,是可以节省一些操作的。

今天 Zayin 需要浏览 n 个网页,其中有且仅有一个网页是保存在本地可以点击打开的,其他 n − 1 个网

页都是需要从某个页面的链接里打开的。因此,这 n 个网页的链接关系可以用一棵 n 个节点的有根树表示。

一开始,浏览器里什么标签页也没有,Zayin 可以点击根节点代表的网页,打开第一个标签页,接下来,

Zayin 可以做如下的事情:

• 从当前浏览的网页所含有的链接里选择一个打开,直接替换当前的网页;

• 从当前浏览的网页所含有的链接里选择一个,在新标签页中打开;

• 点击“返回”,当前网页返回被其替换的网页,该操作只能用于“替换打开”的网页;

• 关闭当前网页。

Zayin 可以自行决定浏览顺序。求 Zayin 从空浏览器开始,到最后浏览完全部 n 个网页并全部关闭回到

空浏览器的状态,最少需要多少步操作。

输入格式

第一行一个整数 n,表示需要浏览的网页的数量。

第二行 n 个整数,第 i 个整数 fi 表示第 i 个网页是从哪个网页跳转过来的,如果 fi = −1 则表示该网

页是根网页,需要在初始时点击打开。

输出格式

一行,一个整数,表示最少的操作步数。

样例数据

5
-1 1 2 1 4
7

样例解释

步骤 操作 浏览器拥有的页面

1 点击打开 1 号网页 1

2 从 1 号网页新标签页打开 2 号网页 1, 2

3 从 2 号网页替换打开 3 号网页 1, 3

4 关闭 3 号网页 1

5 从 1 号网页替换打开 4 号网页 4

6 从 4 号网页替换打开 5 号网页 5

7 关闭 5 号网页 无

数据范围

对于所有测试点,\(1 ≤ n ≤ 10^5\)。

测试点 \(n ≤\) 特殊限制
1 ∼ 3 \(7\)
4 \(10^5\) \(f_1 = −1\),其余$ f_i = i − 1$
5 \(10^5\) \(f_1 = −1\),其余$ f_i = 1$
6 ∼ 7 \(10^5\) 每个节点最多只有 5 个子节点
8 ∼ 10 \(10^5\)

首先我们每个网页需要打开一次,删除一次,貌似是两个操作。但是删除这个操作也可以变成打开一个新的标签页,只有叶子节点不能。所以答案为\(n\)加叶子节点的个数。

#include<cstdio>
const int N=1e5+5;
int a[N],f[N],n,cnt;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",f+i);
if(f[i]!=-1)
a[f[i]]=1;
}
for(int i=1;i<=n;i++)
if(!a[i])
++cnt;
printf("%d",cnt+n);
return 0;
}

[GDOIpj222B] 网页浏览的更多相关文章

  1. 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具

    查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...

  2. 网页浏览 infinite scroll效果知识

    infinite scroll 类似一些网站, 例如京东搜索商品, 浏览到最后一页,自动加载新的商品. 一则可以加快首页响应速度, 二则减轻带宽和服务器荷载. 这么多商品信息一次性返回给客户端也是不可 ...

  3. 初识Qt基于http协议网页浏览

    1.新建一个Qt Gui应用,项目名称为http,基类选择为QMainWindow,类名设置为MainWindow. 2.在http.pro文件中的QT  += core gui后添加\ networ ...

  4. 配置jupyter notebook网页浏览

    上一篇博文已经介绍安装了Anaconda3:https://www.cnblogs.com/hello-wei/p/10233192.html jupyter notebook [I 11:33:11 ...

  5. H5云图后台读写CAD文件-在线CAD,网页CAD,网页浏览编辑CAD

    说明 后台提供MxFileConvert.exe程序,它可以将CAD图纸转换成前台能加载显示的格式,程序调用方法见: https://help.mxdraw.com/?pid=32中的"如何 ...

  6. MxDraw云图平台 2021.10.28更新,H5在线CAD,网页CAD,网页浏览编辑DWG

    1. 增加转换CAD文件的outpath参数设置,设置输出文件路径2. 修改转换程序,在 windows server 2010上,没有buf,距到中文路径的文件 ,转换会失败问题3. 修改宋体字体显 ...

  7. 安卓端网页浏览过程中实时更新title的web实现

    $(function () { var scrollTop = 0, //缓存上一次触发scroll的时候的scrollTop值 appendIndex = 0, //由于第23行append这个操作 ...

  8. linux 和 android 源码的 cross reference (即网页浏览代码的引用)

    linux: http://lxr.free-electrons.com/               相当好 android: http://androidxref.com

  9. 【stack】模拟网页浏览 poj 1028

    #include<stdio.h> #include<string.h> int main() { ][]; ]; int i,depth; strcpy(s[]," ...

  10. 我用Python远程探查室友的网页浏览记录,他不愧是成年人!

    过程: 利用Python制作远程查看别人电脑的操作记录,与其它教程类似,都是通过邮件返回. 利用程序得到目标电脑浏览器当中的访问记录,生产一个文本并发送到你自己的邮箱,当然这个整个过程除了你把pyth ...

随机推荐

  1. SpringBoot3集成RocketMq

    标签:RocketMq5.Dashboard: 一.简介 RocketMQ因其架构简单.业务功能丰富.具备极强可扩展性等特点被广泛应用,比如金融业务.互联网.大数据.物联网等领域的业务场景: 二.环境 ...

  2. VA01/VA02/VA03/VA05 销售订单隐藏价格

    1.业务需求 针对用户使用销售订单时,判断是否有权限,没有权限时隐藏销售订单抬头和行项目的价格相关字段 2.增强实现 2.1.隐藏抬头和行项目价格 隐藏抬头和行项目表格中的净值和净价字段 在程序MV4 ...

  3. Go 并发编程 - runtime 协程调度(三)

    Go Runtime Go runtime 可以形象的理解为 Go 程序运行时的环境,类似于 JVM.不同于 JVM 的是,Go 的 runtime 与业务程序直接打包在一块,是一个可执行文件,直接运 ...

  4. ptp 时钟同步

    转载请注明出处: PTP(Precision Time Protocol)的功能可以帮助实现网络中各个节点的时钟同步,以提供更精确的时间参考. 作用: 时钟同步:通过PTP协议,在网络中不同节点之间实 ...

  5. 4.3 IAT Hook 挂钩技术

    IAT(Import Address Table)Hook是一种针对Windows操作系统的API Hooking 技术,用于修改应用程序对动态链接库(DLL)中导入函数的调用.IAT是一个数据结构, ...

  6. Java爬虫实战系列2——动手写爬虫初体验

    在上面的章节中,我们介绍了几个目前比较活跃的Java爬虫框架.在今天的章节中,我们会参考开源爬虫框架,开发我们自己的Java爬虫软件. 首先,我们下载本章节要使用到的源代码,本章节主要提供了基于HTT ...

  7. 23年9月最新微信小程序 手机号授权 (uniapp+盛派SDK) 帮你踩坑

    一.背景 微信小程序手机号授权接口,从23年8月开始实行付费验证. 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/op ...

  8. ReactPortals传送门

    ReactPortals传送门 React Portals提供了一种将子节点渲染到父组件以外的DOM节点的解决方案,即允许将JSX作为children渲染至DOM的不同部分,最常见用例是子组件需要从视 ...

  9. CIC滤波器仿真与实验过程及结果记录

    整理于2023-10-08 0.0 前言: 前面介绍了使用matlab中的Filter Designer工具箱进行CIC抽取滤波器设计的仿真过程与结果.下面在前面的基础上针对现有的[正点原子ZYNQ] ...

  10. Batch Normalization 批量归一化的运算过程

    Batch Normalization 批量归一化 具体的运算过程: 假设经过卷积计算过后得到的feature map的尺寸为 2*3*2*2. 其中2代表的是batch的大小,3代表的是通道chan ...