- 博客(193)
- 收藏
- 关注
原创 全排列问题cpp
综上所述,while (next_permutation(nums.begin(), nums.end())) 这行代码的作用是不断调用next_permutation函数生成序列nums 的下一个字典序排列,并在每次成功生成新排列后执行循环体中的代码,直到遍历完所有可能的排列为止。while循环的条件是next_permutation(nums.begin(), nums.end()),即只要next_permutation函数返回true(表示成功生成了下一个排列),就会继续执行循环体中的代码。
2025-04-21 20:47:30
394
原创 单调队列模板cpp
如果push进来的元素比之前的元素都大,那就把之前的元素删除,直到没有比刚进来的元素还大的元素为止。对于最小值反之,队头元素始终是最小值,即队列从头到尾是单调递增的。进行push操作时已经把小的元素给移除了。队列的出口处始终是访问的区间的最大值。
2025-04-18 11:54:48
468
原创 2024码蹄杯国赛真题
我们需要找出这个最大的总伤害值。前缀和数组 prefix 定义为 prefix[i] = nums[0] + nums[1] + ... + nums[i-1]。遍历前缀和数组,用单调队列维护当前窗口的最小 prefix[i],并计算 prefix[j] - prefix[i] 的最大值。这样,子数组 nums[i..j] 的和可以表示为 prefix[j+1] - prefix[i]。我们需要找到 prefix[j] - prefix[i] 的最大值,其中 j - i <= m。利用单调队列+前缀和。
2025-04-18 11:51:43
698
原创 欧拉筛求1-n的素数数量
定义两个数组,一个bool数组判断1-n是否为质数,不是的话为false,是的话为true,另一个数组prime储存1-n的质数,找到true,然后将质数的倍数设为合数即false,最后输出prime的数组大小即可。题目:输入n,输出1-n的素数个数。
2025-04-12 01:42:03
206
原创 牛客周赛———字符串
和<的位置是固定不变的,所以先处理这两个符号,然后再遍历一遍检查‘Z’,如果不符合条件将'Z'的位置改变正负性使其满足条件,然后遍历的时候记数答案就行了,注意s的首字符不能是Z,且处理Z的时候,每个字符前一个不能是0,否则相乘的话都等于0了。
2025-04-06 23:58:03
203
原创 4.5蓝桥入门赛题解
直接模拟就行了,利用set自带的去重操作存储字符串,最后输出set的size大小,注意插入操作可以利用string自带的insert操作,利用双层for循环把0~9依次插入到每个位置上,set会自动去重的,所以最后输出size即可。根据规律,如果[l,r]之间有偶数个,sum加上个数/2个1,如果是奇数,那么先加上前偶数个,然后最后一个数就是r,加上r即可。因此,如果目标浓度 m 不在所有咖啡液浓度的最小值和最大值之间,则无法通过混合得到目标浓度。第一题直接输出就行了。第二题if判断就行了。
2025-04-05 23:25:57
334
原创 洛谷单调栈练习题
具体来说,对于数组中的每个元素 a[i],找到它右边第一个比它大的元素 a[j],然后计算 j - i + 1,并将所有这些值累加起来作为最终结果。这段代码计算的是数组中每个元素与其"下一个更大元素"(Next Greater Element, NGE)之间的索引差加1的总和。
2025-03-31 10:21:06
182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人