【算法训练营】周测1

清华大学驭风计划课程链接 

学堂在线 - 精品在线课程学习平台 (xuetangx.com)

如果需要答案代码可以私聊博主

有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~

考题11-1


题目描述

有一个初始时为空的序列,你的任务是维护这个序列,需要进行的各种操作的表示与意义如下:

  • 1 k x: 在序列末尾插入 k个值都为 x 的数;
  • 2 k: 删除序列末尾的 k个数,若序列已不足 k 个数,则删除序列中全部的数。

每次操作后,求序列的众数的值。一个序列的众数定义为该数列中出现次数最多的数,若出现次数最多的数有多种,取其中数值最小的数。

输入格式

从标准输入读入数据。

输入第一行为一个正整数 q,表示操作次数。

接下来 q 行描述依次进行的操作,每行描述一个操作,每个操作的输入方式同题目描述。

输出格式

输出到标准输出。

对于每个操作,输出操作完成后序列的众数(若序列为空则输出 -1),并换行。

样例1输入

4
1 2 1
1 3 2
2 1
2 5

样例1输出

1
2
1
-1

样例1解释

第 1 次操作后,序列为 1 1,众数为 1。

第 2 次操作后,序列为 1 1 2 2 2,1 出现了 2 次,2 出现了 3 次,众数为 2。

第 3 次操作后,序列为 1 1 2 2,两种数都出现了 2 次,取较小的 1。

第 4 次操作后,序列为空,输出 -1。

样例2

见题目目录下的 2.in 与 2.ans

样例文件点此下载。

子任务

考题8-1


题目描述

实现一个双向链表,支持以下操作:

  1. split_succ(x):将 x 与 x 的后继(后一个)分离,若 x 没有后继,输出 no,否则输出 yes
  2. split_prev(x):将 x 与 x 的前驱(前一个)分离,若 x 没有前驱,输出 no,否则输出 yes
  3. link(x, y):将 x 接到 y 的前面,即 x 是 y 的前驱,y 是 x 的后继,若 x 已经有后继或者 y 已经有前驱,输出 no,否则输出 yes
  4. visit_succ(x):从 x 开始,一直按照后继访问下去,直到回到 x 或者没有后继为止,输出经过的所有节点编号
  5. visit_prev(x):从 x 开始,一直按照前驱访问下去,直到回到 x 或者没有前驱为止,输出经过的所有节点编号

以上的 x 均为节点编号,一共有 n 个节点,编号从 1 到 n。

一开始 n 个节点的前驱、后继均为空,也就是每个节点都是独立的节点。

输入格式

第一行两个正整数 n, m,接下来有 m 行,每行表示一个操作,格式见样例

输出格式

依次输出 m 行,每行代表一个操作的结果,格式见样例

样例 1 输入

4 15
split_succ 1
split_prev 2
link 1 2
visit_succ 1
link 2 3 
link 1 4
visit_succ 1
visit_succ 2
visit_prev 1
link 3 1
visit_prev 1
link 4 1
visit_succ 1
visit_succ 2
visit_succ 3

样例 1 输出

no
no
yes
1 2
yes
no
1 2 3
2 3
1
yes
1 3 2
no
1 2 3
2 3 1
3 1 2

样例 2 和 样例 3

点击下载

数据范围

对于 60% 的数据,1 ≤ n, m ≤ 100;

对于全部 100% 的数据,1 ≤ n, m ≤ 1,000。

时间限制:2 s

空间限制:512 MB

考题6-1


题意

输入

输出

每组数据输出一行,若该组数据的两个二叉树结构相同,输出 yes,否则输出 no。

样例 1 输入

2
3
1 2
-1 -1
-1 -1
2 1
-1 -1
-1 -1
3
1 -1
2 -1
-1 -1
-1 1
2 -1
-1 -1

样例 1 输出

yes
no

样例 1 解释

第一个数据是 yes,如图

解释一下第一个数据的二叉树,数据是这样的

3      // 有 3 个点
1 2    // 二叉树 a 的 0 号点左孩子为 1,右孩子为 2
-1 -1  // 二叉树 a 的 1 号点左孩子为空,右孩子为空
-1 -1  // 二叉树 a 的 2 号点左孩子为空,右孩子为空
2 1    // 二叉树 b 的 0 号点左孩子为 2,右孩子为 1
-1 -1  // 二叉树 b 的 1 号点左孩子为空,右孩子为空
-1 -1  // 二叉树 b 的 2 号点左孩子为空,右孩子为空

第二个数据是 no。

样例 2 和 样例 3

点击下载

数据范围

  • 50
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
邓俊辉教授是计算机科学与技术领域著名的教育家和研究者。他在清华大学担任教授,并负责计算机算法与理论方向的研究和教学工作。邓俊辉教授是国计算机学会副理事长、国际著名科技出版社Springer国系列丛书主编、IEICE China Communications主编、Journal of Internet Technology编委、《数据结构算法教程》作者等。 在邓俊辉教授的指导下,他办了多次Dijkstra算法训练营,旨在培养学生对于算法学习的兴趣与能力。Dijkstra算法是一种用于图论求解最短路径问题的经典算法,具有广泛的应用领域,如路由算法、网络规划和GPS导航系统等。在训练营,邓俊辉教授通过讲解算法的原理和思想,引导学生进行编程实践和案例分析,帮助他们深入理解Dijkstra算法的应用场景与实际解决问题的能力。 邓俊辉教授所组织的Dijkstra算法训练营受到了广大学生的欢迎和积极参与。通过训练营的学习,学生不仅可以掌握Dijkstra算法的具体实现过程,还能了解算法设计的思路和应用的局限性。在训练营,学生还可以与同学们进行交流和合作,共同解决实际问题,促进彼此的学术成长和人际交往能力的培养。 总之,邓俊辉的Dijkstra算法训练营为学生提供了一个系统、全面学习算法知识的平台,帮助他们培养解决实际问题的能力和思维方式。通过这样的培训,学生不仅能在学术领域取得更好的成绩,还可以为将来的职业发展打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X.AI666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值