- 博客(43)
- 收藏
- 关注
原创 题解:AT_arc205_a [ARC205A] 2x2 Erasing
很显然暴力是超时的,考虑优化。容易发现题目每一次询问是对一个矩形区域,可以使用二维前缀和对每一个区域进行预处理。这样就可以把每一次查询的时间复杂度降至。需要注意的是对于边界的处理(详见代码)。
2025-09-11 15:47:50
190
原创 题解:P3378 【模板】堆
但本题维护最小值,优先队列默认为小根堆,需要改为大根堆这样才能保证队首是序列的最小值。维护一个有序序列,可以使用优先队列维护,每次操作是一个。
2025-07-09 18:44:43
251
原创 题解:AT_abc413_e [ABC413E] Reverse 2^i
很容易发现既然可以翻转任意次,那么就能够贪心地想:选取局部最优解从而得到全局最优解。最局部的情况是什么?以单个元素作为一个段进行翻转操作。于是,我们把每个元素作为一个段,每次都对相邻段进行合并(注意保证字典序最小),其实这个合并过程类似于归并排序。通过任意次翻转操作使得排列。代码有些冗长,将就着看吧。
2025-07-09 18:42:25
308
原创 题解:P2831 [NOIP 2016 提高组] 愤怒的小鸟
因为所有的猪都必须被打倒,并且最后的答案与被打倒的猪的顺序无关。因此,我们可以直接从头到尾以一个线性的。,所以在解决这个问题的时候,尽量会往暴搜或 dp 上面考虑。时,至少需要发射的鸟的数量。这样就可以把时间复杂度降低为。表示为已经挂掉的猪的集合为。
2025-05-21 13:23:10
814
原创 题解:CF2084B MIN = GCD
倍数的元素分为第二组,判断第二组的最大公因数是否为。倍数的元素分为第一组(保证了。考虑最简单的构造方式,令。是其中最小的元素),
2025-05-12 16:24:34
919
原创 题解:CF803D Magazine Ad
拿到题目无从下手,从数据范围开始分析,明显是一个。的时间复杂度,但是此题明显与数据结构无关,又带。在二分时记录答案即可,实现细节见代码。的时间复杂度,考虑二分答案。
2025-03-25 00:15:00
617
原创 题解:AT_abc396_d [ABC396D] Minimum XOR Path
第一眼看到题会认为是 bfs,但是注意异或的值不能通过优先队列求最小且。,所以使用 dfs 对答案进行求解。实现时注意数据范围与初始化即可。
2025-03-10 16:53:30
329
原创 题解:AT_abc394_c [ABC394C] Debug
减一即可,并不需要从头重新遍历,从而降低时间复杂度。只会对前一个字符的答案有影响。,面对这种情况,只需要将位置。首先考虑暴力,每次只要遇到。这样肯定是会超时的。进一步思考,发现修改。
2025-02-27 17:33:45
282
原创 题解:AT_abc393_d [ABC393D] Swap to Gather
想要移动距离最小,肯定是向中间靠拢,可显然正解并不是直接在原数组中取最中间的数。数组中找到中位数并计算答案。
2025-02-27 17:33:03
711
原创 题解:AT_abc393_f [ABC393F] Prefix LIS Query
当遍历数组中的每一个元素时,通过二分查找来决定这个新元素应该更新哪个位置上的值,从而保持。中始终存储着对于不同长度下的最优解。的长度就是所求 LIS 的长度。很简单,用二分查找函数即可。,所以考虑使用 LIS 的。的 LIS,考虑如何维护。
2025-02-27 17:32:27
733
原创 AT_abc339_c题解
一辆公交车正在运营。公交车上的乘客数量始终是一个。在某个时间点,公交车上可能有,并且从那时起它已经停止了N次。在第i次停车时,乘客数量增加了Ai。在这里 ,Ai可以是负数,表示乘客数量减少了Ai。此外,在除了停车点以外的地方没有乘客上下车。找到与给定信息一致的公交车上。
2025-02-10 09:02:57
795
原创 Luogu P10131 [USACO24JAN] Majority Opinion B题解
【代码】Luogu P10131 [USACO24JAN] Majority Opinion B题解。
2025-02-10 09:02:25
798
原创 AT_agc004_b [AGC004B] Colorful Slimes
把 直接抓第i号史莱姆看作抓了第i号史莱姆之后,施展了0次魔法。那么所有史莱姆都可视为抓了某种史莱姆之后,施展若干次魔法得到的。假设对于第i个史莱姆,它是抓了第i−ki])号史莱姆后,施展ki次魔法得到的。那么一定可以构造方案,使得施展魔法的总次数为maxki])。假设有5种颜色,魔法代价为10,捕捉代价为11001100100。那么每种史莱姆分别需要魔法01012次。即先抓3号史莱姆、施展魔法4、抓1号史莱姆、抓3号史莱姆、施展魔法。
2025-02-10 08:59:15
629
原创 Luogu P10224 [COCI 2023/2024 #3] Vrsar
让我们假设某个最优解使用了多个溜冰场。看看 诚诚和勤勤 最后滑冰的溜冰场。如果他们直接去那个溜冰场,解决方案将是相同的。她们到达那里所花的时间不会更多(因为在两种解决方案中他们都必须到达那里),而且在其他溜冰场滑冰的每一分钟都可以用在最后一个溜冰场上。有了这个观察,我们可以简化一下任务。我们不需要从山上下来的时间。官方解决方案使用了两个集合,一个用于当前位置左侧的位置,一个用于当前位置右侧的位置。有关详细信息,请查看附带的实现。对于这个任务,最重要的观察是总是可以找到一个只使用一个溜冰场的最优解。
2025-02-10 08:58:43
330
原创 CF1628A Meximum Array
最大的一个前缀,为了最大化我们后面的值,那么我们显然是选的前缀越短越好。而考虑如何快速求到这个前缀,我们可以考虑从小到大枚举这个。同级,而一个数字最多被删除一次,这样时间复杂度就是。,如果有就枚举下一个数,不然我们就让。了,我们就先看这个前缀中是否有。写个 vector 上二分就好了。的,但是因为删除的数字个数和。,那么证明我们得到的前缀。显然地我们每次肯定要选。的值,假设现在枚举到。显然这样一次的复杂度是。
2025-02-10 08:58:09
958
原创 AT_abc392_d Doubles
个序列,我们并不好直接操作。于是先使用 set 进行去重并统计不同数字出现的次数。个序列并计算答案,取最大值即可。预处理之后,直接枚举第。
2025-02-10 08:57:32
352
原创 AT_abc392_f Insert 题解
结合题目要求与数据范围不难想到使用平衡树来进行维护(本人采用 FHQ treap,Splay 当然也可以)。本题甚至可以说是平衡树模板的简化版本,没有删除与修改操作,只是需要注意在插入时应按排名(位置。首先阅读题目,发现就是维护一个数列(进行插入操作),其次观察数据范围。
2025-02-10 08:56:30
520
原创 题解:UVA11631 Dark roads
最小生成树(Minimum Spanning Tree,简称 MST)是一种在连通图中生成一棵树的算法,该树包含了图中所有的顶点,并且边的权值之和最小。二维数组,所以本题用 Prim 做法会更加复杂(使用邻接表存储变量,没试过),故考虑 Kruskal。最常用的两种最小生成树算法是 Prim 算法和 Kruskal 算法。请你根据所出数据求出最小生成树的大小,得出。但是这里的数据范围明显开不下一个。
2025-02-09 12:12:47
380
原创 CF799C Fountains
我们再次思考,题目求最大的美丽度,所以我们可以以美丽度为权值,价格为下标建立树状数组,把时间复杂度优化为。座用钻石买的或者是用金币、钻石买的各。的暴力明显不理想,考虑优化。种情况,再用树状数组计算第。另外,两个最大值的选择有。读完题目很容易想到通过。座喷泉并统计最大值。
2025-02-09 12:10:47
700
原创 题解:P10466 邻值查找
我们可以发现,对于最后一个数字而言,因为它后面没有数字,所以,这个数字的答案为排序后它前面那个数字与它的差的绝对值。而在除去最后一个数字后,倒数第二个数字又成了新的最后一个数字,又可以用同样的方式计算答案。而言,要得到一个值,使得它们的差的绝对值最小,那么这个值只可能是在排序情况下的前一个或后一个位置的值。若直接暴力计算,则可以使用插入排序,每次插入一个新的值,再进行上述方法的一个判断,时间复杂度为。我们可以思考这样一个问题:若要减少时间复杂度,那就要优化成一个。因此,需要考虑其它更优的方法解题。
2025-02-09 12:09:46
1048
原创 题解:CF1616B Mirror in the String
结果不出意料的错了。仔细思考一番,我们可以发现并不是所有的情况都可以取。的答案,如代码注释里的 hack 数据,无论怎么取答案,都是由字符。组成的字符串,也就是说在这种情况下,长度越短的字符串字典序越小。的字典序,题目求字典序最小,所以直接遍历一遍字符串。的时候,当前位才能取。
2025-02-09 12:09:15
573
原创 题解:SP5976 TRGRID - Traversing Grid
【代码】题解:SP5976 TRGRID - Traversing Grid。
2025-02-09 12:08:45
807
原创 题解:CF2000C Numeric String Template
一眼模拟题,如果当前字符串与模板的长度不同,肯定不合法。而想要判断字符串的每一位都是否合法很容易想到。的暴力判断,可是明显会超时,于是采用 map 来打标记,从而优化时间复杂度。
2025-02-09 12:08:13
251
原创 题解:CF2037D Sharky Surfing
那么用一个栈或队列存储下来,遍历完优先队列再存进去。如果遍历完优先队列后仍不能越过当前障碍,无解输出。要找到收集的最少能量提升数量,思路很清晰,可以把。遍历每一次障碍的区间,如果。
2025-02-09 10:20:56
884
原创 题解:CF2037C Superultra‘s Favorite Permutation
【代码】题解:CF2037C Superultra‘s Favorite Permutation。
2025-02-09 09:45:18
439
原创 题解:CF2051D Counting Pairs
于是我们可以遍历数组,利用两个不等式二分得到每一个。是一对有趣整数对,那么必须满足。读完题目,可以整理出如果整数对。
2025-02-09 09:44:48
575
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅