- 博客(3336)
- 收藏
- 关注
原创 【ACWing】1604. 家产
注意比较人均面积的时候,可以用整数乘法来做,而不是除法,因为比较double是不精确的。给定每个人的家庭成员以及他/她自己名字下的不动产(地产)信息,我们需要知道每个家庭的成员数,以及人均不动产面积和人均房产套数。其中ID是家庭成员中编号最小的成员编号,M是家庭成员数,AVG_sets是人均房产套数,AVG_area是人均房产面积。是孩子数量,Child_i是孩子的ID,M_estate是其名下房产数量,Area是其名下房产的总面积。当存在人均房产面积相同的情况时,按ID升序顺序排序。
2025-04-23 01:36:41
268
原创 【ACWing】3587. 连通图
给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。每组数据输出一行,一个结果,如果所有顶点都是连通的,输出。每组数据第一行包含两个整数。图中可能存在重边和自环。,表示无向图的点和边数。输入包含若干组数据。行,每行包含两个整数。
2025-04-21 19:05:44
596
原创 【ACWing】1251. 打击犯罪
犯罪集团的危险程度由集团内的犯罪团伙数量唯一确定,而与单个犯罪团伙的危险程度无关(该犯罪集团的危险程度为。现在当地警方希望花尽量少的时间(即打击掉尽量少的团伙),使得庞大的犯罪集团分离成若干个较小的集团,并且他们中最大的一个的危险程度不超过。的犯罪团伙被破坏的情况下,对犯罪团伙进行合并,然后再求危险程度最大的犯罪集团的危险程度是多少即可。破坏更多的犯罪团伙,必然导致危险程度最大的犯罪集团的危险程度降低,从而。求危险程度最大的犯罪集团的过程,可以用并查集来做,先在。为达到最好的效果,他们将按顺序打击掉编号。
2025-04-21 16:10:17
670
原创 【ACWing】1414. 牛异或
这样问题就转化为,给定一个数列,求最大的异或数对,可以用Trie做。这道题要求,存在多个异或对最大的序列的时候,先按右端点筛选出最小的,如果还存在多个,再选择长度最短的。可以这样做,每次插入的时候,存一下当前异或和对应的右端点的最大下标(其实就是每次插入的时候都更新下标),然后查询的时候,只有得到了更大的异或和的时候,才更新答案。如果存在多个这样的序列,那么选择序列末端整数对应的奶牛编号更小的那个序列。输出三个整数,分别表示最大的异或和,所选序列首端整数对应的奶牛编号,所选序列末端整数对应的奶牛编号。
2025-04-13 21:45:55
582
原创 【Leetcode】3043. Find the Length of the Longest Common Prefix
各自取一个数,求它们的最长公共前缀的长度(就是看成字符串后求),题目保证只含非负整数,且没有前导。里的所有数插进Trie,然后遍历。问最长的最长公共前缀的长度。求最长公共前缀长度。
2024-12-04 17:32:07
454
原创 【ACWing】6027. 后缀表达式的值
组成的运算数及加(+)、减(-)、乘(*)、除(/)四种运算符。每个运算数之间以及运算数和运算符之间用单个空格隔开,不需要判断给你的表达式是否合法。保证参与运算的整数及结果之绝对值的绝对值均在。从键盘读入一个后缀表达式(字符串),只含有。一个整数,表示给定后缀表达式的值。一个字符串表示给定后缀表达式。如有除法保证能整除。输入字符串的长度小于。
2024-11-29 11:06:39
381
原创 【ACWing】3765. 表达式树
注意这道题里,单独的数字是不需要加括号的,但是如果是负数则需要加。可以先递归解决左子树,然后当前节点,然后右子树。最后将整个表达式左右多余的括号删掉。请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。当运算符是负号时,左儿子为空,右儿子为需要取反的表达式。树中所有叶节点的值均为非负整数。输出的等价中缀表达式分别为。树中至少包含一个运算符。
2024-11-29 03:31:10
443
原创 【Leetcode】3347. Maximum Frequency of an Element After Performing Operations II
一样,但这道题数据范围比较大,需要先做一下离散化再做。思路依然是,先做一下频率计数,然后暴力枚举要变成的数是几,如果要变成。对于所有操作的方案,问最终得到的数组里频率最大的数的频率可能是多少。这样的数就行了,具体证明比较显然,此处省略。次操作,每次操作可以将未操作过的一个数加上。,可以利用计数数组的前缀和数组来。的数的个数由两个因素决定,一个是。的可能性只需要考虑所有的形如。中的数都是正整数,且范围是。,再给定给一个非负整数。,这两个较小者再加上。
2024-11-16 03:33:27
903
1
原创 【Leetcode】3346. Maximum Frequency of an Element After Performing Operations I
对于所有操作的方案,问最终得到的数组里频率最大的数的频率可能是多少。先做一下频率计数,然后暴力枚举要变成的数是几,如果要变成。次操作,每次操作可以将未操作过的一个数加上。,可以利用计数数组的前缀和数组来。的数的个数由两个因素决定,一个是。,再给定给一个非负整数。,这两个较小者再加上。
2024-11-15 01:57:37
723
原创 【Leetcode】2458. Height of Binary Tree After Subtree Removal Queries
给定一棵二叉树,题目保证每个节点的数值都不相同。再给定若干询问,每次询问给定给一个二叉树中的节点的数值,问如果将这个节点为根的子树删掉的话,整个二叉树的高度变成了多少。每次询问是独立的,并且不会真的删除子树。这可以用一遍DFS求出。接着再来一次DFS将每个节点的答案求出来。首先求一下每个节点的深度,树根的深度定义为。
2024-11-13 02:25:12
993
原创 【Leetcode】3350. Adjacent Increasing Subarrays Detection II
为起点的最长严格上升数组的长度,则答案就是。结尾的严格上升子数组的长度,则如果。
2024-11-13 00:38:17
818
原创 【Leetcode】3349. Adjacent Increasing Subarrays Detection I
前半段验证成功了再验证后半段,都成功了返回true;如果后半段失败了,则可以移动。先验证前半段,如果失败了,则。可以直接跳过若干个到。
2024-11-12 19:05:55
218
原创 【Leetcode】2663. Lexicographically Smallest Beautiful String
产生回文子串的情况下尽可能小。如果此法能产生美丽字符串,则得到答案。变大一点点,肯定是变大尽可能靠右的字符最好。我们从右向左遍历,遇到。的时候,考虑能否将其变大一点点。以上思路是贪心的,但正确性非常显然。能变大,就可以直接默认解存在,继续求解答案。之一,而不存在没有解的情况。变大一点点之后,我们考虑的就是怎么让。开始向后,每个字符都验证能否在不与。,否则就会产生非平凡回文子串。个英文小写字母的范围之内;2.不含任何长度大于等于。大的最小的美丽字符串。注意我们这里只需要考虑。能变大,那么必然存在。
2024-11-12 18:41:13
821
原创 【Leetcode】3024. Type of Triangle
个正整数,问它们是否能构成一个三角形,如果不能,则返回"none";如果能,等边三角形返回“equilateral”,不是等边但是等腰返回“isosceles”,都不等返回“scalene”。
2024-11-04 18:07:56
167
原创 【ACWing】1212. 地宫取宝
个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这。的时候,我们不知道其含义是当前手里什么物品都没有,还是手里的物品最大价值是。如果取,也是一种方案,所以。为了方便,我们可以将每个物品的价值都加。,如果不拿这个位置的物品,是一种方案,所以。个物品,且手里物品的最大价值恰好是。
2024-10-30 16:47:37
759
原创 【ACWing】3699. 树的高度
树是一种特殊的图结构,有根树是一个有固定根的树。现在给定一棵有根树,编程求出树中所有节点到指定的根节点最远距离。输出距离根节点最远的点到根的距离。BFS记录一下层数,答案就是层数减。,表示数的顶点数和根节点的编号。的节点间有一无向条边。
2024-09-03 00:55:55
760
原创 【ACWing】3228. 俄罗斯方块
个小方块组成的板块从方格图的上方落下,玩家可以操作板块左右移动放到合适的位置,当板块中某一个方块的下边缘与方格图上的方块上边缘重合或者达到下边界时,板块不再移动,如果此时方格图的某一行全放满了方块,则该行被消除并得分。具体的,给定一个初始的方格图,以及一个板块的形状和它下落的初始位置,你要给出最终的方格图。之间的整数,表示板块图案最左边开始的时候是在方格图的哪一列中。,则它的左边和实际所表示的板块的左边是不一致的(见样例)。个方块是四连通的,即给定的板块是俄罗斯方块的标准板块)。,则表示初始的时候有方块。
2024-08-28 00:57:31
1189
原创 【Leetcode】3186. Maximum Total Damage With Spell Casting
可以先汇总一下每个数出现次数,然后用动态规划求解。问选出数的最大总和是多少。,可以在其中选数,但是如果。
2024-08-24 07:10:34
673
原创 【Leetcode】1997. First Day Where You Have Been in All the Rooms
问访问完所有房间至少需要多少多少步。可以证明所有房间都会访问完。,中间的房间一定都要走过。步,要么是回头,所以容易知道如果要从。如果是偶数次,则下一步会访问。号房间,那么下一步你会访问。如果你是第奇数次访问。因为每一步要么是向右走。号房间,再给定一个长。
2024-08-19 11:36:34
1003
原创 【Leetcode】2334. Subarray With Elements Greater Than Varying Threshold
如果存在,返回任意一个满足条件的子数组的长度;的区间就行了,可以使用单调栈。所以我们只需要枚举形如。的子数组使得该子数组每个数都大于。
2024-08-19 11:06:55
1027
原创 【Leetcode】2661. First Completely Painted Row or Column
这个数涂色,问第一次将某一行或者列涂满的最小的。
2024-08-19 06:50:15
695
原创 【Leetcode】910. Smallest Range II(配数学证明)
的话,最大值不会变,而最小值有可能变大,所以极差不会变大。直接枚举分界线即可。假设已经从小到大排好序。然后,可以证明对于任意使得极差最小的方案,都可以将其调整为,有个分界线,之前都是。,要使得整个数组的极差最小,问最小的极差是多少。这个数组的最小值和最大值很容易求。,在这种方案下,最大值一定是。,强制让每一项减或者加。
2024-08-19 06:36:15
787
原创 【Leetcode】901. Online Stock Span
,并返回上一个比它大的整数和它之间的下标之差。构造一个类,这个类每次接受一个整数(范围。,每次操作时空复杂度。
2024-08-18 09:06:00
255
原创 【Leetcode】2533. Number of Good Binary Strings
且左右无法继续延伸了的子串)的长度都是。的满足条件的串有多少个,对于任何长度为。的满足条件的串可以分为两类,一类以。,剩余的串肯定也满足条件,个数是。结尾,如果如此,那么去掉结尾的。子串(同上)的长度都是。
2024-08-18 06:57:59
724
原创 【Leetcode】2918. Minimum Equal Sum of Two Arrays After Replacing Zeros
变为任意正整数,使得两个数组的和相等。问这个最小的相等的和是多少。由于必须变成正整数,所以最终答案一定不小于。的数组和无法再变大了,此时无解;先求数组各自的和和各自有多少个。的数变得再大一些即可,返回。给定两个非负整数数组。
2024-08-18 06:33:30
796
原创 【Leetcode】2361. Minimum Costs Using the Train Line
是从任意点由慢线切换到快线所需要的花费。从快线切换到慢线是不需要花费的。我们把每个点拆为两个点,一个是慢线上的点,一个是快线上的点。这么多点,这两条线一条叫慢线,一条叫快线。点,问他到各个点的最小花费。分别是要到达慢线和快线。表示如果走慢线的话从。表示如果走快线的话从。
2024-08-17 15:08:41
588
原创 【Leetcode】2771. Longest Non-decreasing Subarray From Two Arrays
的最长非降子数组最长,问这个最长的长度。中最长非降子数组的长度,类似的,设。中最长非降子数组的长度。
2024-08-17 13:56:24
1051
原创 【Leetcode】1515. Best Position for a Service Centre
单元凸函数求最小值可以用三分法,而二维凸函数求最小值可以用三分套三分的方法。
2024-08-15 22:29:49
622
原创 【Leetcode】1513. Number of Substrings With Only 1s
【代码】【Leetcode】1513. Number of Substrings With Only 1s。
2024-08-15 14:33:25
407
原创 【Leetcode】1510. Stone Game IV
个石子,两个人玩游戏,每个人可以拿走正的完全平方数个石子,恰好拿完的人获胜。个石子的情况下是否必胜,初始条件。表示先手面对的局面是。
2024-08-15 12:56:12
758
原创 【Leetcode】1509. Minimum Difference Between Largest and Smallest Value in Three Moves
最优方案肯定是变两端的值,可以直接暴力枚举左右两端各变多少个数。,允许每一步将其中任意数变成任意数,允许最多。次操作,问得到的新数组的极差最小是多少。
2024-08-15 12:43:48
445
原创 【Leetcode】1508. Range Sum of Sorted Subarray Sums
的最大的数,而这个可以用二分答案来做。将这些和从小到大排序,问排序之后位于第。,如果将其所有子数组和求出来,则一共有。个的那些和的总和是多少。设子数组的和组成的数组是。数组上用双指针来求。,所以我们只需要会求。这一步,可以在前缀和。的所有子段和的和就是。
2024-08-15 12:30:59
649
原创 【Leetcode】2702. Minimum Operations to Make Numbers Non-positive
我们只需要验证哪些数需要额外的机会,并且总的额外的机会个数是否小于等于。次操作是否能达到目的。我们可以将一次操作理解为,先将所有数都减去。问至少多少次操作可以使得整个数组每个数都非正。每一次操作允许将某个位置的数减。次操作就可以理解为,每个数先减去。,同时再挑一个数减去。
2024-08-14 16:55:06
788
原创 【Leetcode】3225. Maximum Score From Grid Operations
允许在任意多列从上到下连续的格子涂黑色,涂完颜色之后,如果一个白色格子(即未涂色的格子)在横的方向与黑格子相邻,则该白色格子可以计入得分。对于所有的涂色方案,问最大总分是多少。的格子是否要计入答案,因为这一段格子可能是由其左边的那一列贡献,也可能由右边的那一列贡献。列的下面的格子分数的情况下的最大得分(即不计入贡献)。个格子的情况下,能得到的最大得分。列的下面的格子分数之后的最大得分(即计入。之间的白色格子的分数就行了;列白色格子的分数贡献);列涂了多少个格子,假设涂。个格子的情况下,且计入了。
2024-08-14 08:24:44
1097
原创 【Leetcode】2366. Minimum Replacements to Sort the Array(配数学证明)
(对于新产生的数也可以接着替换)。问最少要做多少次操作可以使得整个数组是非严格递增的。变成若干更小的数,这个时候原方案肯定比这个最优方案更优(因为它限制少)。了,我们才需要考虑做操作。如果不然,设某另一个最优方案里操作的最右边的数不是。为了使得后面继续拆分限制尽量少,我们希望。又必须被操作,所以这个最优方案操作的数就是。我们从后向前考虑数组,如果第一次发现。替换为两个数,且这两个数之和要等于。且这个值是能取到的,而直接让。,每一步允许将其中某个数。尽可能小就能同时达到。
2024-08-14 02:53:05
646
原创 【Leetcode】2365. Task Scheduler II
个任务,并且任务要按照顺序做。问最少要多少天可以使得所有任务都做完。显然每天如果能做任务,就要尽量做任务。,表示做完某类任务之后要休息。天才能再做相同任务。天就能做完并且每天只能做。
2024-08-14 01:58:34
202
原创 【Leetcode】2364. Count Number of Bad Pairs
在哈希表里出现的次数。的数对个数,可以开一个哈希表存。来讲满足条件的数对个数就是。,问数组中有多少个数对。
2024-08-14 01:43:09
327
原创 【Leetcode】2363. Merge Similar Items
个,要求汇总每个物品总共有多少个,并且按照物品的。给定两个数组,里面的元素都是。
2024-08-14 01:34:52
161
原创 【Leetcode】2996. Smallest Missing Integer Greater Than Sequential Prefix Sum
对于其最长的连续数字的前缀的和。,找到最小的大于等于。
2024-08-12 10:12:00
201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人