![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
练习赛补题
文章平均质量分 85
.SacaJawea
这个作者很懒,什么都没留下…
展开
-
补题:leetcode第382场周赛 3022. 给定操作次数内使剩余元素的或值最小
本来是010 | 100 | 011,拆解后:(0 | 1 | 0) + (1 | 0 | 1) + (0 | 1 | 1)从高到低的过程中,若确定了某一位的运算结果能为0,之后的考虑便要带上可能为0的这一位。n个数进行或运算的结果最小,每次操作可以对相邻的两个数进行与运算,至多进行k次操作。n个数进行或运算,可以对每个数进行拆解,拆解成最小的bit后再进行或运算。回到题目,要使最后的运算结果最小,就要从高到低尽可能地使每个bit位为0。从高到低对每个数bitwei进行或运算。比如,2,4,3进行或运算。原创 2024-02-06 21:47:52 · 578 阅读 · 0 评论 -
补题与总结:leetcode第 377 场周赛
考虑优化,若当前搜索到第i个字符,并且替换了长度为j的子字符串,那么下一次的搜索要从第i+j个字符开始,可以预测,这个将被多次搜索,所以想到记忆化搜索。或者,考虑到替换操作的向后依赖性,是否能先确定当前位置向后的状态呢?若当前截取的字符串不是图中的点,那么后续的字符串也一定不是图中的点,因为后续字符串的前缀肯定包含当前字符串。对于每个字符,都有替换和不替换两种情况,若替换,则要在source和target中,截取该字符往后的子字符串,若能替换,则从子字符串的后一个字符开始搜索。以上思路为爆搜,时间复杂度。原创 2023-12-26 22:02:38 · 178 阅读 · 0 评论 -
补题与周总结:leetcode第 376 场周赛
wa穿了第3题,赛时其实想到了思路:中位数贪心,从中位数开始,用左右指针找到第一个回文数,与该回文数的代价就是答案。但是没有考虑到左右指针同时找到回文数的情况,wa了一发之后开始改。用一个vector保存代价,只要数组长度大于2就返回其中的较小值。但是没有注意到自己的算法是左右指针同时找,可能出现同一个指针找到两次回文数的情况,此时就不是左右指针分别找到一次回文数。后面改成:数组长度大于5就返回最小值才ac,赛后重写用第一次的思路写了一遍,很快就ac了。原创 2023-12-20 22:40:12 · 224 阅读 · 0 评论 -
补题与总结:AtCoder Beginner Contest 333 D、E
C题写了个三指针,从小到大枚举出满足题意的数,其实可以直接暴力枚举满足题意的数,但是会有重复的,用set去重即可,赛时没想到,三指针磨了很久。以为D题读懂了题意,然后写写写,debug了很久,赛后重写了一遍,也就只有个dfs,5分钟写完+debug就过了。现在想想应该是刚打完acc的影响,脑子转不动了。E题也想到了贪心,但是题意理解做了(又读了假题),想了一个巨复杂的贪心,看着ac人数有点多,发现不对劲。记录未被击败的不同类型怪物出现次数,遇到药水时,若对应类型的怪物未被击败,那么拾取该药水,否则不拾取。原创 2023-12-18 22:28:32 · 130 阅读 · 0 评论 -
补题与总结:牛客小白月赛83(B~F)
赛时却wa穿了D,没想到正解,用了暴力超时,发现答案的数量远远低于询问的数量,想用记忆化优化,接着wa穿。F,补题时wa穿,对于我目前的实力还是略难了,就算赛时能利用题目性质和数据范围推导出结论,最后的代码实现也会漏掉很多细节,因为要考虑很多边界和结论的性质。模拟蛇的轨迹,将二维数组转换成一维字符串,保存数组下标与字符串下标之间的映射关系,同时用pos数组保存每个字符在字符串的出现位置(下标)。工作台有三种情况:铜、银、金。的数据范围,对于一个长度为32的序列,假设经过运算的答案为ans,那么。原创 2023-12-18 11:11:20 · 379 阅读 · 6 评论 -
补题与总结:acc第134场周赛
正解思路:若在x和y之间建立新边,若s,t之间的最短路发生变化,那么最短路一定会经过新边。即最短路为:min(s->x->y->t, s->y->x->t),考虑题目给定的图最多只有1000个点,暴力枚举经过新边的最短路不会超时(枚举次数为1000 * 1000 = 1e6),所以bfs预处理s,t到其他点的最短路,然后暴力枚举即可。一个原因可能是图论题练的少了,没有往枚举点对求最短路的方向想,二来是这题一眼看去确实像贪心,结论题,三是对于新边是否会影响最短距离这个问题没有深入思考。原创 2023-12-18 09:15:30 · 35 阅读 · 0 评论 -
AtCoder ABC324 B~E赛后补题
赛时没有写出E,早上补完E。原创 2023-10-15 12:00:45 · 328 阅读 · 0 评论 -
Codeforces Round 887 Div.3 A~D
而1到2之间的数为3,是一个小于等于数组长度的数,若1到2之间的数为一个大于数组长度的数,比如1 4 2 5 3或者1 5 2 3 4,前三个数构成的子数组不再是全排列。由于被记录的下标中,要取出最大与最小值,并且每次的询问操作还是叠加的,这里用set保存被记录的下标,begin()和人begin()返回的就是最小与最大值。每次判断要反转的括号是否在set中,若不在,则说明该下标上的括号原本是正确的,反转后将该下标加入set,若存在,将该下标从set中删除。每一列中,相邻元素相差4,满足题意。原创 2023-08-24 14:27:09 · 136 阅读 · 0 评论 -
Codeforces Round 879 Div.2
统计-1的数量cnt,当cnt为奇数或者n-cnt-cnt < 0(1的数量小于-1的数量)时,ans++,cnt–如下图,在三种情况中取阴影部分最大的情况,遍历所有区间,将每个区间都构造成得分最高区间,取所有情况的最大值。cnt = 2, ans = 4,A先修改,B反转,A再修改,此时两串反转后才相等,所以需要等B反转。发现规律,若cnt为偶数,ans为2 * cnt,cnt为奇数,ans为2 * cnt - 1。1234,1244,直到第4位时前缀才不同,数位差为:0+0+1,最后构造一个9。原创 2023-08-22 16:36:54 · 161 阅读 · 0 评论 -
Codeforces EDU 151 Div.2
通常求最小子段和,都是使用dp,然而这题求的并不是具体的最小子段和,这题求的是最小子段和的左区间,以及一个前缀和信息。将横纵方向分开来看,对于横坐标,若两者的终点都在起点的同一方向(都位于左边或左边),此时横向的最短距离等于横向距离离起点近的终点的横向距离,即。比较暴力的解法是枚举所有可能的序列,用爆搜判断该序列是否为s的子序列,只要有一个序列不是s的子序列就输出YES,否则输出NO。给定三个点,A为起点,BC为终点,从起点走到两个终点的最短路中,最长的公共路径长度是多少?问k为多少,最后的分数最高?原创 2023-08-21 12:40:28 · 137 阅读 · 0 评论 -
Codeforces Round 881 Div.3
每次check时,进行mid次操作,遍历所有区间,只要有区间的1数量大于0数量,check就返回true。那么在之后的操作中,1的数量只增不减。首先,分析题意:一个元素全为0的数组,给定m个区间与q个操作,每次操作将某个元素置为1,问第几次操作时,m个区间中至少有一个区间的1的数量大于0的数量。将数组中的每个数染色,同一颜色的数字中,将最大值与最小值相减得到分数,问:所有的染色方案中,总分最高是多少。显然,同一颜色的数字除了最大和最小,其他的数没有用,要使总分最高,同一颜色的数字要最少,最少为两个。原创 2023-08-18 19:47:00 · 178 阅读 · 0 评论