第二题 网页浏览

提交文件: 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. Airtest的iOS实用接口介绍

    1. 前言 前段时间Airtest更新了1.3.0.1版本,里面涉及非常多的iOS功能新增和改动,今天想详细跟大家聊一下里面的iOS设备接口. PS:本文示例均使用本地连接的iOS设备,Airtest ...

  2. 使用API调用获取商品数据的完整方案

    ​ 在电子商务应用程序中,商品详情接口是不可或缺的一部分.它用于从电商平台或自己的数据库中获取商品数据,并将其提供给应用程序的其他部分使用.本文将详细介绍如何设计一个完整的商品详情接口方案,其中包括使 ...

  3. 云上的甜蜜早安:腾讯云云函数助力PHP打造女友专属每日推送

    用腾讯云的云函数做一个微信公众号早安,每天定时发送早安给你的女朋友! 1.首先我们登录腾讯云,在搜索栏搜索云函数,或直接用这个链接进入curl.qcloud.com/Td0IkpmD 2.进入云函数, ...

  4. react18-webchat网页聊天实例|React Hooks+Arco Design仿微信桌面端

    React18 Hooks+Arco-Design+Zustand仿微信客户端聊天ReactWebchat. react18-webchat基于react18+vite4.x+arco-design+ ...

  5. Solution -「洛谷 P5610」「YunoOI 2013」大学

    Description Link. 区间查 \(x\) 的倍数并除掉,区间查和. Solution 平衡树. 首先有个基本的想法就是按 \(a_{i}\) 开平衡树,即对于每个 \(a_{i}\) 都 ...

  6. MySQL高级13-MySQL管理工具

    一.系统数据库 MySQL数据库安装完成后,自带了四个数据库: mysql数据库:存储MySQL服务器正常运行所需要的各种信息如时区.主从.用户.权限等 infomation_schema:提供了访问 ...

  7. 《流畅的Python》 读书笔记 231007(第二章第一部分)

    第2章 数据结构 ABC语言是Python的爸爸~ 很多点子在现在看来都很有 Python 风格:序列的泛型操作.内置的元组和映射类型.用缩进来架构的源码.无需变量声明的强类型 不管是哪种数据结构,字 ...

  8. VS Code SSH

    VS Code SSH 连接需要下载 VS Code Server,这是因为 VS Code Server 是在远程服务器上运行的,而不是在本地计算机上运行的.每次连接到不同的远程服务器时,都需要下载 ...

  9. Unexpected keys "@@dva", "user" found in preloadedState argument passed to createStore. Expected to find one of the known reducer keys instead: "router", "loading". Unexpected keys will be ignored.

    Please use `require("history").DOMUtils` instead of `require("history/DOMUtils") ...

  10. SQL-报错注入

    updatexml报错注入 updatexml (XML_document, XPath_string, new_value): 第一个参数:XML_document是String格式,为XML文档对 ...