CSUST - 2022算法测试
CSUST - 2022算法测试
- A、use
- B、小精灵爱打工
- C、迷宫问题
- D、算数
- E、树上问题
- F、走出迷宫
- G、安排课程
A、use
首先要分析复杂度题目中 n n n 是 1 0 5 10^5 105 , O ( n 2 ) O(n^2) O(n2)是会 T L E TLE TLE的!
题目求 a [ i ] + a [ j ] > b [ i ] + b [ j ] a[i]+a[j]>b[i]+b[j] a[i]+a[j]>b[i]+b[j] ( i < j ) (i<j) (i<j)的对数
这种给定式子的题目,一般来说先要将相同下标放在一起,方便寻找思路。
本题可以转换成 a [ i ] − b [ i ] + a [ j ] − b [ j ] > 0 a[i]-b[i]+a[j]-b[j] > 0 a[i]−b[i]+a[j]−b[j]>0
然后令 c [ i ] = a [ i ] − b [ i ] c[i]=a[i]-b[i] c[i]=a[i]−b[i],原式转换为 c [ i ] + c [ j ] > 0 c[i]+c[j] > 0 c[i]+c[j]>0
对 c c c数组进行从小到大排序,然后遍历 c c c数组。
对于每个 c [ i ] c[i] c[i]找到最小的下标 x x x,满足 c [ i ] + c [ x ] > 0 c[i]+c[x] > 0 c[i]+c[x]>0,不难推出当且仅当下标 j j j处于 [ x , n ] [x,n] [x,n]才满足 c [ i ] + c [ j ] > 0 c[i]+c[j] > 0 c[i]+c[j]>0
找最小的下标 x x x,用二分即可。
注意本题是 ( i < j ) (i<j) (i<j),最后答案需要减掉 ( i ≥ j ) (i \geq j) (i≥j)的部分。
B、小精灵爱打工
二分最少需要花多少时间。
c h e c k ( x ) check(x) check(x)部分实现,x为二分的时间
对 a a a数组从大到小排序表示建造顺序,随后遍历 a a a数组。(这里用到贪心,花费时间长的要先建造完)
定义变量 t o l tol tol表示当前精灵数目
对于每个 a [ i ] a[i] a[i],维护一个 b [ i ] b[i] b[i]表示建造 i i i建筑的精灵出现时间。
在 b [ i ] + t ≤ x b[i]+t \leq x b[i]+t≤x的前提下,不断分裂新精灵,即更新 b [ t o l + 1 ] b[tol + 1] b[tol+1]的时间。(这里也用到贪心,新精灵出现时间要尽可能早)
最后判断 t o l ≥ n tol \geq n tol≥n即可
C、迷宫问题
很简单的BFS,建议百度BFS。
D、算数
与A题基本一致,只需要修改一下二分的下标范围即可。
E、树上问题
学过树的话,这题很简单。
可以去学一下树和它的遍历方法。
然后用树的遍历方法,维护出每个节点的深度即可。
F、走出迷宫
很简单的 d p dp dp题目,维护一个 d p dp dp二维数组
d p [ i ] [ j ] dp[i][j] dp[i][j]表示从 ( 1 , 1 ) (1,1) (1,1)走到 ( i , j ) (i,j) (i,j)的方案数,因为 ( i , j ) (i,j) (i,j)可以由 ( i − 1 , j ) (i-1,j) (i−1,j)和 ( i , j − 1 ) (i,j-1) (i,j−1)走一步到达,因此如下:
初始化 d p [ 1 ] [ 1 ] = 1 dp[1][1] = 1 dp[1][1]=1
d p dp dp转移方程: d p [ i ] [ j ] = ( d p [ i − 1 ] [ j ] + d p [ i ] [ j − 1 ] ) dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) dp[i][j]=(dp[i−1][j]+dp[i][j−1]) mod 2333 2333 2333
这里多了一个取模操作,不知道取模操作可以百度一下。
G、安排课程
我们不妨先将课程按截止时间从小到大排序,然后不断更新答案课程表即可。
按这种排序,可以忽略答案课程表内课程截止时间的影响。
因此加一个课程只需要满足加入课程后答案课程表的最少时间花费小于等于加入课程的截止时间。
因此只需要维护答案课程表的最少时间花费。
对于满足加入条件的课程,我们只需要直接加入课程即可。
若不满足,说明该课程不能直接加入课程表,因此我们需要判断此课程能否通过替换之前选中的课程来更新答案课程表的最少时间花费即可。
对答案课程表选中的每个课程加入优先队列,来维护最多时间花费的课程,当替换后最少时间花费少于当前课程截止时间,就进行替换操作。
(注意替换操作一个课程只能替换一个课程,如果一个课程替换多个课程答案就会变小)
CSUST - 2022算法测试相关推荐
- 2022年测试岗最新自动化测试面试题整理,干货满满
前言 本文由作者本人根据2022年测试岗最新面试整理所得!内容是很干货的!对我也很有帮助.本文仅做个分享~ 一.接口测试 1.接口测试用例的编写要点有哪些?(问法二:接口测试用例设计需要考虑哪些方面? ...
- 人脸识别算法_格灵深瞳在人脸识别算法测试(FRVT)中斩获全球第一
1月6日,美国国家标准与技术研究院(NIST)公布了最新的人脸识别算法测试(FRVT)成果,格灵深瞳再次刷新纪录:在7项测试子任务中,获得2项第一.3项第二,综合排名世界第一的成绩. 过去几个月,很多 ...
- 【AI测试】机器学习项目的测试,算法测试
目录 一.算法测试 1.模型评估 2.鲁棒性 (robustness) 3.模型安全 4.响应速度 二.业务测试 三.白盒测试 四.模型监控 五.算法测试学习入门 一.算法测试 1.模型评估 如何评估 ...
- 基本算法研究1-冒泡排序算法测试
基本算法研究1-冒泡排序算法测试 1.经典冒泡排序法基本原理 先看一个动态图,感觉比较形象: 冒泡排序(Bubble Sort)是一种简单的排序算法.默认是从小到大排序,即把最大的数据排在最后,相当于 ...
- 小样本学习数据集||Omniglot和miniImagenet||MAML算法测试
元学习论文总结||小样本学习论文总结 2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017 ...
- 格灵深瞳——人脸识别算法测试FRVT
7月3日,美国国家标准与技术研究院(NIST)公布了全球最权威的人脸识别算法测试(FRVT)的最新结果,首次参与此竞赛的格灵深瞳取得了优异成绩:在最具挑战的"非约束性自然环境人脸照片&quo ...
- Weisfeiler-Lehman(WL)算法测试图同构
参考文献 [1]Weisfeiler-Lehman算法测试图同构 [2]图神经网络的表达能力与Weisfeiler-Lehman测试 [3]什么是Weisfeiler-Lehman(WL)算法和WL ...
- 虹膜识别算法 matlab,基于MATLAB GUI 的虹膜识别算法测试平台
基于MATLAB GUI 的虹膜识别算法测试平台 田启川;潘泉;程咏梅;张洪才 [期刊名称]<计算机仿真> [年(卷),期]2006(023)002 [摘要]虹膜识别是一种重要的利用生物学 ...
- C++:实现量化Mersenne twister梅森旋转算法测试实例
C++:实现量化Mersenne twister梅森旋转算法测试实例 #include "mersennetwister.hpp" #include "utilities ...
最新文章
- 面试题目(1)如何从一组数据中怎样最快找到第二大数?
- Google谷歌首席科学家:神经网络的奇妙特性与应用
- 深入Oracle的left join中on和where的区别详解
- (三)虚拟化技术重点笔记与总结
- Toad for Oracle工具的使用(二)
- 基于TensorFlow Serving的深度学习在线预估
- 【渝粤教育】电大中专中医基础知识 (2)作业 题库
- java替换特殊字符_Java StringBuffer替换特殊字符
- 如何注释python中html,Python在HTML中提取带注释的代码,python,html,被
- ubuntu源列表(清华,阿里,官方,选一即可)
- 粤嵌gec6818项目设计_西安市幸福林带景观及亮化设计国际竞赛终期评审会顺利举行...
- 前端程序升级linux方案,开源:AspNetCore 应用程序热更新升级工具(全网第一份公开的解决方案)...
- Facebook广告费用如何出价?
- html 3d坐标,HTML3D
- JAVA中的“+”、“concat”和“append”
- 关于微信支付接口,curl错误代码58
- 腾讯Android自动化测试实战3.2.1 Robotium支持Native原理
- 爬虫常用的user_agent
- cpc专利电子申请客户端安装教程以及常见错误
- android请求网络接口(xutils3进行网络请求)