![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
文章平均质量分 85
lianxuhanshu_
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 935 (Div. 3) E. Binary Search【二分本质+分类讨论】
显然当 p 未排序时二分查找的结果不一定为 x,现在你希望进行不超过两次交换操作,使得操作后的排列 p 能使得二分查找的结果为 x。可以发现其实对于(2)(3)俩种情况都是可以直接交换x和pl的,所以我们合并这俩种情况,综合分析我们可以得出如下结果。空间复杂度:O(1),不考虑输入所占空间,只使用了常数个额外变量。一次交换操作为:选择 1≤i,j≤n,交换 pi,pj。时间复杂度:O(n),找到x所在位置需要遍历一遍数组p。(1)二分查找结束时,pl==x,(2)二分查找结束时,pl>x。原创 2024-04-04 10:59:04 · 421 阅读 · 1 评论 -
leetcode 331. 验证二叉树的前序序列化【计数器】
当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如。给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。每个以逗号分隔的字符或为一个整数或为一个表示。例如,上面的二叉树可以被序列化为字符串。序列化二叉树的一种方法是使用。你可以认为输入格式总是有效的。时间复杂度:O(n)。空间复杂度:O(1)。原创 2024-03-31 09:45:51 · 419 阅读 · 0 评论 -
Acwing 5471. 数对推理【思维+模拟】
如上图所示,上边是a的数对,下边是b的数对,我们对所有数对进行编号,同时红色线连接表示俩个数对恰好有一个公共数,那么什么时候农夫约翰可以截取到俩人的数对的公共数呢,肯定是当a中的每一个数对和b中的数对的所有有红色线连接数对的公共数只有一种,此时可以通过a连接到b的红线知道他们俩个人数对的公共数,或者是当b中的每一个数对和a中的数对的所有有红色线连接数对的公共数只有一种,此时可以通过b连接到a的红线知道他们俩个人数对的公共数。初始时,贝茜和贝蒂都只知道自己拥有的数对,而不清楚对方拥有的数对。原创 2024-02-18 18:05:37 · 792 阅读 · 0 评论 -
牛客周赛 Round 32 E.小红的回文数【挖掘性质+哈希前缀和】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K。原创 2024-02-12 11:07:56 · 717 阅读 · 0 评论 -
Acwing 5468. 最有价值字符串【挖掘性质+分类讨论】
对于上述例子1,我们可以发现子串ab出现了三次,同时这个字符串中的出现次数最多的子串出现的次数也是3,我们观察可以发现,ab出现了三次,自然ab中的a和b都出现了三次,也就是说子串a和子串b也都出现了三次, 我们可以发现对于某个子串出现了k次,那么这个子串中的每个字符都至少出现k次,当子串中有重复字符时,那么某个字符的出现次数会大于k,也就是说我们只需要考虑长度为1的子串即可,因为长度等于1的子串出现的次数肯定大于等于长度大于1的子串出现的次数。当k+n<=len,出现次数最多的字符出现的次数就是k+n。原创 2024-02-11 16:29:13 · 665 阅读 · 0 评论 -
leetcode 3027. 人员站位的方案数 II【离散化前缀和+枚举】
首先题目说了一个在左上角,一个在右下角,从左往右横坐标x递增,从上往下纵坐标递减,所以我们从按照横坐标从小到达排序,横坐标相同时,纵坐标从大到小排序,固定i,从j=i+1枚举,那么j的纵坐标必须小于等于i的纵坐标,同时j的纵坐标必须大于前面枚举的所有点的纵坐标,才能保证i为左上角,j为右下角的矩形里面和边界没有其他点。不能安排 liupengsay 站在 (1, 3) 且小羊肖恩站在 (3, 1) ,因为站在 (1, 1) 的人处于围栏内。注意围栏是可以不包含任何面积的,上图中第一和第二个围栏都是合法的。原创 2024-02-09 09:52:38 · 1070 阅读 · 0 评论 -
AtCoder Beginner Contest 339 B.Langton‘s Takahashi【模拟】
代码实现的关键所在就在于怎么实现顺时针逆时针的方向转变,首先上方顺时针旋转就是90°就是右侧,逆时针旋转90°就是左侧,我们可以发现这个转变不就是bfs中使用的那个往四个方向扩展的dx和dy数组,首先面向上方,相当于dx[0],dy[0],然后顺时针旋转就是都在数组中的下标加1,逆时针旋转90°就是都在数组中的下标减1,只不过要把这个数组搞成循环数组,然后模拟即可。也就是说,每个1≤i≤H的(i,1)在(i,W)的右边,每个1≤j≤W的(1,j)在(H,j)的下面。高桥位于(1,1),并且朝上。原创 2024-02-05 11:28:47 · 907 阅读 · 0 评论 -
leetcode 3017. 按距离统计房屋对数目 II【推公式+分类讨论+对称性+差分】
对于 k == 1,满足要求的房屋对有 (1, 2), (2, 1), (2, 3), (3, 2), (2, 4), (4, 2), (3, 4), (4, 3), (4, 5), 以及 (5, 4)。- 对于 k == 2,满足要求的房屋对有 (1, 3), (3, 1), (1, 4), (4, 1), (2, 5), (5, 2), (3, 5), 以及 (5, 3)。- 对于 k == 2,满足要求的房屋对有 (1, 3), (3, 1), (2, 4), 以及 (4, 2)。原创 2024-02-03 14:58:44 · 1020 阅读 · 0 评论 -
leetcode 3022. 给定操作次数内使剩余元素的或值最小【位运算+试填法】
1. 将 nums[0] 和 nums[1] 替换为 (nums[0] & nums[1]) ,得到 nums 为 [3,15,14,2,8]。1. 将 nums[0] 和 nums[1] 替换为 (nums[0] & nums[1]) ,得到 nums 为 [1,3,2,7]。2. 将 nums[2] 和 nums[3] 替换为 (nums[2] & nums[3]) ,得到 nums 为 [1,3,2]。2 是 k 次操作以内,可以得到的剩余元素的最小按位或值。最终数组的按位或值为 2。原创 2024-02-02 11:08:11 · 616 阅读 · 0 评论 -
AtCoder Beginner Contest 338D - Island Tour【枚举】
长度更确切地说,原创 2024-01-28 11:55:36 · 1752 阅读 · 0 评论