2023大厂真题提交网址(含题解):
www.CodeFun2000.com(http://101.43.147.120/)
最近我们一直在将收集到的机试真题制作数据并搬运到自己的OJ上,供大家免费练习,体会真题难度。现在OJ已录入50+道2023年最新大厂真题,同时在不断的更新。同时,可以关注"塔子哥学算法"公众号获得每道题的题解。
前言:
非常热乎的题解,嘿嘿。以往难度不知道(没刷过他们的题库),感觉这次顶级难度真不高啊,,可能是题目难读的原因嘛?之前听cy姥姥吹的那么nb。没想到还是比较简单,唯一难读的就是题意,比较绕。
A.共享单车回收:Floyd,模拟
题目大意:
给你一张含 ( n + 1 ) (n+1) (n+1)个点(编号 0 , 1 , 2 , . . . , n 0,1,2,...,n 0,1,2,...,n) m m m条边的带边权无向图。从0点出发。每次选择尚未访问过的节点中最短路径最短的点,去往那里。以此往复。直到无点可走。
第一行输出访问节点的路径.
第二行,若这张图连通。输出总花费。反之输出未访问到的点.
n ≤ 200 n \leq 200 n≤200
题目思路:
直接按照题意模拟就完了。
先 F l o y d Floyd Floyd预处理出两点之间的最短路。然后 d f s dfs dfs模拟这个过程即可。最后判一下是否连通。很容易的题目. O ( n 3 ) O(n^3) O(n3).
B.剪草:LIS+求具体方案
题目大意:
给你 n n n个数。让你将一些数变大或者变小使得数列变成非升或者非降的。问最小更改的个数。
如果改成非升的和改成非降的都是最小更改(也就是有多解),则尽量让【变大的数】的个数最少(这个部分保证数据中答案一定唯一).
第一行输出 x x x代表删除的个数
第二行输出 x x x个数,从小到大,代表删除的下标
n ≤ 2000 n \leq 2000 n≤2000
1 ≤ a i ≤ 1 e 3 1 \leq a_i \leq 1e3 1≤ai≤1e3
题目思路:
1.我们只计算【变成非降】的结果,对于【变成非升】的结果,我们直接对原序列 r e v e r s e reverse reverse一下再跑非降就好了。
2.显然最小更改 = n − 最长非降子序列 n-最长非降子序列 n−最长非降子序列.所以我们 O ( n 2 ) O(n^2) O(n2)求一个最长非降子序列。再逆序确定dp的具体方案。
2.1:假设方案的下标序列为: b 1 , b 2 , . . . , b k , ( k 为最长非降子序列的长度 ) b_1,b_2,...,b_k,(k为最长非降子序列的长度) <