
AtCoder
文章平均质量分 84
pystraf
一名OIer
展开
-
AtCoder Beginner Contest 383
ABC383 Solution (C - F)原创 2024-12-11 22:06:41 · 974 阅读 · 0 评论 -
AtCoder Beginner Contest 355
发现直接求相交的对数不好想,但正难则反,我们可以求出不相交的区间对数。问执行第几个操作后,有一行或一列或对角线的格子全部被涂黑。我们可以记录每行、每列、主次对角线中被涂黑的格子数量。,每次操作后检查该格子对应的行列对角线的黑格子数是否。开始,这样时间复杂度就可以优化至 $O(n) $。但稍加分析可以发现,上述算法的时间复杂度仍为。,问两两相交的区间对数,交点重叠也算入。次操作,每次操作涂黑一个指定的格子。如果暴力判断,那么总时间复杂度是。的网格,初始全白,有。我们可以用双指针,将。,我们需要进一步优化。原创 2024-06-10 15:35:10 · 753 阅读 · 0 评论 -
AtCoder Beginner Contest 353
《Sigma大赛》原创 2024-05-12 21:53:08 · 384 阅读 · 0 评论 -
AtCoder Beginner Contest 340
前面两道阅读理解直接跳过。原创 2024-04-21 21:07:37 · 648 阅读 · 0 评论 -
AtCoder Educational DP Contest
每天只能进行一个活动,且相邻两天不能做相同的活动。现在要挑选一些物品装入袋子里,求选择的物品的最大总价值。现在要挑选一些物品装入袋子里,求选择的物品的最大总价值。很大,直接套用01背包计算,时间和空间肯定一定炸。给定两个字符串,输出它们的任意一个最长公共子序列。经典01背包问题,按照01背包的解法做即可。只能从另外两个状态中的最大值转移过来。由于相邻两天不能做相同的活动,所以。的最小重量,这样就不会炸了。很小,我们可以转换思路,设。,就可以递归输出方案。号石头时的最小代价。号石头时的最小代价。原创 2024-04-16 22:04:53 · 779 阅读 · 0 评论 -
AtCoder Beginner Contest 350
AtCoder Beginner Contest 350题解原创 2024-04-21 19:40:47 · 1165 阅读 · 0 评论 -
AtCoder Beginner Contest 347
的前缀和,当集合中的一个数被移除时,我们就计算它的贡献(前缀和相减)。做出的贡献是一个连续的操作区间,贡献值就是这个操作区间的。先排序,然后枚举左端点,看与最右边的点的距离是否超过。问题被转化为:数轴上有一些点,问能否有一个长度为。把所有子串丢进集合里,最后输出集合的大小。给定一些计划,输出它们是否都安排在节假日。操作完后,对还在集合里的数结算贡献即可。,输出它不同的子串个数(不包括空串)。在集合中时,它在被移出集合之前,都会对。最重要的是星期几,因此所有。次操作,每次操作给定一个。,解下列方程组,要求。原创 2024-03-31 16:08:59 · 707 阅读 · 0 评论 -
AtCoder Beginner Contest 346
的代价,通过前缀代价+后缀代价,就可以得到当前枚举的情况的代价。定义一个好的字符串,当且仅当只有一个相邻位置上的数字是相同的。我们枚举相邻数字相同的位置,然后计算变成。问将字符串变成好的字符串的最小代价。给定一些数,输出它们两两之间的乘积。个字符,看看是否满足上述需求即可。枚举子串的起点,只有12种情况。对于每一个可能的起点,统计其后的。个,我们可以枚举所有的情况。这两种情况的代价,取最小值。,事先计算所有前缀和后缀变成。,问是否由一个子串,其有。中所有数的和,但要排除。去重,或者使用set。原创 2024-03-24 18:47:03 · 487 阅读 · 0 评论 -
AtCoder Beginner Contest 345
判断第一个字符是否为,最后一个字符是否为,都满足的话,再判断中间字符是否都为。原创 2024-03-17 20:37:24 · 590 阅读 · 0 评论 -
AtCoder Beginner Contest 344
的,我们还要设一个map,键为列表中的数,值为对应项的迭代器。的最少选择数,如果当前次数比它还要大,就不用再搜索下去。注意list的插入是在给定迭代器的前面插入。的所有情况,询问时直接在表中查找即可。数据范围不大,可设一个哈希表存储。使用链表解决,为了方便,可以用。个背包,字符串长度为。原创 2024-03-18 21:39:59 · 179 阅读 · 0 评论 -
AtCoder Beginner Contest 343
虽然分数的范围很大,但最多只有20万名选手,所以不同的分数最多只有20万个。可以开一个map,键为分数,值为该分数出现的次数。,因为所有选手最初都是0分。考察对邻接矩阵的理解。个,因此枚举判断即可。原创 2024-03-19 21:39:10 · 363 阅读 · 0 评论 -
AtCoder Beginner Contest 342
的字符串。原创 2024-03-31 18:23:22 · 838 阅读 · 0 评论 -
AtCoder Beginner Contest 339
对于每个状态,尝试让两个玩家移动到上下左右四个位置,如果有一个玩家移动后出界或者是移动到障碍物上,那就不动它。二维网格,上下左右相连,左上原点。初始全部为白色,位于原点,面朝上。从两个玩家起始的位置开始搜索,首先把起始状态丢入队列。在看一个新的状态时,如果没有访问过,那就扔进队列。次操作,每次操作,将当前格子颜色黑白反转,然后。所在的位置,输出它后面的所有字符(不包含。范围内的数字作为节点,记录每个节点的dp值。,再计算这些不等式左边的结果,取最小值。的迷宫,有一些障碍物,有两人。原创 2024-02-04 18:38:36 · 750 阅读 · 0 评论 -
AtCoder Beginner Contest 338
把圆拉直,那么弦就会形成若干个区间,显然若两个区间包含或没有交点,则图上这两条弦就没有相交。利用桶排序记录下每个字符出现的次数,再找出出现次数最多的字母。使用类似括号匹配的做法即可,如果可以匹配,那弦之间就没有交点。现问删去一条边,求依次访问这些点的距离(边数和)的最小值。中出现最多次的字母,如果有多个,输出字典序最靠前的那个。的第一个字符是大写字母,其他所有字符都是小写字母。(可以经过要访问的点以外的点)条弦,判断弦之间是否有交点。路径上的边都可以删,所以。路径上的边都可以删,所以。原创 2024-03-17 20:37:58 · 451 阅读 · 0 评论 -
AtCoder Beginner Contest 337
你需要找最少的朋友,然后给他们一些果汁喝。一瓶果汁可以给多个朋友喝,一个朋友也可以喝多瓶果汁。瓶果汁,其中有一瓶变质了,喝了变质的果汁会拉肚子,但你不知道哪瓶变质了。场比赛,给出每场比赛中高桥队和青木队的积分,问最后谁总分更高或平局。第二天,朋友们会告诉你他们是否不舒服,你需要据此找到变质的果汁。个朋友喝,如果它第二天肚子疼了,说明。问最少进行的操作数,使得网格有连续。个格子的左端点 ,然后往右的。个格子里,不能有x,然后对。的二进制下,哪些数位是1。时,如果不为-1,则令。的二维网格,格子上有。原创 2024-03-27 22:13:35 · 721 阅读 · 0 评论 -
AtCoder Beginner Contest 335
如果我们把每个部分的坐标按顺序放在一个队列里,队尾是头部坐标,队头是尾部坐标,每次移动相当于一次出队和一次入队。,要求每个数字仅使用一次,且相邻数字的格子相邻,且正中间的格子不能是数字,而是。每移动一次,只有头部到了新的坐标,其他部分的坐标都变成前一个。的情况下,该边一定是无效的,所以我们只往图中添加。的边,注意这是一个无向图,所以需要判断正反两次。二维网格,贪吃蛇,移动,进行q次操作,分两种。的路径中,出现的不同颜色的个数最多是多少。,最后恰好到正中间,因此能恰好填满。,直接三层循环即可。原创 2024-03-28 21:36:09 · 535 阅读 · 0 评论