[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 ...
随机推荐
- 将实体类对象数据存入和读取进csv文件(可追加)
前言 最近公司一个新的项目,因为需要存储的数据很少,单独去部署一个数据库去存储该数据显然是不划算的,所以想的是通过存入csv文件中来代替存入数据库中.说干就干. 什么是csv文件 CSV代表逗号分隔值 ...
- 《Kali渗透基础》14. 无线渗透(四)
@ 目录 1:相关工具 1.1:Aircrack-ng 1.1.1:airmon-ng 1.1.2:airodump-ng 1.1.3:aireplay-ng 1.1.4:airolib-ng 1.1 ...
- 一个.NET 7 + DDD + CQRS +React+Vite的实战项目
项目简介 基于SignalR实现聊天通信,支持横向扩展,可支撑上万用户同时在线聊天 后端架构 后端技术栈采用 .NET 7 PostgreSQL (业务数据库) Redis(用于存放热点数据,和支持S ...
- SQL简单使用指南
SQL简单使用指南 SQL(结构化查询语言)是一种用于管理和操作关系型数据库的标准化语言. 数据库概述 数据库是用于存储和组织数据的结构.它由表(表格)组成,每个表都包含多个列和行.以下是SQL中最常 ...
- 【项目源码】JSP超市积分管理系统源码下载
会员积分管理系统的目标是为中小规模的会员积分管理系统的目标是为中小规模的超市提供会员信息管理.会员积分管理以及积分兑换管理的具体解决方案. 网站和积分管理系统采用B/S结构,使用J2EE的技术开发完成 ...
- prometheus 监控实战篇
prometheus 监控 目录 prometheus 监控 1.上传tar包 2.解压到对应文件夹 3.配置开机自启动 4.配置Prometheus 5.black_exporter 监控网站状态 ...
- Navicat连接MySQL,出现2059 - authentication plugin 'caching_sha2_password'的解决方法
cmd(管理员)登录mysql执行如下 ALTER USER 'YOURUSERNAME'@'localhost' IDENTIFIED WITH mysql_native_password BY ' ...
- u-boot启动流程
U-Boot(Universal Bootloader)是一个通用的开源引导加载程序,通常用于嵌入式系统中,负责引导操作系统或加载 Linux 内核等任务.U-Boot的启动流程可以概括为以下几个关键 ...
- 开发app软件成本计算参考
目录 1. 设计成本 2. 前端开发成本 3. 后端开发成本 4. 测试成本 5. 上架试运营成本 app软件开发已成为人们生活中不可或缺的一部分.无论是在娱乐.通讯.信息.健康等方面,都有数不清的a ...
- MySQL系列之MyCat——架构图、准备、安装、配置文件、垂直分表、MyCAT核心特性——分片(水平拆分)、范围分片、枚举分片、Mycat全局表、E-R分片
文章目录 1. MyCAT基础架构图 2. MyCAT基础架构准备 2.1 环境准备: 2.2 删除历史环境: 2.3 创建相关目录初始化数据 2.4 准备配置文件和启动脚本 2.5 修改权限,启动多 ...