- 博客(16)
- 收藏
- 关注
原创 ABC394题解(E)
大概思路:反向思考,由于回文串的对称性,我们找回文串的中间那个点,然后向连接边的编号相同的两个点拓展,每拓展一层回文串的长度会增加 2 ,即 ans[ i ][ j ] = ans[ u ][ v ] + 2 ,这其实就是一个 BFS ,求得的“左拓展点 i 到中间点 u ,v 再到 右拓展点 j ”的边的编号所连成的回文串就是i 到 j 的最短回文串。时间复杂度 O(n^4) 可以通过此题。
2025-03-05 21:39:14
321
原创 ABC题解(ABCDEF)
思路:我们自然想到用一个数组 gedelong[i] 来记录鸽子 i 的笼子的编号,先尝试按照题意模拟操作一遍,发现难点在于操作 2 将 a 和 b 笼子的鸽子全部互换,如果暴力操作必定超时,于是我们想到可以只交换 a b 笼子的位置,这样做会引入新的数组 longdepos[i] 记录编号为 i 的笼子的位置,posdelong[i] 记录位置为 i 的笼子的编号。思路:题目讲得很清楚了,模拟即可。O(n^3) 可以通过此题。O(n) 可以通过此题。O(n) 可以通过此题。O(n) 可以通过此题。
2025-03-03 22:22:01
338
原创 2025牛客寒假算法基础集训营2题解(ABCDFGHJK)
思路:按位分解 x 和 y 为 xi 和 yi ,可以发现 xi + yi == (xi OR yi) + (xi AND yi),于是x + y == (x OR y)+(x AND y),从而 x + y == x + y + (x XOR y),显然有 x XOR y == 0 可以推出 x == y ,那么 x 和 y 的组数就等于区间长度。注意,由于“找 a[i] 后的相同的 a[j] ”该操作具有方向性,所以还需将字符串反着遍历操作一遍,最后取两种操作后的最大值。
2025-02-19 00:16:36
1084
原创 2025牛客寒假算法基础集训营1题解(ABDEGHJM)
具体地,我们可以通过将数组 a 排序成 sa,来轻易地得出前 i 小值,每次扩展后的数组最小值不是第一小值 sa[1] 的两倍,就是下一个要拓展的值 sa[i+1] ,最大值是区间内每个数乘 2 后的最大值。从 1 到 n 按顺序选择区间指定 i 时,我们发现,在包括 i 的前提下,我们应该尽可能选择右端点较小的区间,如右端点相等则选择左端点更小的区间(即更靠左的区间),由于 i 是在递增的,这样的区间紧迫性更强,优先处理尽量避免后续区间无法找到合适的数字,如果找不到合适的区间则输出 -1。
2025-02-16 17:32:42
1695
原创 ABC389题解(ABC)
思路:观察发现,每次需要输出第 k 条蛇的长度的时候,其实就是要求前 k-1 条蛇的长度和( k 为1 时即输出 0 ),我们可以通过维护一个前缀和来轻易地求出。具体地,我们通过维护两个指针 f 和 b 来描述队列的首尾,插入新的第 b-f+1 条蛇时让 b++ ,并用新蛇的长度 l 更新此位的前缀和 (注意,前缀和的第一项是 0 ),删除蛇时,我们让 f++, 查询第 k 条蛇时,通过 pres[f+k-1]-pres[f] 求出前 k-1 条蛇的长度和。思路:模拟即可,记得开long long。
2025-01-20 23:07:10
282
原创 QLU(SDAS)2025寒假集训(三)题解(ABC)(更新中)
思路:观察发现,如果第一个字符是 1,那么我们所要做的就是寻找一个从第二个字符开始的子串,使得删去这个子串后总分数最大。我们可以先去掉开头的 0,然后枚举串的长度,寻找被删除后总分数最大子串即可。思路:观察发现,交换次数只取决于种类的分布:如果存在某个种类只拥有一个元素,则必定不可能成功,拥有偶数个元素的种类的最小交换次数为种类数 kn[i] 除 2 ,奇数则为 (kn[i]+1)/2。思路:观察发现,影响每次拆几包的关键是上一次煮汤圆可能剩下的汤圆个数。
2025-01-20 18:24:48
214
原创 Codeforces Round 998 (Div. 3)题解(ABCD)
思路:由于只有鲍勃对分数有贡献且为后手,即使爱丽丝每次尽量选择没有匹配项的数,鲍勃都能将分数最大化,所以我们只需模拟鲍勃的选数逻辑即可。遍历所有的数 x[i],如果匹配的数 p 与之相等,那么 x[i] 分数对分数的贡献为其数量 vs[x[i]] 的一半,如果不相等,分数取决于 x[i] 和 p 的数量的最小值(如果 p 不存在则最小值为 0 )。于是我们猜测应按顺序模拟操作,只要操作后两个数的大小关系合法我们就尽量操作。思路:观察发现,奶牛们应该按照从小到大的顺序出牌,我们将所有牌排序,模拟此过程即可。
2025-01-20 17:58:43
780
原创 QLU(SDAS)2025寒假集训(二)题解(ABCDEFJ)
思路:观察题目,发现我们需要构造如下数据关联:产地与其所产多种水果品种的关联,某个产地的某种水果与其数量的关联。我们都可以使用map轻松实现:前者产地为键,存有该产地水果品种的vector为值;后者关联产地与品种的pair为键,该产地此品种水果的数量为值。观察发现,有问题的订单的位置关于能顺序完成的订单的个数似乎具有某种单调性,于是我们考虑对问题订单使用。地思考,机器猫在闯关过程中可能损失的最多血量,将其加上1即为所求。思路:观察发现,所有满足条件的连续正整数段互不重叠,考虑使用。
2025-01-17 22:21:41
361
原创 QLU(SDAS)2025寒假集训(一)题解(ABCDEFGL)
设dp[i]表示青蛙跳到第i块石头的最小费用,从第i-1到i-K块石头,青蛙都可以跳到第i块石头,所以可以有如下状态转移:设到达第i块石头的上一块为第j块,则有。1能被所有正整数整除,所以我们首先将数组中所有为1的元素加上1,然后遍历数组,当a[i]能被a[i-1]整除时,让a[i]加1。显然操作次数在2*n之内。思路:在遇到2之前,我们无法得知新买的豚鼠的性别,所以必须把每个豚鼠单独关起来,当遇到2时,我们可以确认已买的所有豚鼠的性别,于是。
2025-01-15 01:45:58
297
原创 Codeforces Round 996 (Div. 2)题解(ABC)
考虑到被篡改的路径只向右方或下方,即后操作的点不会影响之前的点,我们可以按照所给的方向字符串 s 逐个模拟:当方向为 D 时,修改该点,使其所在行总和为 0;思路:由于每合成一个材料,其他材料都将减少,我们不难发现,当有多个材料出现缺失时,无论如何都无法合成神器;当只有一个材料缺失时,如其他材料存在没有盈余的,也无法合成神器,如果都有盈余,只要缺失的数量小于等于盈余的最小值则必定能合成神器。思路:通过观察,考虑Alice的胜败与二者初始位置的距离有关,具体地,距离为偶数则Alice必胜,反之则败。
2025-01-14 23:18:17
233
原创 牛客周赛 Round 76题解(ABC)
的思想,显然越短的子串出现的次数可能越多,而最短的子串就是单个的字符,故只需要统计出现最多的字符是什么即可。地思考,任意次操作后数组的最小值,就等于整个数组所有数的gcd。记得开long long。思路:我们知道gcd(a,b)<=min(a,b),
2025-01-13 00:32:47
199
原创 ABC388题解(ABC)
思路:根据题意,发现题目保证输入数据有序,顺其自然想到这种双指针法:遍历每个元素 l[i],让 j 自增到第一个大于等于两倍 l[i] 的数 l[j],n-j+1 就是大于等于两倍 l[i] 的元素个数,将个数求和即可。时间复杂度是O(n)可以通过此题。思路:数据范围很小,暴力即可。
2025-01-12 23:10:25
336
原创 ABC387题解(ABD)
思路:广度优先搜索,特殊的地方在于每一层的拓展方向是垂直和水平交替的。我们通过用一个结构体来记录每个点拓展的方向,拓展出来的点的拓展方向则相反。
2025-01-12 18:58:53
173
原创 ABC386题解(ABCDE)
思路:就这么几种情况,模拟即可:四个都一样肯定不行;有三个一样的肯定可以;如果是两个一样的就看另外两个是不是也一样否则不行;四个都不一样肯定不行。
2024-12-30 15:18:30
423
原创 ABC373题解(ABC)
思路:枚举当前要按的字母,每次遍历键盘,计算当前要按的字母和上一个按的字母的距离,累加一下。思路:读入每一个字符,判断字符串长度和当前字符串的次序是否一致。思路:遍历两个数组,找到两个数组中最大的元素,相加直接输出。
2024-10-14 13:02:31
294
原创 ABC372题解(AB)
思路:贪心,每次分解数的时候尽可能枚举最大的Ai从而分走最多的数,然后将这次分解出的Ai的个数和分完后剩余的数存下来,当剩余的数为0时说明分解完成。题目大意:你将得到一个由小写英文字母和 . 组成的字符串 S。请输出从 S 中删除所有。思路:读入字符串,枚举判断每个字符,如果是 . 则不输出,如果不是 . 则输出。题目大意:太难写了自己看吧。
2024-09-22 17:44:03
288
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人