自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CF1920F1 Smooth Sailing (Easy Version) 题解

魔幻暴力题。

2024-01-29 21:08:48 1012

原创 CF1925F/CF1924C Fractal Origami 题解

提出来,可以得到题目最后要求我们输出的就是。,对分母那个玩意儿求一下逆元输出就可以了。增加量是相同的,且是上一次增加量的。通过等比数列求和公式可以得到。

2024-01-28 19:45:53 984 1

原创 CF1158C Permutation recovery 题解

这样的替换一定不会导致有解的序列变成无解。然后我们开一个堆存储当前还未选择的数有哪些,并确立。的大小关系,从堆中每次选最大的数填就可以了。可以看代码理解一下。再来考虑构造一个合法的解。的题,肯定是 cf 评分评高了。理解一下,就是说给出的。若不存在这样的位置则。你需要构造出一个排列。若有多组解,输出任意一组即可。先来考虑什么时候无解。丢失(即你可以忽略这个。会推出大小关系冲突。

2024-01-23 22:55:42 901

原创 CF1029E Tree with Small Distances 题解

大部分题解在得出贪心的策略后是把所有点按深度排序,然后开始贪心。但是根据我们上面推出的东西,我们只需要保证每次处理的是叶子节点就可以,这启示我们使用拓扑排序。,要么直接连它和根节点,要么连接它的父亲和根节点。比较显然的是,如果连接它的父亲和根节点,一定不劣于连接它和根节点。具体地,先 dfs 一遍求出每个点的父亲,然后进行拓扑排序,将拓扑排序的结果记录下来,进行贪心即可。由于不需要排序,所以时间复杂度其实是优于其他题解所述的贪心。的叶子节点,我们只有两种方法使它到根节点的距离小于等于。求加入边的最小数量。

2024-01-23 22:54:54 669

原创 CF557D Vitaly and Cycle 题解

具体的,从连通块中找出距离为偶数且不相邻的点连边即可。注意这个时候我们连的边一定是在块内连,不可能将两个连通块连起来,因为将两个本不相连的连通块连起来不会产生环。我们从连通块中任意一个点出发,对整个块黑白染色,连的这一条边要么是黑点和黑点,要么是白点和白点,直接 dfs 统计黑点白点数量然后计算即可。条边的无向图,问最少添加几条边使图中有奇环,且添加边的方案有多少种。事实上有了前面几种情况铺垫,到这里时,已经保证连通块内点数不超过。,下次再走到时我们判断是否走了奇数步即可(不理解的可以看看代码)。

2024-01-14 10:02:47 1122 2

原创 [ABC335E] Non-Decreasing Colorful Path

个点,我们只需要从它前面找小于它的点转移。但是我们不太好处理点权相同的点。的点,取其中的最大值进行转移即可。总的时间复杂度应该是。的点全部转移完之后,再 dfs 跑一遍点权为。不是单调不下降序列,该路径美丽值为。为按顺序走过的点的点权构成的序列。条边的无向图,每个点有一个点权。的简单路径中美丽值最大为多少。否则,该路径美丽值为。

2024-01-06 22:46:20 466

原创 ABC334题解(A~F)

为奇数时枚举扔掉哪个袜子,剩余的两两匹配。可以通过一个前缀和加后缀和维护扔掉袜子后匹配的不满意值(注意到给定的。袜子的不满意度就成了它们之间的距离。你要将剩余的袜子匹配成双(有可能最终余下一只),若将编号为。先排个序,然后做一个前缀和,对于每次询问,二分查找最多能拉的雪橇数即可。,他会选一个价格高的送给你。发现有一堆东西是一样的,可以选择线段树优化。所以不妨将自身成双的袜子匹配掉,再匹配单只袜子,即匹配。个礼物,他可以选择在任何时刻回家将礼物袋中的礼物补满。,那么无论怎么匹配不满意值都是一样的。

2023-12-31 17:11:11 1771

原创 ABC333题解(A~F)

因为我们想要过程中持有的药水总数尽可能少,所以最好是刚拿到药水就用掉,因此要选择最近的药水对付怪兽。那么我们肯定想保留一棵最大的,把其余的删掉。找最大子树可以 DFS 也可以并查集,怎么搞都行,下面的代码两种写法都给出了。事件发生后持有的药水数量。那么对于一瓶药水,从我们捡起它到用掉它的时刻,我们都持有它。若能,输出过程中你所持有的药水总瓶数最大值的最小可能值,并给出一种方案。感觉这场难度 A

2023-12-19 20:07:01 1865

原创 ABC331题解(A~E)

但是注意询问的范围可能很大,所以需要算一下其中包含了多少个基准矩形,再乘上基准矩形的答案。是以询问的左上角为基准,重新找到一个基准矩形,重新构造一个无限大平面,那么构造完了之后询问的矩形很显然就位于。另一种方法是我的赛时做法,非常愚蠢,还把横纵搞反了导致我调了二十分钟。给定一个由黑白格子构成的矩形,然后将这个矩形复制无数多次,相互对齐拼接起来,得到一个无限大平面。次询问,每次询问给定一个左上角和右下角,求这个矩形范围内有多少个黑格。种不可行的套餐,求出剩余套餐中最贵的要花多少钱。下面的代码是我的赛时解法。

2023-12-03 11:35:55 452

原创 ABC330题解(A~F)

如果正方形左侧的点比右侧多,就往左侧移,否则往右侧移,直到左右两侧点数量相等。这个贪心策略之所以是正确的,是因为往点多的一侧移动一定会使答案减小。个数,所以超出这个区间的数我们都不用管它。次操作,每次操作可以选定一个点,并将其往上下左右四个方向中的一个移动。坐标是相互独立的,完全可以分开来算。,说明我们应该修改 set 中的值了。组成,且其中恰好两个在同一行,恰好两个在同一列。我们知道一个数的平方一定非负,所以考虑枚举。排序,取最中间的位置就是我们要找的位置了。的数量,枚举顶点直接统计就可以了。

2023-11-26 11:51:38 298 1

原创 ABC329题解(A~F)

求出每次投票后获胜的候选人是谁。考虑手写一个结构体,将编号和票数放在结构体中,然后用 set 来记录答案。中连续的一段单一字符构成的串,能对答案产生的贡献就是它的长度。每次合并时将球少的合并到球多的中,就可以过了。所有子串中,由单一字符组成的子串共有多少个(重复不算)。,因为投票会使票数加一,所以更少的票数不会对答案产生影响。因为在贴贴纸的过程中会有覆盖掉的部分,而我们不知道。个箱子,一开始的时候每个箱子里有一个颜色为。个数去重后的次大值,保证答案一定存在。箱子中的球共有多少种不同的颜色。

2023-11-19 14:03:34 661 1

原创 [ABC328D] Take ABC

也可以手写栈,好像会更方便一点。但是我赛时为了冲解题速度,想到上面那个解法就直接写了,九分钟切了四题。,可以就跳过,否则把取出来的元素和当前元素按顺序重新压回去。删除后,剩余部分会拼接在一起。可以考虑用栈维护,每次弹出两个元素,看与当前元素能否组成。,定义一次操作为找到最靠前的。

2023-11-12 18:47:51 91 1

原创 [ABC328E] Modulo MST

条边时,如果这条边连接的两个点已经联通了,就不能加这条边。这是一个很有效的剪枝。条边的带权图,定义一棵生成树的权重为所有其边的权重之和模。个最小生成树,所以直接暴搜是可以过的。考虑在暴搜的同时维护一个并查集,加第。求这个图的生成树的最小权重。

2023-11-12 18:46:09 87 1

原创 ABC327题解(A~E)

构成,所以可以想到建一个图,然后黑白染色。有一个小细节是建完的图不一定联通,所以不是遍历一遍就万事大吉的。我用的是快速幂,不需要模数,自然溢出即可。还有一个小细节是要建双向边,因为不等关系是相互可传递的。已知时分母和最后要减的那一项可以很容易地算出来。给定一个填好的数独,判断其是否满足数独的规范。转移显然为前面最大的一个。直接暴力判断每一行、每一列、每一宫即可。询问是否能够构造出一个长为。考虑记录分子的最大值,因为。E交代码时注释没删干净。场时的最大值就可以了。,判断是否存在正整数。照题目说的做就行了。

2023-11-05 20:45:05 150 1

原创 ABC325题解(A~E)

现在你以基准世界的时间为基准,召开一个一小时的会议,显然其他世界中会议召开的时间会相应提前。一开始可以自由选择坐车还是坐高铁,但是如果某次选择坐高铁了,那么之后你只能选择坐高铁。注意一个传感器上下左右、左上、左下、右上、右下的传感器都视作联通的。传感器的相邻关系可以传递。所有相邻的传感器视作一个,问有多少个传感器。扫过去的过程中,很多格子其实都放不了球,白白浪费了时间。枚举举办会议的时间,然后挨个扫有多少个世界的人能参加,取最大值。全部以坐高铁需要的时间为边权。跳到下一个球的可放置的起始位置。

2023-10-23 18:01:17 204

原创 ABC324题解(A~F)

因为最多只能允许一个字符不一样(删除、添加或替换),所以其实可以直接扫过去判断(具体细节见代码)。中任意两个位置的字符任意多次,问交换过程中最多会出现多少个不同的字符串,满足字符串所表示的十进制数(,这表明图中不存在环。而且我们可以通过从编号小的点遍历到编号大的点来计算最大值。定义一条路径的美丽程度是这条路径上所有边的美丽值之和除以这条路径上所有边的美丽值之差。的长度,就一定是可行的。满足以下要求,第二行依次输出满足要求的字符串的编号。需要注意的是不要直接用美丽值除以代价算,而是做个变形,

2023-10-14 23:56:27 109 2

原创 [ABC252E] Road Reduction 题解

给定 $ n $ 个点 $ m $ 条边的无向连通简单图,每条边为 $ a_i $ 到 $ b_i $,权值为 $ c_i $。你需要构造一棵生成树,最小化点 $ 1 $ 在生成树上到其它所有点的距离和,输出生成树的所有边的序号。如果有多个方案随便输出一个即可。,那么选择这条边就是最优的。选边的过程可以在跑 dijkstra 的过程中顺便完成掉。具体细节见代码及注释。所以,在选择某一条边后,如果有。表示在某种选择的方案下。

2023-10-13 19:59:24 54

原创 [ABC223E] Placing Rectangles 题解

(一个矩形竖放或横放其实和上面情况无本质区别)的矩形的方式,满足摆放出来的图形能被一个。两个矩形横放,剩下一个贴着这两个竖放。两个矩形竖放,剩下一个贴着这两个横放。,询问是否有某种摆放三个面积分别。三个矩形均横放或竖放。的矩形区域完全包含。

2023-09-29 16:07:45 60 1

原创 [ABC320D] Relative Position 题解

然后跑一遍dfs,把能更新的人的坐标都更新即可(具体细节见代码)。现在请你求出所有人的坐标并输出。如果某个人的坐标求不出来,输出。个人站在原点处,其余人的位置未知。于是建图时可以建双向关系。对于给定的一条消息,如果第。建图,跑一边dfs即可。

2023-09-16 22:02:28 61 2

原创 CF1872E Data Structures Fan 题解

补题的时候被这题卡了会儿,由于我本身对二进制运算(尤其是异或)不熟悉,所以写这篇题解,以加深自己对异或的理解。对于每个询问,先给定一个整数。,就可以解决本题了(具体细节见代码)。有了这两个式子,就能解决这题了。(以下面这组数据为例)。我们来考虑怎么处理操作。后,字符串被反转成了。全部异或起来的结果。

2023-09-12 22:43:57 108 1

原创 [ABC318D] General Weighted Max Matching 题解

我的做法是用一个数组记录当前状态中每个。条边,否则必有点在选择的边中出现大于一次。所选的边的端点两两不同(即,每个点只能作为某。,于是考虑状压dp。对于每一个状态,可以。枚举它是由哪一个状态转移而来的。也就是说,由当前状态去掉两个。就表示当前枚举的这条边连接点。被选择的边的端点)。

2023-09-02 23:00:49 125

原创 [ABC271E] Subsequence Path 题解

既然要求最后组成的序列是给定序列的一个子序列,那我们不妨就从给定的序列入手进行DP,这样可以直接规避掉不符合条件的路线。输入给定序列时,输入一次就看一下走这条路径会不会更优,会的话更新一下答案就可以了。我们说一条由一些连通的公路组成的路径为“每条公路都是有向的;条公路连接,编号 1 到。个城镇,编号为 1 到。的道路将带领你从编号。的城镇去,它的长度为。现在你要找到最短的“

2023-08-02 13:03:29 47 2

原创 [ABC312F] Cans and Openers 题解

好题,有 $n$ 个物品,现要从中选 $m$ 个,物品分为 $3$ 类。第 $1$ 类:直接使用,获得 $a_i$ 喜悦值。第 $2$ 类:需要用第 $3$ 类物品打开,打开后获得 $a_i$ 喜悦值。第 $3$ 类:可一共打开 $a_i$ 个第 $2$ 类物品。

2023-08-01 13:27:53 67 1

原创 [ABC296E] Transition Game题解

由于起点自由选择,所以环中每个点都可以到达。因而环中的每个点都是必胜点。这个环,所以这个点也是必胜点。如果这个点通向一个环,显然没有任何用处,它并不是必胜点。如果这个点可以通过环中的某个点达到,就同环中的情况类似,只是最后几步。很大的情况下,我们可以在环中选择一个点,而后在环中不停。环中的点和被环连接的点都是必胜点,其余点都是必败点。,同理环所连接的点入度也不可能为。环中的每个点入度都不可能变为。

2023-07-27 09:32:09 76 2

原创 [ABC297E] Kth Takoyaki Set 题解

考虑到 $ n $ 很小,只有 $ 10 $,因此可以每次把最小的价格取出来,依次加上每个 $ A_i $ 再放回去,重复 $ k-1 $ 次后 set 内的第一个元素即为答案。初始化将每个 $ A_i $ 都放入 set 内,保证不漏算价格。总复杂度为 $ O(NK) $。给定 $ n $ 件商品,第 $ i $ 件商品的价格为 $ A_i $,选一些商品可以组成一些价格,同一件商品可被重复选择任意多次。问这些价格中第 $ k $ 大的是多少。注意一个细节,题目注重的仅仅是价格,而非方案,因此。

2023-07-27 09:30:45 164 2

原创 [ABC302E] Isolation 题解

由于删除边的操作很难处理,所以考虑用集合进行删除边的操作,再开一个数组记录每个点当前状态是否为没有边即可。要求在每次操作后输出没有任何边的点的个数(边数为。进行删除操作时,由于边是双向的,只需遍历点。之后的状态,是否变为没有边的点了。

2023-07-25 13:42:07 50

原创 [ABC303E] A Gift From the Stars 题解

给定一棵树,确定它能分成几个菊花图,从小到大输出菊花图的大小。菊花图的大小定义为顶点个数减一。数据保证菊花图的分法唯一。耐心画一下样例三,不难发现两个菊花图的中心点隔着两个点。的点,它们一定是别的菊花图的中心。于是将它们塞入队列中进行下一轮处理即可。一定是菊花图的中心点。为中心的菊花图的大小,随后遍历所有和。

2023-07-25 13:16:47 79

原创 CF111C Petya and Spiders 题解

这是因为我们要使聚点的数量尽可能少,既然一个点已经被选为聚点就需要最大化它的价值。于是,dfs 的大致思路就出来了:找到一个当前还有蜘蛛的格子,它本身及它周围四个点都有可能是聚点,进行枚举。找到聚点后将其周围的点状态标记为没有蜘蛛,最后加上最优性剪枝即可。直接枚举每个点的五种状态(向左、向右、向上、向下、不动)显然会超时,于是我们可以考虑枚举。被选为聚点,则令其周围四个格子的蜘蛛都走到。我们可以贪心地考虑,若点。

2023-07-24 16:59:21 109 1

原创 CF1850F We Were Both Children 题解

## 题目大意有 $n$ 只青蛙,初始时在坐标轴 $0$ 处。第 $i$ 只青蛙 $1$ 秒可以跳 $a_i$ 远(即第 $2$ 秒位于坐标轴 $a_i$ 处,依此类推)。你可以在 $1$ ~ $n$ 中选一个点布置陷阱,所有踩到这个陷阱的青蛙都会被你捉住。问最多可以捉住多少只青蛙?

2023-07-24 12:26:36 297 1

空空如也

空空如也

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

TA关注的人

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