
数据结构
文章平均质量分 81
lianxuhanshu_
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 935 (Div. 3) F. Kirill and Mushrooms【枚举+贪心+优先队列】
首先更形象的描述一下题意,假设我们选择k个数,那么就会有k-1数变为0并且是p数组前k-1位置描述的k-1个位置变为0,那么对于v(p(0)),v(p(1)),...v(p(k-1))就会全部变成0,根据题意,变成0之后就不能选择了,然后我们就只能从除了这k-1个位置之外的其他位置选择数了,然后要求我们在能获取最大魔力的基础上,选择最少的位置。请注意,采摘两朵蘑菇后,第三朵蘑菇的魔力将变为 0。对于每个测试用例,输出两个用空格隔开的整数,分别为可以酿造的灵药的最大浓度和基里尔为此需要使用的最少蘑菇数量。原创 2024-04-03 11:09:45 · 680 阅读 · 0 评论 -
牛客周赛 Round 38 G.小红的区间删除【树状数组】
时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 262144K,其他语言524288K。原创 2024-03-26 13:59:51 · 535 阅读 · 0 评论 -
牛客周赛 Round 38 F.小苯的回文询问【挖掘性质等价转换+线段树】
时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 262144K,其他语言524288K。原创 2024-03-26 11:25:51 · 970 阅读 · 0 评论 -
leetcode1793. 好子数组的最大分数【单调栈+双指针】
我们把每一个位置的高度画成一个对应高度的小矩形,那么就会形成一个柱状图,那么区间的长度*区间最小值的最大值本质就是最大矩形的面积,那么每一个位置都有可能成为矩形的高,那么我们不妨可以枚举每一个位置作为矩形的高,那么这个以当前选择位置为高的矩形左右俩边选择的所有位置的高都必须大于等于当前位置的高,左右俩边尽量延伸的更远能保证矩形的面积更大,那么实际上就是需要我们找当前为高的位置的左边最近的比当前位置小的位置和右边最近的比当前位置小的位置,这个过程可以使用单调栈进行维护。空间复杂度:O(1)。原创 2024-03-19 11:22:43 · 480 阅读 · 0 评论 -
Codeforces Round 933 (Div. 3) D. Rudolf and the Ball Game【模拟+set对集合去重】
每次测试时限:2 秒每次测试的内存限制:256 兆字节输入:标准输入输出:标准输出。原创 2024-03-13 10:59:39 · 857 阅读 · 0 评论 -
牛客周赛 Round 36 F.小红的好子串询问【树状数组】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K。原创 2024-03-11 10:35:15 · 1096 阅读 · 0 评论 -
leetcode 2386. 找出数组的第 K 大和【小根堆】
假设我们此时有一个数组[-1,-2,0,1,2,3],此时我们的最大子序列和为0+1+2+3=6,我们需要求得是第k大子序列和,我们需要将当前最大子序列和变小,要变小就是要减去某些正数或者加上某些负数,我们将所有的负数都取绝对值,那么此时的操作就变为了减去某些数。然后考虑元素3,可以插入[1,2]的末尾变为[1,2,3],或者替换[1,2]的末尾元素2变为[1,3]然后考虑元素2,可以考虑插入[1]的末尾变为[1,2],或者替换[1]的末尾元素1变为[2]然后考虑元素1,可以插入原来序列的末尾,变为[1]原创 2024-03-09 11:11:32 · 353 阅读 · 0 评论 -
leetcode 3031. 将单词恢复初始状态所需的最短时间 II【挖掘性质+枚举+字符串哈希】
这个题目需要抓住一个关键点就是在前面删除的字符是确定的,但是在尾部插入的字符我们是可以随意控制的,假设我们经过t次操作后回到初始状态,那么此时我们已经删除了tk个字符,如果tk>=n,也就是题目给定的字符串中的字符已经全部删除了,剩下的全是我们新加入的,由于新加入的我们可以随意控制,所以经过此时的t次操作是肯定可以回到初始状态的,也就是说答案不超过(n+k-1)/k,也就是原字符串中的所有字符都拿掉就一定可以自己控制回到初始状态。第 1 秒,移除 word 的前缀 "aba",并在末尾添加 "bac"。原创 2024-02-16 10:45:47 · 1183 阅读 · 0 评论 -
牛客周赛 Round 31 D.小红数组操作【哈希双链表+设置哨兵】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K。原创 2024-02-06 11:25:22 · 1448 阅读 · 1 评论 -
leetcode LCP 24. 数字游戏【等价转换+对顶堆维护中位数】
i = 2,将 [1,1,1] 操作成 [1,2,3] 或 [0,1,2],最少 2 次操作;i = 3,将 [1,1,1,2] 操作成 [1,2,3,4] 或 [0,1,2,3],最少 3 次操作;i = 4,将 [1,1,1,2,3] 操作成 [-1,0,1,2,3],最少 3 次操作;i = 5,将 [1,1,1,2,3,4] 操作成 [-1,0,1,2,3,4],最少 3 次操作;i = 5,将 [3,4,5,1,6,7] 操作成 [3,4,5,6,7,8],最少 7 次操作;原创 2024-02-01 10:30:48 · 1176 阅读 · 0 评论 -
leetcode 3013. 将数组分成最小总代价的子数组 II【滑动窗口+multiset】
上面只是最开始的那个区间,然后每次左窗口向右移动一个位置,删除左窗口处的元素,如果左窗口处的元素位于L,那么就在L中删除,否则说明在R中,那么在R中删除,然后右窗口向右移动一个位置,判断这个新元素是否小于L中最大值,如果小于说明当前元素应该加入L,否则说明应该加入R,左右窗口每移动之后,还需要维护一下L的大小为k-1,然后更新答案。分割 [10] ,[1] ,[2,2,2] 和 [1] 不是一个合法分割,因为 ik-1 和 i1 的差为 5 - 1 = 4 ,大于 dist。请你返回这些子数组的。原创 2024-01-24 10:43:05 · 1142 阅读 · 0 评论