- 博客(52)
- 收藏
- 关注
原创 P3740 [HAOI2014] 贴海报 题解
因为每个区间的最小值只能是当前数字,因为当前区间已经被当前数字全部覆盖了。循环枚举的话是会超时的,我们考虑用线段树维护区间数字。那么所有操作结束后如果当前区间还有当前数字,后面的数字可以覆盖前面的数字。我们模拟一下贴海报的过程,先把。
2025-06-13 20:56:56
389
原创 题解:AT_past202109_h 最短経路
这一眼就是最短路的题目啊。为什么不用Dijkstra用 死了的SPFA。因为。这一题的数据比较小。可以暴力枚举最短路的起点,跑 SPFA,找到符合的直接输出,结束程序。Okn。那么总的时间复杂度为Okn2,可以通过此题。需要注意的是,题目是无向边。这随机的数据下,SPFA是快一点的,毕竟是Okn。
2025-03-07 22:18:37
459
原创 题解:AT_abc394_c [ABC394C] Debug
我们会发现有时转换并不是从前往后一次就能完成的。有时候需要往回退转换多次。例如。那我们可以想到双重循环的做法,但是看看数据范围,会超时。仔细思考过后,可以发现重复转换的字符只能在当前字符的前面。那么我们可以直接退回去更新。且退回去更新之后重新经过当前点时,一定已经无法再继续更新。那么优化就完成了。
2025-03-07 22:04:47
210
原创 编辑文章 - 题解:P11557 [ROIR 2016] 有趣数字 (Day 2)
记忆化搜索。很明显这题的输入一定是字符串。那么我们还需要写一个字符串减法,来计算左端点减一的值。题目要求计算区间l∼r内有趣的数字的数量。那么1∼r的有趣数字的数量减去1∼l−1的数量就是区间内有趣数字的数量。那我们可以用记忆化搜索的方式就行计算。记忆化搜索只需要三个参数。当前构造到的位置now,上一个数字last,以及当前构造的数字是否顶格l。使用last参数来判断当前数字是否按非递减顺序排列。使用l参数来判断当前数位上所能取最大值。
2025-02-12 21:07:18
977
原创 题解:CF673B Problems for Round
我们容易想到,要是想要把一个长度为n的数组中的数字分成两份。其中第一份的所有数字都要大于第二份。那么会有n−1种方案。也就是每两个数字之间划分一次。题目输入m组x和y,要求x和y不能被分到一组。那么会有两种不可行的情况,x和y同时被分到数字较小的那组,或者同时分到较大的那组。如下图,以红色线条作为划分的情况是不可行的。也是就1∼x和y∼n的所有数字之间划分的情况是不可行的。那我们可以想到一个比较暴力的方法,用数组差分标记不可行情况。数组ai表示在i和i1。
2025-01-21 12:11:20
679
原创 题解:CF286A Lucky Permutation
这题是一道找规律的题目。一眼看不出规律可以先写个暴力输出一下。输出前十四个答案,答案如下。我们发现答案是四个为一轮。当n取模4等于2或者3时答案为−1。那剩下的两种答案直接构造数组。数组构造方法,详细见图与代码。
2024-12-27 20:27:31
431
原创 题解:CF373B Making Sequences is Fun
我们拿到这一题可以发现,可以使用二分查找。如果 check 函数这样写,那代码就算用了二分优化也一定会超时。那我们可以考虑如何优化 check 函数。我们发现,每一个数字的花费只和k与数字的位数有关。因为k是固定的,而且一定范围之内的数字位数是相同的,那么这个范围之内的花费是全都相同的。如果我们记当前数字 now 的位数为 num,那么这个范围就是now∼10num。那这个范围的总花费就是10num−now×num×k。想到这,优化就完成了。
2024-12-27 20:26:19
920
原创 题解:CF384B Multitasking
给你n个长度为m的数组和一个只能为0或者1的整数k。要求你同时对所有数组进行最多2m×m−1次交换操作使得所有数组按题目要求的升序或者降序排序好。当k为0时,数组必须按升序排序,否则必须按降序排序。进行交换操作时选择两个位置i和j,只有当位置i的值位置j的值时,才会交换两者位置。
2024-12-07 13:11:07
956
原创 题解:CF332B Maximum Absurdity
题目要我们找两个不重叠的区间,并使区间的值最大。那我们可以考虑使用双重循环搭配前缀和暴力求最大值。的最大的区间值,并记录这个区间的起点。这样我们就把第二层循环给优化掉了。我们可以思考一下如何把第二层循环给优化掉。我们可以用一个结构体数组。但是暴力的时间复杂度是一定会超时的。那我们考虑一下优化。
2024-12-01 21:05:57
470
原创 题解:CF1366B Shuffle
先从暴力写起。枚举l∼r,如果区间内有一个1,那么就将给区间内的所有数字都变成1。但是看到数据范围n≤109,这个范围,数组不仅开不下,而且还会超时。那么考虑正解。
2024-09-14 17:26:42
404
原创 题解:CF1600J Robot Factory
这题其实就是另类一点的连通块问题。每一步都要通过位运算判断可否前行。这题关键的是如何判断能否前向,其实通过与运算就可以解决这个问题。
2024-09-13 20:50:51
247
原创 P2858 [USACO06FEB] Treats for the Cows G/S 题解
那么我们可以从当前状态出发计算下一个状态的值。这个状态为起点的最大值。根据搜索的代码,答案就是。每天把最左或者最右的东西卖掉,第。,我们可以发现对于状态。
2024-09-07 20:24:11
510
原创 AT_utpc2011_4 停止問題 题解
按照题意下一个又臭又长的dfs。因为这个题目某个点可以重复走,所以标记状态的时候得加上当前走的方向和当前存储的数字。为了防止进入死循环之中我们可以记录一下经过某个点的次数如果经过太多次就说明进入了死循环,那就不能再进去了。
2024-08-18 20:31:00
345
原创 AT_zone2021_d 宇宙人からのメッセージ 题解
abc反转后变成cba,之后拼上cba,变成cbacba,其实我们可以把这个"cba"放到"abc"前面插上。变成了abcabc。最后反过来输出就好了。我们会发现我们并不需要花费一个for循环去真的反转,只需要改变插入字符的前后位置。的次数,如果次数为偶数那么数字就往后面插,奇数往前面插。那我们需要思考如何快速解决反转的问题。首先考虑暴力模拟,那么时间复杂度为。注意不要访问访问空的队列,会。最后倒过来输出就是答案。那么我们用一个变量记录。例如:abcRcba。
2024-08-17 18:11:15
342
原创 CF329B Biridian Forest 题解
那我们可以反其道而行之,从终点出发,把整个图给跑一边,把从终点到每个点的最短距离求出来。如果从起点出发来想的话比较麻烦。求出最短路,答案就出来了。
2024-07-21 12:28:08
255
原创 CF250B Restoring IPv6 题解
CF思路按照题意模拟就好了。那要解决的就是两个问题。::——缩写连续的0序列单独序列补充前置的0我们可以先处理1,再处理2。对于操作1把::的位置找出来。并在第二个:之后补上剩下的的:0000。对于操作2把每个序列截取出来,在前面补0。代码#include<bits/stdc++.h>#include<cstring>#include<queue>#include<set>#include<stack>#inc
2024-07-11 15:29:33
237
原创 CF253C Text Editor 题解
既然要求最少步数,那我们可以用意当鼠标位置超过当前行最大值的时候,要让当前位置去到最大值处。注意,需要文件读写。
2024-07-10 17:41:31
361
原创 CF1955C Inhabitant of the Deep Sea 题解
当k为偶数时,前后数量相通,否则前面一份比后面一份多1。所以我们可以把击打次数分成两份,前面一份,后面一份。分别寻找满足小于等于当前方向的那一份之中最大的位置。因为海妖是前面打一下,后面打一下。但是看到数据范围,模拟不了。首先模拟的复杂度是o(k)的。k巨大,那么我们模拟不了。就要想o(n)的解决方法。用前缀和与后缀和数组。找出两个坐标算出答案。
2024-07-08 17:31:35
315
原创 AT_abc354_a [ABC354A] Exponential Plant 题解
【代码】AT_abc354_a [ABC354A] Exponential Plant 题解。
2024-05-20 16:21:19
204
原创 P10472 括号画家 题解
当我们想要为第一个出现的右括号匹配时,我们要找的是最后一个左括号。为第二个出现的右括号匹配时,我们要找的是倒数第二个左括号。这题我们可以模拟一下。发现如果当前是对映右括号中出现的一个右括号,那么要找匹配的左括号,一定是对映左括号中最后出现的左括号。那么我们就可以用栈来完成模拟操作。
2024-05-20 16:09:13
580
原创 洛谷 AT_abc126_e [ABC126E] 1 or 2 题解 (并查集)
并查集的操作过程中,我们会选择一个节点作为当前集合的根节点(组长),由这个根节点(组长)来代表整个集合。某些题目中可能会给每个人赋一定的权值(战斗力,学习能力…我们可以把每个所有点看作一个一个小组。例如:集合人数,集合内最大的数字,集合内最小的数字。什么时候发生改变:小组发生改变的时候(操作时的关键:所有信息存放在根节点中。求一个小组内总的战斗力,总的学习能力。核心:所有信息依旧记录在组长手里。路径压缩:并查集优化的关键点。每个集合内部除了内部关系之外。实际上是并查集模板题。合并 union()
2024-04-14 20:34:47
374
1
原创 洛谷 P10132 [USACO24JAN] Cannonball B
然后这题有个坑点,就是有可能反复横跳,死循环。这样的话,就要判断一下死循环的情况。设定一个最大步数,超过就是死循环。如果某一个点重复经过。首先考虑到纯模拟,暴力。次就一定是死循环了。
2024-03-18 20:26:58
407
原创 洛谷CF169A Chores 题解
把第b个数取出来,这是弟弟的最大复杂度。那么第b+1个数就是哥哥的最小复杂度。那之间的数字就是答案。首先先从小到大排序。
2024-01-28 15:53:10
229
1
原创 洛谷 CF538A Cutting Banner 题解
给定只由大写英文字母组成的字符串 s(长度不超过100),问删掉几个连续的字符(即删去一个子串)之后是否能得到。既然长度不超过100,那么可以双重循环暴力。最后把两边保留的字符拼起来看一下是不是。,枚举的是保留左边的。,枚举的是保留右边的。
2024-01-21 16:50:00
398
原创 CF51A Cheaterius‘s Problem 题解[CF]
有很多2X2的牌,四个块上都有写数字,将它们旋转90、180、270度,或者不变。所以一种牌可以显示出共4种状态。给一堆牌,问总共有几种不同的牌。,首先答案+1.接着把此状态翻转后的四种状态的情况变成0.因为旋转后相同的只算一种。因为数字都是1~6.所以直接开一个四维数组,四重for循环也没有关系。最后四重for循环直接枚举。如果找到一个vis的值。vis数组记录四次旋转的状态并记录。比较简陋,但是易懂。
2024-01-04 20:56:14
564
1
原创 CF26B Regular Bracket Sequence 题解(CF)
说明左括号匹配成功,需要匹配的左括号数量减少一个。给出一个括号的序列,求最长的合法的子序列。的数量,表示需要匹配的左括号数量。
2024-01-01 17:46:01
409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人