自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 2022 RoboCom 世界机器人开发者大赛-本科组(国赛)

需要注意的是,本题也有corner case,如玩家排在第一位,就需要将源点S的价值加进来,另外还需要注意记录最短路径的值(因为有多条到汇点T的路径)。考虑可行性:直观上想,我们先可以枚举两个点,剩下的一个点使用bitset进行优化,即使用bitset来刻画“对于某一点,剩下的点中可用点的集合”,本题是有两个限定条件的,即长度与种类,所以实际上需要开两种bitset。根据题目要求打好标记就好了,只需要注意一些corner case,如刚按下按钮的时刻、红灯变绿灯的时刻以及绿灯变红灯的时刻。

2024-07-31 16:27:15 618

原创 算法竞赛数据生成及使用Sublime对拍

最近几天看蒋老师直接使用了Sublime中的FastOlympicCode插件进行了对拍,出于兴趣来学习一下,关于插件的配置已经有很多大佬讲过啦,这里不再赘述。数据生成的代码我会放到最后,包括生成数组、区间、树、图。

2024-07-25 11:05:11 550

原创 Educational Codeforces Round 167 A~D题解

思路:首先有一个比较显然的贪心就是,每次合成后立即融化掉可以得到2点经验值,同时也可以回收一部分材料,所以实际上我们只需要求最多可以合成多少次就好了。思路:首先我们要明白,子串一定是答案串的一部分,接下来,我们要找出最多有多少子序列中出现的字符在这个子串中出现过(注意必须保持顺序的一致性)记为。,这两种情况是等价的。三种值,每个人对两部电影的评价如果不同我们肯定是要选评价更高的那个,答案一定更优。的坐标都会减1(注意这里我们移动完了目标点才会移动),所以目标点的坐标最小为-1,否则从原点出发永远无法追上。

2024-07-24 16:45:49 888

原创 最小环计数问题

首先我们能很自然地想到要先求出“最小环”的长度到底是多少,枚举每个点(枚举所有点的原因是,我们需要保证从环上的点开始枚举,才能求出最小环的长度),然后求包含当前点的最小环的长度。不妨设环长为len,对于当前搜索到的点与枚举的点所构成的线段,若边长为l1的条数为n,边长为len - l1的条数为m,那么根据乘法原理,我们能得到环长为len的环的数量有n * m个。具体来说,对于偶数环的情况,我们记录距离当前正枚举的点的距离为len/2的点的边数即可。的点时,y的路径数也需要累加上x的路径数,这里。

2024-07-17 23:35:11 281

原创 2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)题解

思路:记录一下题目已经给定的字符串等级映射,然后对于每一次询问首先查询完整字符串是否已经存在,否则枚举字符串的每一个断点查询两个拆开的字符串分别是什么等级进行等级的拼接,若存在多个答案那么标记为。接下来处理查询中的序列,我们枚举所有可能重置骰子的方案,这里我使用了二进制枚举,那么接下来的事情就是就是开始对于每一种枚举方案搜索有多少种获得更大等级的可能性了。是给当前正在判断等级的序列排序,然后再依据题目规定判断等级,这样能够极大程度地减小处理序列的复杂度,读者可以自行体会。的两面,这样做的好处就是。

2024-07-14 15:13:42 761

原创 abc344E - Insert or Erase以及关于std::list的使用

特别注意,std::list与std::vector不同的一点是,除非它的迭代器被删除,否则是不会破坏掉的(不会像std::vector那样因为序列的改变使得序列中元素位置和迭代器发生改变),这就是为什么我们能够保存下来不断使用。题目要求不断对一个序列进行增、删操作,容易想到学习数据结构时关于这个问题的讨论,显然使用链表是一个非常不错的选择。在本题中,由于在增删时,我们总是需要对迭代器进行操作,因此我们就需要对序列中的每个整数所对应位置的迭代器进行存储。不支持快速随机存取。为使用std::map的复杂度。

2024-03-10 21:28:45 1891

原创 E. Iva & Pav

显然,与上一个数之后对于当前数来说是非严格递减的,那么对于每个数的每一位我们记录从这个数之后到哪个位置最先变为0。上为1,我们是不可以把答案直接更新到上面的位置的,因为对于低位来说可能会导致与起来的和无法。一道二进制好题,这题可以前缀和或二分解决,这里给出一个纯二进制做法。变量,这个值用来维护期望可以到达的最远位置,用于最后来更新。个数之后第一个使得与和等于0的位置。的二进制高位开始枚举,如果某一位。上为0,那么答案就可以更新到。,所以对于每一个询问我们把。由于题目要求与起来的和。,因此我们需要维护一个。

2023-12-09 21:31:56 126

原创 AtCoder Beginner Contest 330(A~F) abc330题解

这样方案的个数,这些o不要求一定相连,那其实我们只需要枚举那个关键节点然后每行每列计算一下除去当前枚举节点还剩下多少字符就好了,那么每次对答案的贡献就是。注意到mex的性质:当前序列中最小的没有出现的非负整数,因此mex的值至多不会超过。坐标最外面的两个点,根据上面我们所考虑的,最外面两点到这个矩形的距离为。题目是说要在规定操作步数之内最小化正方形边的值,容易想到二分答案。,所以只需要比较一下哪个值使得不等式右边的结果更小就好了。,所以要使得不等式右边最小,Y的取值集合其实只有。,x为当前正在二分的边长。

2023-12-09 10:05:42 235

原创 AtCoder Beginner Contest 329

所以我们可以在每个位置上开一个桶,而引起最大值变化只有可能是在某一个位置贡献+1时,当前位置成为贡献最大的位置。,也就是说先前被撕掉的位置是可以继续撕下去的,正着来想其实就是后面贴上的串将先前贴上的串给覆盖掉了。我们每次将物品少的集合放到物品多的集合中,然后按题意交换集合下标,我们可以直接使用。统计该字符串中不同子串的个数,同时子串的要求为必须是同一个字符的重复,如。,显然是会超时的,因此重点需要我们考虑如何进行优化。串之后,我们考虑临近位置能否撕掉并将其加入队列。对于每个元素所在的集合,

2023-12-08 12:44:22 126

原创 2023年沈阳站K. Maximum Rating

贪心地考虑如何对序列进行排列,要使变化次数最少,应该先掉分在上分,并且在上分时,应该先放置涨幅较小的。要使变化次数最多,就应该先上分再掉分,这样每次上分时都必然能够增加一次变化次数。中维护当前值有多少且这个值加权之后是多少就好了。小数的和不大于所有负数绝对值的最大取值、正数有。小数的和,那么可以使用权值线段树,的变化值,要求带修地求出最大。题目中给出的元素均为每一轮。变化次数可以有多少值。个,那么变化次数最多为。

2023-11-17 22:27:44 448

原创 AtCoder Beginner Contest 322 F-Vacation Query

所以一定要维护前缀和后缀的值,但其实考虑到这还不够,因为当左儿子的区间中全部为1时,新节点的前缀就变成了整个左儿子部分与右儿子的前缀相加,所以还需要有一个值来维护这个区间是否全为1。对于操作2我们考虑如何维护两个节点的信息,新节点的答案有三种可能的情况:左儿子的前缀,右儿子的后缀以及左儿子的后缀和右儿子的前缀。题意:有两种操作,操作1是将一个区间内的0和1做flip操作,操作2是查询一个区间内的连续的1的个数。首先,对于操作1的flip操作我们很容易想到给每个数异或一下。就成了我们必须要维护的信息。

2023-11-16 20:31:32 113 1

原创 F. A Growing Tree

但是我们再仔细考虑一下,实际上当每一个点新加进来的时候,这个点的子树的值都相等,因此每次插入一个新点的时候给这个节点的子树减掉当前的值就相当于新插入一个点了。这题表面上往树上动态加点,容易让我们觉得直接往子树上加权值会影响还未添加进来的点。由于这题是区间修改单点查询,所以实际上可以用树状数组来差分。看到给子树加和是很容易想到树链剖分的。当然也可以使用带懒标记的线段树。

2023-11-15 21:00:20 104 1

原创 Educational Codeforces Round 157 (Rated for Div. 2)(A~D题解)

就是看钥匙和宝箱的位置,由于拿钥匙不消耗体力,因此如果先拿钥匙或者同时拿到钥匙和宝箱是可以直接打开宝箱的。这样做的原因其实就是,左边部分减去是和右边部分加上是等价的,对于右边的部分也类似。对于这类涉及位运算的题目,首先一个就是应该考虑拆位,这个大家应该是都能够想到的。按照长度来存储字符串,然后枚举这两个长度的字符串看是否满足情况。个点划分为两个集合,使得集合内部相邻两个数的差值的和最小。也就是说只要确定了第一项,那么后面的每一项就都可以确定了。其实是异或操作,异或其实是可以相消的,把。

2023-11-15 20:20:48 142 1

原创 AtCoder Beginner Contest 328(A~G)

这道题我做的时候很麻烦,甚至还把每一位都拆出来了,实际上只要把月份和当前的是哪一天转成字符串加起来比较一下整个串的每个字符是否都等于这个这个串的第一个字符就好了。题目是要求一个最小生成树,但是是在模数意义下的,因此就不能靠平时用的最小生成树算法来解决了。这个字符串,每次都从左边删,其实已经暗示的非常明显了,就是要用栈。,其中二进制中1的个数是非严格递增的,因此可以借此去优化掉一维枚举。题目中给出的两种操作实际上是相互独立的,于是可以考虑DP。,看起来就是可以爆搜的,但是要考虑剪枝,由于生成树最多有。

2023-11-13 21:46:56 265

原创 2023XCPC个人补题题解

对于每一个位置,我们可以枚举他能够胜多少局,其能否取胜其实与他在这个子树中值的排名以及还有多少剩余的交换次数有关,因此我们只要按照选手的强弱值从小到大加入我们构造的这棵树就好了。从这个题目中也可以学到对于一棵树,从子节点找父节点的方法:其实是通过编号,而不是具体的区间,顺便也复习一下树的编号吧。中,可以同时不放入但不能同时放入,否则两者不互素,那么对于。的条件,对于每一个素因子,我们可以把它放在。时,化为最简分数后一定会与其他互素的一组。的素因子组成,然后就可以考虑如何选数使得。的个数有多少,其中限制了。

2023-11-10 22:20:15 97 1

原创 AtCoder Beginner Contest 327(A~F)题解 abc327

把题目抽象出来就类似于在一个二维平面内有一些点,然后这个时候要选定一个长宽固定的框,使得这个框内的点数最多。观察式子的结构会发现其实除了左式的分子,其他部分相对来说都是比较固定的。那么首先可以确定的就是以某一个点作为这个框的左下端点一定包含最优解。那么我们就可以枚举时间,以位置建线段树,执行区间加和区间查询的操作。个数时分子的最大值,然后就类似于一个背包问题。时就给长度区间-1,答案就是每次取全局最大值。最开始考虑了贪心策略,但实际上是错误的。作为左端点,那么这个框能够覆盖的时间就是。

2023-11-09 19:03:46 227 1

原创 AtCoder Beginner Contest 325题解(A~G) abc325

之间的格子里,然后每个格子只能放置一个物品,那么结束时间早的物品先放一定要优于结束晚的物品先放,但是如果说直接去枚举时间一定是会超时的,因此我们考虑从哪一方面进行优化。当然,如果在枚举这个点的过程中每次都从这个点向终点跑一次最短路一定是会超时的,所以我们应该预处理一下,从终点倒着跑一遍最短路,这样其实就能得到每个点到终点的最短路了。以开始时间为第一关键字、结束时间为第二关键字排序,用优先队列存储结束时间,每次弹出结束时间最早且大于等于当前时间的物品作为当前这一步放置的物品。个第一道具时所需第二道具的数量。

2023-11-04 17:11:53 325 1

原创 AtCoder Beginner Contest 326(A~F) abc326题解

不过这个题的写法需要学习一下,当这一行/列的状态为0时说明还没有填入字符,此时判断一下当前拟填入的字符是否为需要填入的字符;其次还要判断一下这一字符在这一行/列是否已经存在了,这些都使用了状态压缩的技巧,写起来很方便,值得学习。当然这里还要做一个类似前缀和的东西,因为小点数的点一定会经过大点数的点,也会有相应代价。算法,就是搜一半停下,然后以当前这一半的终点为起点去搜另一半,这样就能极大地优化复杂度。为起点的区间就好了,个数的话其实就是二分求右端点的位置。串的矩阵,由于矩阵很小,所以显然是可以爆搜的。

2023-11-03 19:14:34 363

原创 Atcoder Beginner Contest 324题解 A~F abc324

两个串拼起来包含一个子串,其实就是前面的串包含这个子串的一部分,后面的串包含这个子串的另一部分。那么我们仍然可以从前缀和后缀的角度来考虑,若前串和后串对于子串的前缀和后缀的包含情况的加和大于等于这个子串的话说明这两个串拼接起来之后包含这个字串。中的字符数目是否够用,不够就说明当前枚举的数不符合条件,否则符合条件,贡献+1。不断除以2和3就好了,最终得到1说明符合题意,否则不符合。,如果满足条件说明可以以此作为答案下限,否则作为答案上限。,这些数的平方就好了,枚举每个数的时候考虑原串。

2023-10-16 20:52:45 253 1

原创 Educational Codeforces Round 156 (Rated for Div. 2) A~D题解 edu156

手玩一下:假设当前序列有[a1, a2, a3, a4],如果当前符号为<,当前数一定只能放到序列最前端,同理若符号位>,当前数一定只能放到序列最后端,所以对于这两种符号来说方案数只有一种,而对于符号?从头遍历原串,每次将一个字符放入栈中,在删除字符之前,栈中的元素一定是单调递增的,当出现了一个小于栈顶的元素时,就可以删除当前字符串中的最后一个元素了,注意至多删除x次,操作完成后直接输出第y的字符即可。本身是3的倍数,因此减去一个非3的倍数的数,剩下的数一定也不是3的倍数。的位置,否则就删除最后一个字符。

2023-10-13 12:09:06 166

原创 JAVA基础笔记

字符串比较不能直接用等号,要用重载父类函数需要加标识类并未重载[]需要用抽象类写关键词abstract区分好各种关键词的使用场合。

2023-07-14 15:07:59 60 1

原创 数据结构复习笔记

数据结构复习笔记 配合pta使用

2023-02-23 23:23:22 273

原创 归并排序的两种写法性能分析

主要对归并排序的两种写法性能进行分析

2022-11-21 18:43:48 1203

原创 PTA新浪微博热门话题(题面毒瘤)

PTA新浪微博热门话题

2022-10-24 18:43:28 355

原创 各类数据结构代码

对学习的类C语言各种数据结构进行总结

2022-09-29 22:46:10 323

原创 C++工程笔记(配合SDUST OJ食用)

大一个人C++面向对象编程总结

2022-09-29 22:00:35 286

原创 C语言总结(大一学习C语言的个人易错及总结)

大一学习C语言的个人易错及总结

2022-09-29 21:59:15 1409

原创 Subsegments(和为X的子数组)

前缀和差值

2022-06-06 11:24:45 290 2

山东科技大学软件测试复习资料

山东科技大学软件测试复习资料

2024-07-24

山东科技大学操作系统复习资料

山东科技大学操作系统复习资料

2024-07-24

山东科技大学2023-2024学年课程设计及复习资料

山东科技大学2023-2024学年课程设计及复习资料

2024-07-23

山东科技大学计算机组成原理实验报告

计算机组成原理实验报告

2023-07-14

山东科技大学算法设计与分析复习资料

山东科技大学算法设计与分析复习资料

2023-07-14

山东科技大学算法设计与分析实验

山东科技大学算法设计与分析实验

2023-07-14

山东科技大学计算机组成原理复习资料

山东科技大学计算机组成原理复习资料

2023-06-19

山东科技大学数字逻辑复习资料

山东科技大学数字逻辑复习资料

2023-02-23

山东科技大学计算机网络实验

山东科技大学计算机网络实验

2023-02-23

山东科技大学计算机网络复习资料

山东科技大学计算机网络复习资料

2023-02-23

2021年程序设计综合实践飞机大战

2021年程序设计综合实践飞机大战

2022-09-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除