- 博客(146)
- 收藏
- 关注
原创 Acwing.1349 修理牛棚(贪心)
一种可行的方案是,用一个木板将 3∼8 号牛棚的门挡住,一个木板将 14∼21 号牛棚的门挡住,一个木板将 25∼31 号牛棚的门挡住,一个木板将 40∼43 号牛棚的门挡住,这样一共遮挡了 25 个牛棚的门。请你计算确保购买的木板的总长度尽可能小的情况下,为了使所有住着牛的牛棚都用木板挡住门,最少要将多少牛棚的门用木板挡住。现在,给定可以购买的最大木板数量 M ,牛棚的总数 S ,牛的总数 C ,以及 C 个住着牛的牛棚编号。接下来 C 行,每行包含一个整数,表示一个住着牛的牛棚的编号。
2024-04-14 12:24:48
467
原创 Acwing.1375 奶牛回家(最短路&朴素dijkstra)
接下来 P 行,每行包含两个字母以及一个整数,表示被一条道路连接的两个牧场的标记,以及这条道路的长度。现在你需要确定,哪一头奶牛能够最快到达牛棚,输出它最初所在的牧场的标记,并输出它走过的路径的长度。注意,同一字母大小写标记的两个牧场(例如,牧场 A 和牧场 a )是两个完全不同的牧场。输出一个字母和一个整数,表示最快回到牛棚的牛最初所在的牧场的标记以及它走过的路径的长度。所有用大写字母标记的牧场中都存在一头奶牛,所有用小写字母标记的牧场中都不存在奶牛。所有奶牛都能够成功的从自己的牧场沿道路返回牛棚。
2024-04-13 17:48:32
466
原创 Acwing.3999 最大公约数(gcd&欧拉函数)
这道题其实就是考察数学推理,没有什么思路,根据推理我们得出,该题的结果为1-m所有与m互质的数,那么可以通过欧拉函数直接求解。至于欧拉函数为什么这样写,不要问,直接背,理解一次之后也会忘。前三个测试点满足,1≤T≤10。所有测试点满足,1≤T≤50 ,1≤a
2024-04-12 19:22:54
256
1
原创 Acwing.4009 收集卡牌(期望&dp)
第一次抽卡获得 A,第二次抽卡获得 A,第三次抽卡获得 A,用硬币兑换 B,抽卡结束,概率为 0.4×0.4×0.4=0.064,抽卡次数为 3。第一次抽卡获得 B,第二次抽卡获得 B,第三次抽卡获得 B,用硬币兑换 A,抽卡结束,概率为 0.6×0.6×0.6=0.216,抽卡次数为 3。第一次抽卡获得 A,第二次抽卡获得 A,第三次抽卡获得 B,抽卡结束,概率为 0.4×0.4×0.6=0.096,抽卡次数为 3。,pn,用空格分隔。小林会一直抽卡,直至集齐了所有种类的卡牌为止,求她的期望抽卡次数。
2024-04-10 21:51:06
553
原创 Acwing.211 计算系数(计算组合数&两种方法)
第二个方法是使用逆元计算,具体原理不在这里讲,大家可以参考我另一个博客。链接会放在下面,但是博主有点疑问为什么用逆元的方法就不会爆int了,没取余也过了,百思不得其解。这道题数量级不高,我们首先可以通过递归的思想遍历出组合数,再求解,注意要先对a,b取余,因为ab为百万级别,平方会爆int。输出共 1行,包含一个整数,表示所求的系数,这个系数可能很大,输出对 10007取模后的结果。共一行,包含 5个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开。,请求出多项式展开后 x。
2024-04-09 20:56:26
282
原创 Acwing. 4199 公约数(最大公约数&求因数)
前六个测试点满足 1≤a,b≤100,1≤q≤20。所有测试点满足 1≤a,b≤109,1≤q≤104,1≤l≤r≤109。这道题考察的就是大家最基本的知识点“最大公约数”和“求因数”的考察,大家熟记知识点,遍历即可完成。每个询问输出一行答案,即满足条件的最大的 x,如果询问无解,则输出 −1。接下来 q行,每行包含两个整数 l,r。1.x是 a和 b的公约数。第一行包含两个整数 a,b。给定两个正整数 a和 b。第二行包含一个整数 q。你需要回答 q个询问。
2024-04-06 15:42:33
304
原创 Acwing.504 转圈游戏(带取余的快速幂)
游戏规则如下:每一轮第 0号位置上的小伙伴顺时针走到第 m号位置,第 1号位置小伙伴走到第 m+1号位置,…,依此类推,第 n−m号位置上的小伙伴走到第 0号位置,第 n−m+1号位置上的小伙伴走到第 1号位置,…,第 n−1号位置上的小伙伴顺时针走到第 m−1号位置。大家看代码模板即可。最初,第 0号小伙伴在第 0号位置,第 1号小伙伴在第 1号位置,…输出共 1行,包含 1个整数,表示 10k轮后 x号小伙伴所在的位置编号。现在,一共进行了 10k轮,请问 x号小伙伴最后走到了第几号位置。
2024-04-05 11:44:55
564
原创 Acwing.1388 游戏(区间DP&对抗思想)
这道题是一道经典的对抗问题,要求比较谁更高,也就是使自己的分数与对方的分数的分差更大,因此dp数组为选择i到j区间里分差最大的选择。在每第i-j区域的选择里,我们可以从左或者从右选,在这次选择之前是对方选择,对方肯定会选择对自己更优的方案,也就是使自己方差和我们方差最大的方案,设为a(a=f[i+1][j]orf[i][j-1])。首先这道题用的是区间DP,区间DP与背包问题一样有具体的模板,第一层遍历区间长度,第二层遍历左端点。请计算,如果双方都采取最优策略进行游戏,则游戏结束时,双方的得分各是多少。
2024-04-03 20:52:32
944
原创 Acwing.1371 货币系统(完全背包问题)
这道题是一道典型的背包问题,如果大家连背包问题都不了解的话得赶快去搜索点点资料扩充自己的知识点了,因为背包问题作为DP问题中较为基础且典型的题目,大家掌握之后才能对DP有更深入的理解,最其他题才能有最基本的思路。完全背包问题和各种背包问题可以改变代码从而优化空间,但那个是在太难理解,博主当初看y总视屏觉得懂了,但实际上过了一段时间就忘得一干二净写不出来。这道题的基本逻辑还是“状态转移方程”和“集合”,比较特别的是完全背包问题的状态转移方程需要通过一定的数学计算优化,不然要超时,大家看下图即可。
2024-04-02 22:45:33
322
原创 Acwing.312 乌龟棋(线性DP)
乌龟棋中共有 M张爬行卡片,分成 4种不同的类型(M张卡片中不一定包含所有 4种类型的卡片),每种类型的卡片上分别标有 1、2、3、4四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。思考DP我们需要思考DP的“状态转移方程”和“集合”,这两点如何思考,主打一个经验,经验到位,就能想到,但是没有相关题的经验就很难想到,就很蛋疼= =。游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数,每张卡片只能使用一次。第 3行 M个整数,b1,b2,。
2024-04-02 11:49:05
385
原创 Acwing.731 毕业旅行问题(状态压缩动态规划)
这道题是一道典型的动态规划问题,但如何设计状态数组是个问题,根据经验,没错根据经验,动态规划问题的状态数组的设计需要经验,这个靠刷题积累,这道题采用状态压缩来设计状态数组,具体如下图。i为当前已经走过的城市,j为目前所在的城市。共 4个城市,城市 1和城市 1的车费为 0,城市 1和城市 2之间的车费为 2,城市 1和城市 3之间车费为 6,城市 1和城市 4之间的车费为 5,以此类推。打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次。注意:北京为 1号城市。
2024-04-01 21:10:01
250
原创 Acwing.1265 数星星(树状数组)
这道题我们首先来分析题目,每个星星的左下方的星星总数为星星的评级,xy范围32000,暴力不现实,那么得想其他方法,首先观察题目给的条件,星星按照x从小到大依次给出,那么我们可以理解为,每个星星xi yi的评级,就是0-x范围里星星的总数,因为0-x范围里的星星肯定都在xi yi的下方,我们只需要统计0-xi星星的数量,并且修改0-xi处星星的值即可。换句话说,给定 N个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。给定星星的位置,输出各级星星的数目。
2024-03-31 19:34:34
276
原创 Acwing.1413 矩形牛棚(单调栈)
这里直接说结果,不说思维路程,这道题我们采用直接遍历下限的方法,提前求得在当前下限的坐标位置,正上方有几个可用方块,并用h记录下来,那么矩阵的面积就可以用当前H乘以(右边第一个小于H的下标-左边第一个小于H的下标-1),这样时间复杂度就优化到了O(n。不幸的是,他发现其中的部分方格区域已经被破坏了,因此他无法在整个 R×C的土地上建立牛棚。接下来 P行,每行包含两个整数 r,c,表示第 r行第 c列的方格区域内土地是被破坏的。建立的牛棚必须是矩形的,并且内部不能包含被破坏的土地。),显然是行不通的,
2024-03-27 21:50:17
311
原创 Acwing.1402 星空之夜(哈希)
这时候就需要用到离散化,离散化这个算法不一定对,但大多数情况都是对的,就如快速排序的平均时间复杂度是nlogn,最坏复杂度是n²,所以可以将离散化这种算法当成正确的算法使用。这道题可以用之前博客中使用的Flood fill算法来实现,但是这其中有一个难点,如何判断两个星系是相同的,我看有大佬的题解是把每个星系放在坐标远点旋转,产生八个模型一一比较,这种实现方式意义不大,在比赛中没有这么多时间调试这种代码。如果两个星群的形状、包含星星的数目相同,那么无论它们的朝向如何,都认为它们是相似的。
2024-03-26 20:13:44
436
1
原创 Acwing528. 奶酪(并查集)
这道题的实质是图的遍历问题,我们把每一个洞看做一个坐标点,两个洞连接说明两个点之间存在通路,使用图的遍历算法(BFS,DFS)或者使用并查集都可以解决这道题,并查集的代码量小,这里我们使用并查集,只需添加两个点,顶部和底部,最后查看顶部和底部是否在一个集合即可。输出文件包含 T行,分别对应 T组数据的答案,如果在第 i组数据中,Jerry 能从下表面跑到上表面,则输出 Yes,如果不能,则输出 No。现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞。
2024-03-25 22:36:00
274
原创 Acwing.687 扫雷(搜索)
这道题根据题意我们可以很容易的看出是一道搜索问题,这个时候我们应该思考,怎么搜索,理清通过搜索得到答案的逻辑,才能尽可能减少时间复杂度。如果你点击到的单元格内不含地雷,则单元格内将显示一个 0到 8之间的数字(包括 0和 8),这对应于该单元格的所有相邻单元格中包含地雷的单元格的数量。此时,仍有不包含地雷的单元格(用 . 字符表示)未被打开,因此玩家必须继续点击未打开的单元格,使游戏继续进行。接下来 N行,每行包含一个长度为 N的字符串,字符串由 .(无雷)和 *(有雷)构成,表示游戏网格的初始状态。
2024-03-22 20:11:35
289
原创 Acwing.1355 母亲的牛奶(BFS)
有时,约翰会将牛奶从一个桶倒到另一个桶中,直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。请你编写一个程序判断,当 A桶是空的时候,C桶中可能包含多少升牛奶,找出所有的可能情况。共一行,包含若干个整数,表示 C桶中牛奶存量的所有可能情况,请将这些数字按升序排列。这道题我们可以将A B C 三个作为三个参数,当每个参数为特定值的时候为一个坐标。最开始桶 A和桶 B都是空的,而桶 C里装满了牛奶。农夫约翰有三个容量分别为 A,B,C升的挤奶桶。共一行,包含三个整数 A,B,C。
2024-03-21 22:10:47
262
原创 Acwing.167 木棒(回溯)
2.每个第一次用的树枝,在作为拼凑木棍的第一根树枝时,该情况下如果最后无法达成目标,则该长度的分组无论如何无法成立,直接返回false。3.每个第一次用的树枝,在作为拼凑木棍的最后根树枝时,该情况下如果最后无法达成目标,则该长度的分组无论如何无法成立,直接返回false。第一步,让数值逆序排序,先排长数值,会让深搜更快达到裁枝标准,从而降低深搜深度。乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 50。为每组数据,分别输出原始木棒的可能最小长度,每组数据占一行。
2024-03-20 16:05:28
263
原创 Acwing.2060 奶牛选美(DFS)
这道题经典的搜索问题,可以使用DFS与BFS和并查集,现将两个标点的位置标记,最后再通过一个数学定理,只有xy方向的话两点最近距离就是垂直距离,计算出结果,最后统计最小数值即可。接下来 N行,每行包含一个长度为 M的由 X和 .构成的字符串,用来表示描述牛皮图案的字符矩阵。约翰希望通过给每头奶牛涂色,使得它们身上的两个斑点能够合为一个斑点,让它们能够更加时尚。请帮助约翰确定,为了使两个斑点合为一个,他需要涂色区域的最少数量。不幸的是,时尚潮流往往变化很快,当前最受欢迎的牛变成了一斑点牛。
2024-03-19 12:21:51
363
原创 Acwing.1360 有序分数(递归or最小公因数)
另一种思路是运用了Stern-Brocot Tree,一种数学思路模型,具体结果如下图,使用该方法就可以从小打大递归出所有的满足最简分数。具体方法流程如下图。给定一个整数 N,请你求出所有分母小于或等于 N,大小在 [0,1]范围内的最简分数,并按从小到大顺序依次输出。遍历函数具有两个参数a/b,c/d,那么a+c/b+d就是我们需要的函数,然后据需递归下去即可。每个分数占一行,格式为 a/b,其中 a 为分子, b为分母。按照从小到大的顺序,输出所有满足条件的分数。共一行,包含一个整数 N。
2024-03-18 21:26:08
205
原创 Acwing.1343 挤牛奶(区间合并or差分)
这道题是一道区间合并的的标准模板题,只需要在区间和并的代码基础上添加几行代码即可。同时也可以使用差分来做同样很简单很好理解,所以这道题不过多讲解,不懂区间合并和差分的可以看看博主的其他两个博客,给出下面两个链接。https://blog.csdn.net/qq_62235017/article/details/130588622https://blog.csdn.net/qq_62235017/article/details/131380110
2024-03-17 11:18:50
293
原创 Acwing.1262 鱼塘钓鱼(多路归并)
这道题是一道经典的多路归并题,如果考虑多条件一条一条路选择就只有两种方式,其中一个是暴力搜索,一个是动态规划,这道题动态规划可以实现,但略微麻烦,不如采用多路归并的思想,因为路线总共只有N条,前1至前5,遍历这五条路线,并用归并排序选择每条路线中最大值的思想,最后取五种情况的最大值即可。即:在第 1个鱼塘中钓鱼第 1分钟内可钓到 10条鱼,第 2分钟内只能钓到 8条鱼,……从第 1个鱼塘到第 2个鱼塘需要 3分钟,从第 2个鱼塘到第 3个鱼塘需要 5分钟,……第4行为当前鱼塘到下一个相邻鱼塘需要的时间;
2024-03-16 11:00:44
458
原创 AcWing.505 火柴排队(离散化&逆序对)
如果考虑a数组有序,那么b数组只需要移动逆序对数的次数,但题目中ab数组都无序,那么,就首先使用两次离散化,使a数组依次离散为1,2,3…——这道题具有一定的难度,首先我们要了解一件事,假如有a和b两个数列,连个数列有序,那么对应编号的ai与bi的差的绝对值之和最小,这个有严格的数学证明,这里就不证明了,博主是参考正方形思想,相同周长正方形周长最小的思想来类比得到这个结论,没有具体证明。其中 ai表示第一列火柴中第 i个火柴的高度,bi表示第二列火柴中第 i个火柴的高度。根火柴,每根火柴都有一个高度。
2024-03-16 10:39:15
363
原创 Acwing.4261 孤独的照片(贡献法)
这道题不能通过常规思维去思考,如果去根据牛的位置去遍历的话就会产生n²的时间复杂度直接爆掉,采用贡献法,以牛为单位,算得每只牛左右的不同种类牛数,再根据所得数量算三种情况的孤独照片数,得最后结果。然而,他不想拍摄这样的照片,其中只有一头牛的品种是更赛牛,或者只有一头牛的品种是荷斯坦牛——他认为这头奇特的牛会感到孤立和不自然。在为每个连续不少于三头奶牛的序列拍摄了一张照片后,他把所有「孤独的」照片,即其中只有一头更赛牛或荷斯坦奶牛的照片,都扔掉了。如果两张照片以不同位置的奶牛开始或结束,则认为它们是不同的。
2024-03-13 23:57:29
366
原创 Acwing.3498 日期差值(日期计算)
这道题是一道简单计算题,做这道题签完不要想着去计算两个日期中间的时间,那样太过于麻烦,会有太多条件判断,这种情况一般直接计算两个日期的总天数相减就行了。博主就是计算中间天数写了半个小时条件最后懒得写了,警钟长鸣!因为日期计算确实是简单题,不应该在上面花费太多时间。有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。每组数据占两行,分别表示两个日期,形式为 YYYYMMDD。每组数据输出一行,即日期差值。测试数据的组数不超过 100。年份范围 [1,9999]
2024-03-12 19:01:50
283
原创 Acwing.4262 空调(差分)
这道题我认可可以理解为拆分的逆应用,一个数组的拆分数组由每个位置的数值组成,有正数也有负数,正数和与负数和都为0。该系统进行控制的方式非常有趣,他可以向系统发送命令,告诉它将一组连续的牛栏内的温度升高或降低 1个单位——例如「将牛栏 5…请帮助 Farmer John 求出他需要向新的空调系统发送的命令的最小数量,使得每头奶牛的牛栏都处于其中的奶牛的理想温度。Farmer John 的牛棚包含一排 N个牛栏,编号为 1…第 i头奶牛希望她的牛栏中的温度是 pi,而现在她的牛栏中的温度是 ti。
2024-03-12 17:41:17
482
原创 Acwing.3745 牛的学术圈 I(双指针)
这道题运用了遍历和双指针,一个指针用于遍历,另一个指针作为条件的判断,其中j为指向第一个大于等于遍历h指标的数,再通过判断条件,大于其h指标的数是否够,够则满足条件,为备选答案。例如,如果一名研究员有 4篇论文,引用次数分别为 (1,100,2,3),则 h指数为 2,然而若引用次数为 (1,100,3,3)则 h指数将会是 3。如果 Bessie 引用她的第三篇论文,引用数会变为 (1,100,3,3)。为了提升她的 h指数,Bessie 计划写一篇综述,并引用一些她曾经写过的论文。
2024-03-11 22:06:41
406
原创 Acwing.1227 分巧克力(二分)
例如一块 6×5 的巧克力可以切出 6 块 2×2的巧克力或者 2 块 3×3的巧克力。非常经典且简单的二分题目,通过二分巧克力的边长,配合判断函数可以轻松获得答案结果。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?小明一共有 N块巧克力,其中第 i块是 Hi×Wi的方格组成的长方形。为了公平起见,小明需要从这 N块巧克力中切出 K块巧克力分给小朋友们。输入保证每位小朋友至少能获得一块 1×1的巧克力。输出切出的正方形巧克力最大可能的边长。小明拿出了珍藏的巧克力招待小朋友们。
2024-03-11 21:58:09
179
原创 Acwing.562 壁画(前缀和)
这道题用前缀和实现没有什么难度,难度是方法的证明,这里不祥述了,只说明结果,找到数组的半数(往上取整)的连续成员和,最大值为最结果,所以选用前缀和,当然滑动窗口同样可以解决。在每天结束时,一段未被涂颜料的墙将被摧毁(Thanh 使用的是防水涂料,因此涂漆的部分不能被破坏),且被毁掉的墙段一定只与一段还未被毁掉的墙面相邻。然后右数第二段墙体被摧毁。在接下来的每一天,他只能选择与绘制完成的墙面相邻的墙段进行作画,因为他不想分开壁画。Thanh 的壁画的总体美观程度将等于他作画的所有墙段的美观评分的总和。
2024-03-11 21:54:23
386
原创 Acwing.503 借教室(二分)
这道题运用了前缀和与拆分的思想,通过二分查找mid及以前的天数是否会让教室不够,如果最后r=请求数,则能完成数量要求,不等于则输出r+1,为导致超出预计的编号。共有 m份订单,每份订单用三个正整数描述,分别为 dj,sj,tj,表示某租借者需要从第 sj 天到第 tj天租借教室(包括第 sj 天和第 tj天),每天需要租借 dj个教室。即对于每份订单,我们只需要每天提供 dj个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。
2024-03-11 21:46:06
304
原创 Acwing.4273 链表合并(链表)
这道题用c++实现相对简单,就是普通的链表操作,使用静态链表存储数值和下一个地址,然后设置for循环逻辑即可完成,但java实在没有相关数据结构,总是TLE,TWT。如果 n≥2m,你的任务是将较短的那个链表逆序,然后将之并入较长的链表,得到形如 a1→a2→bm→a3→a4→bm−1…例如给定两个链表分别为 6→7和 1→2→3→4→5,你应该输出 1→2→7→3→4→6→5。输入首先在第一行中给出两个链表 L1和 L2的头结点的地址,以及正整数 N,即给定的结点总数。
2024-03-11 21:33:43
217
原创 PTA 哈利·波特的考试(floyd算法)
于是他来问你:带什么动物去可以让最难变的那种动物(即该动物变为哈利·波特自己带去的动物所需要的魔咒最长)需要的魔咒最短?例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。随后M行,每行给出了3个正整数,分别是两种动物的编号、以及它们之间变形需要的魔咒的长度(≤100),数字之间用空格分隔。输出哈利·波特应该带去考场的动物的编号、以及最长的变形魔咒的长度,中间以空格分隔。
2023-11-08 13:31:57
1155
原创 PTA 网红店打卡攻略(带权建图搜索)
在第二行中,首先输出那个能在每个网红点打卡仅一次、并且路上花费最少的攻略的序号(从 1 开始),然后输出这个攻略的总路费,其间以一个空格分隔。第 1 条攻略的总路费是:(0->5) 2 + (5->1) 2 + (1->4) 2 + (4->3) 2 + (3->6) 2 + (6->2) 2 + (2->0) 2 = 14;第 7 条攻略的总路费同理可算得:2 + 1 + 1 + 2 + 2 + 2 + 1 = 11,与第 5 条花费相同,但序号较大,所以不输出。在第一行输出满足要求的攻略的个数。
2023-11-08 13:27:00
294
原创 PTA 拯救007(bfs)
在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。给定池中分布的鳄鱼的坐标、以及007一次能跳跃的最大距离,你需要告诉他是否有可能逃出生天。根据题目要求,如果在当前位置不能逃脱,就需要寻找更接近的落脚点,那么bfs就满足这一点要求,查看数据要求,时间复杂度也同样满足。
2023-11-02 17:39:06
205
原创 PTA 这是二叉搜索树吗?(二叉排序树)
如果输入序列是对一棵二叉搜索树或其镜像进行前序遍历的结果,则首先在一行中输出 YES ,然后在下一行输出该树后序遍历的结果。数字间有 1 个空格,一行的首尾不得有多余空格。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。题目给出前序,并说明为二叉排序树,那么二叉排序树的中序便是排序后的前序序列。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。其右子树中所有结点的键值大于等于该结点的键值;其左子树中所有结点的键值小于该结点的键值;
2023-11-01 15:43:25
194
原创 PTA 秀恩爱分得快(树)
互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度。如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K。任意两个人如果同时出现在若干张照片里,他们之间的亲密度就是所有这些同框照片对应的亲密度之和。但如果 A 和 B 正是彼此亲密度最高的一对,则只输出他们的编号,无论是否还有其他人并列。其中 K(≤ 500)是该照片中出现的人数,P[1] ~ P[K] 就是这些人的编号。这道题的思路挺简单,就是用一个动态数组存储照片中的人,用一个数组存储性别,然后n。
2023-11-01 15:37:50
243
原创 Acwing.4633 学生和导师(二分)
对于评分为 1000 的两个学生,他们能够选择的导师的最高评分为 1800,他们不能选择评分为 2300 的导师,因为 2300>2×1000。对于评分为 600 的学生,他不能选择评分为 1800 或 2300 的导师,他能够选择的导师的最高评分为 1000。对于评分为 2300 的学生,他可以选择任何其他学生作为他的导师,因此他选择评分为 1800 的导师。对于评分为 1800 的学生,他可以选择任何其他学生作为他的导师,因此他选择评分为 2300 的导师。
2023-10-30 17:25:36
68
原创 Acwing.4672 布料排序(排序)
按耐久性排序时,布料顺序为 1,2,所以 2 块布料具有相同的排名,这里需要注意,两块布料具有相同的耐久性,所以在查尔斯进行排序时,他将具有更小 ID 的 1 号布料排在前面。按耐久性排序时,布料顺序为 2,1,所以 0 块布料具有相同的排名。阿达按照颜色(C)字典序升序的顺序对布料进行排序,颜色相同的布料按唯一标识符(U)升序的顺序进行排序。查尔斯按照耐久性(D)升序的顺序对布料进行排序,耐久性相同的布料按唯一标识符(U)升序的顺序进行排序。颜色(C),一个由小写英文字母组成的字符串,表示布料的颜色。
2023-10-30 17:18:09
156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人