笔试算法模拟题精解之“Codancer的数组封印”

简介: 我们逆向思考,对于给定的数组每次删去一个数,相邻两次操作的答案不会超过1。

【在线编程产品介绍】

阿里云开发者社区在线编程:

免费刷题大神器,助你拿到好offer

周赛月赛不停歇,做题还能领奖品

大赛笔试全真题,常做常新有惊喜

点击链接开始产品体验:https://developer.aliyun.com/coding

本文为大家介绍的是“122.Codancer的数组封印”的解法探究。先来看一下题目内容:

题目详情

等级:困难
知识点:DP、LIS
查看题目:Codancer的数组封印

Tom有一个长度为n的排列数组a,即a中的每个数字的范围都在[1,n]中并且每个数字都不重复。但是现在Codancer把整个数组给封印了!

现在Codancer给了Tom一个解封序列b,即bi代表第i次解封a[b[i]]。

接下来Tom每次都会解封一个位置的数字,令L[i]代表第i次解封后所有被解封的数字构成的数组的LIS的长度,现在Codancer想让Tom计算L[1]+L[2]+L[3]+…+L[n]的值是多少?

第一行是一个正整数n,代表a数组和b数组的长度,接下来第一行输入数组a,第二行输入数组b。(1<=n<=50000)

输出L[1]+L[2]+…+L[n]的值。

示例1
输入:
4
[4,2,1,3]
[1,2,4,3]
输出:
6
注意
L[1]=1 解封后为{4}
L[2]=1 解封后为{4,2}
L[3]=2 解封后为{4,2,3}
L[4]=2 解封后为{4,2,1,3}

解题方法:

第一步解封后数组为{4},因此L[1]=1
第二步解封后数组为{4,2},因此L[2]=1
第三步解封后数组为{4,2,3},因此L[3]=2
第四步解封后数组为{4,2,1,3},因此L[4]=2
因此L[1]+L[2]+L[3]+L[4]=6
image.png
红色数字构成的序列即为LIS。

我们逆向思考,对于给定的数组每次删去一个数,相邻两次操作的答案不会超过1,

对于第i次操作我们随便求一个LIS,如果第i+1次操作删除的数字在这个LIS内,

我们就要重新求LIS,否则答案保持不变,由于随机生成的全排列LIS长度的期望为sqrt(n),因此最多计算sqrt(n)次LIS。

时间复杂度:O(nsqrt(n)*log(n))

看完之后是不是有了答题思路了呢,快来练练手吧:122.Codancer的数组封印

在线编程周赛、月赛火热进行中,更有限时答题活动,定制卫衣、双肩背包、机械键盘等多重好礼等你来拿~每天都有好礼相送~点击了解周赛详情:在线编程3月份比赛正式开启!机械键盘等你拿!

b462f1d86b44481ca24c0ad63fe55948.png

相关文章
|
3月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
53 0
|
3月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
58 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
3月前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
36 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
5月前
|
存储 算法 Java
深入算法基础二分查找数组
文章深入学习了二分查找算法的基础,通过实战例子详细解释了算法的逻辑流程,强调了确定合法搜索边界的重要性,并提供了Java语言的代码实现。
深入算法基础二分查找数组
|
5月前
|
算法
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
|
5月前
|
算法
【算法】模拟算法——外观数组(medium)
【算法】模拟算法——外观数组(medium)
|
5月前
|
算法
【算法】前缀和——除自身以外数组的乘积
【算法】前缀和——除自身以外数组的乘积
|
7天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
8天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
8天前
|
算法
基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
本设计基于龙格库塔算法对锅炉单相受热管进行建模与MATLAB数值仿真,简化为喷水减温器和末级过热器组合,考虑均匀传热及静态烟气处理。使用MATLAB2022A版本运行,展示自编与内置四阶龙格库塔法的精度对比及误差分析。模型涉及热传递和流体动力学原理,适用于优化锅炉效率。