[GDOIpj222B] 网页浏览
第二题 网页浏览
提交文件: 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] 网页浏览的更多相关文章
- 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具
查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...
- 网页浏览 infinite scroll效果知识
infinite scroll 类似一些网站, 例如京东搜索商品, 浏览到最后一页,自动加载新的商品. 一则可以加快首页响应速度, 二则减轻带宽和服务器荷载. 这么多商品信息一次性返回给客户端也是不可 ...
- 初识Qt基于http协议网页浏览
1.新建一个Qt Gui应用,项目名称为http,基类选择为QMainWindow,类名设置为MainWindow. 2.在http.pro文件中的QT += core gui后添加\ networ ...
- 配置jupyter notebook网页浏览
上一篇博文已经介绍安装了Anaconda3:https://www.cnblogs.com/hello-wei/p/10233192.html jupyter notebook [I 11:33:11 ...
- H5云图后台读写CAD文件-在线CAD,网页CAD,网页浏览编辑CAD
说明 后台提供MxFileConvert.exe程序,它可以将CAD图纸转换成前台能加载显示的格式,程序调用方法见: https://help.mxdraw.com/?pid=32中的"如何 ...
- MxDraw云图平台 2021.10.28更新,H5在线CAD,网页CAD,网页浏览编辑DWG
1. 增加转换CAD文件的outpath参数设置,设置输出文件路径2. 修改转换程序,在 windows server 2010上,没有buf,距到中文路径的文件 ,转换会失败问题3. 修改宋体字体显 ...
- 安卓端网页浏览过程中实时更新title的web实现
$(function () { var scrollTop = 0, //缓存上一次触发scroll的时候的scrollTop值 appendIndex = 0, //由于第23行append这个操作 ...
- linux 和 android 源码的 cross reference (即网页浏览代码的引用)
linux: http://lxr.free-electrons.com/ 相当好 android: http://androidxref.com
- 【stack】模拟网页浏览 poj 1028
#include<stdio.h> #include<string.h> int main() { ][]; ]; int i,depth; strcpy(s[]," ...
- 我用Python远程探查室友的网页浏览记录,他不愧是成年人!
过程: 利用Python制作远程查看别人电脑的操作记录,与其它教程类似,都是通过邮件返回. 利用程序得到目标电脑浏览器当中的访问记录,生产一个文本并发送到你自己的邮箱,当然这个整个过程除了你把pyth ...
随机推荐
- U盘目录穿越获取车机SHELL - 分析与复现
github上破解日系车机的文章 - https://github.com/ea/bosch_headunit_root 其中有利用 U 盘获取车机 shell 的操作 主要根据下面这篇文章进行环境搭 ...
- ipmitool配置机器的BMC
一.设置IP地址 1.确定操作对象 #ipmitool mc info 输出中"Device Revision"是命令的操作对象 2.设置BMC IP # ipmitool -I ...
- centos8环境基本优化
centos8环境基本优化 目录 centos8环境基本优化 1.防火墙优化 2.源优化: 方案1.更换阿里源 方案2.使用centos8.5 源 安装epel源 3.ssh连接慢解决 4.关闭公网, ...
- flutter的json转dart model问题
原文链接 原文链接 Preface 最近在做一个app,以后续用来找工作可以拿出来看看. 试试自己到产品设计能力,前后端能力等等. 中间遇到到一些有值得记录的点全部记录在此. Content json ...
- redis基本数据类型 SortedSet
SortedSet命令练习 将班级的下列学生得分存入Redis的SortedSet中:Jack 85, Lucy 89, Rose 82, Tom 95,Jerry 78, Amy 92, Miles ...
- 什么是vfs以及它的作用
VFS(Virtual File System,虚拟文件系统)是计算机操作系统中的一个概念,它提供了一个统一的抽象层,使得操作系统可以支持不同的文件系统类型和存储设备,而不需要直接与每个文件系统进行交 ...
- 如何配置.h头文件include“”相对路径
编译工程时,找的是当前main.c文件下的.h文件,如果当前路径下没有就会报错,当前路径用.\表示,上一级目录用..\表示. 如果你的main.h文件在main.c的上一级目录中Include 文件夹 ...
- Redis面试——Redis面试精华知识
从:Redis 使用场景与介绍 -> 数据结构与简单使用 -> 小功能大用处 -> 持久化.主从同步与缓存设计 -> 知识拓展 ,并且分析典型场景下常见的问题,并结合实战演练, ...
- 创业团队建设与管理mooc【第二次中期测验】
mo'o 第二次中期测验 返回 已经超过规定的测试次数或提交截止时间已过.你可以作为自我学习进行测验,但提交的结果将无法获得学分. 1 单选(2分) PDCA循环中的P是指什么? 得分/总分 A. 处 ...
- MySQL快速导入千万条数据(1)
目录 一.命令行导入方式 二.LOAD DATA导入方式 对于传统的关系数据库如oracle,在大量数据导入方面的效率,我们一般有一个大概的认知,即1分钟以内可以导入千万条数据,而对于MySQL数据库 ...