自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

UnderTheTimeの博客

欢迎一起讨论!

  • 博客(39)
  • 收藏
  • 关注

原创 【经验】C++ 算法竞赛代码技巧

使用namespace封装一个模块,如和。使用引用x中y元素。可以把using ...直接写在namespace的右大括号后面而不是单独占一行。使用来快速打开输入输出文件,若要打开sample.in和sample.out那么写一个不需要加引号即可。使用在控制台而不是终端输出你的程序运行时间。在你开始创建数组等元素前定义一个bool类型的变量,如;在main函数之前再定义一个,这样你就可以通过输出内存大小。在调用类似于init的初始化函数时,可以在定义完init后写一个完成调用。对于。

2024-10-03 09:57:24 769

原创 Day4 平衡树 & 线段树

满足左子树权值比自己小、右子树权值比自己大(感觉操作很像线段树/树状数组上二分)rank(x)xxkthkrank(x)需要支持插入/删除元素cnt如果树构成一条链那么就会退化成On的操作复杂度。由此出现了。

2024-08-29 16:38:36 660

原创 Day3 二分图 & 网络路

可以考虑(即一条边两边端点颜色不同)和转化成二分图的模型。匹配:选择若干条边使得每个点周围至多只有一条边被选。最大匹配:最多的边。增广路用于将匹配边替换为一些当前可能更优的非匹配边,增广路中匹配边与非匹配边交替出现。:bfs/dfs,从每个点出发找增广路,找不到了就得到了极大匹配,即最大匹配。n。

2024-08-29 16:36:58 952

原创 Day1 计数类dp 知识点 & 部分例题

相当于计数、数方案数的 dp,其中概率就是总方案数合法方案数​。

2024-07-11 11:59:06 361

原创 入营第一天游记

日记

2024-07-07 21:33:44 182

原创 浙教版 七年级下册 科学复习干货

光源:能发光、正在发光的物体。分为自然光源(太阳)和人造光源(电灯)。直线传播:光的传播不需要介质。在同种均匀介质中沿直线传播。直线传播的表现:影子(日食、月食)、小孔成像光速V光3×105kms3×108msV_光=3\times 10^5km/s=3\times10^8m/sV光​3×105kms3×108ms。光年:光在一年中传播的距离。约等于9.46×1015km9.46×1015km。一个物体。

2024-06-23 18:35:32 1033

原创 2024信友队春季 Day3 二分&分治

也叫折半搜索,用于在一个数组中查找某一元素的算法。给定一个长度为n的从小到大排列的数列a和q次询问,每次询问给定x,查找x​ 在数列中的位置。nq≤106。对于ai​,如果xai​,因为a有序,则xain​;同理如果xai​,则xa1i​。然后就可以二分了。令lr表示x可能的区间,每轮求出一个mid2lr​,如果xamid​则mid即为答案;如果xamid​则区间被缩短为lmid−1;

2024-06-22 11:44:10 838

原创 题解:P3569 [POI2014] KAR-Cards

完全可以把交换操作看作两次单点修改,每次只需要考虑一个元素的变化对答案的影响即可。对于一个区间中的元素,显然开头的数越小,该区间能够单调不降的概率越大。次操作,每次操作会交换两个元素的位置,且都需要回答:是否存在一种方案,使得每个元素各选择一个权值后,组成的序列从左到右单调不降。维护这两个值(直接存末尾卡牌选择的值)。在建树、修改的时候用子区间信息进行更新。合并两个相邻区间的信息时,我们枚举左区间。末尾选择的数尽可能小。最终该区间的末尾取决于。,考虑线段树,对于区间。,两个子区间的编号为。

2024-06-22 11:42:54 937

原创 题解:CF1019D Large Triangle

条连线按照斜率从小到大排序,然后从小到大枚举,这样任意两点旋转后的横坐标大小关系恰好会变化一次。枚举连线的过程中每次交换两个端点,再在连线的两侧(正负)进行查找即可。个点,海伦公式判断面积是否相等。优化思路即为:对于先枚举的两个点。个点使得它们组成的三角形面积为。就要满足其到这条连线的距离为。个平面上的点,求是否存在。的距离有序,那么就可以。的复杂度二分了,分成在。考虑将所有点进行旋转,使。需要输出三个点的坐标。然后做法就出来了:先把。之上、之下两个部分。

2024-06-22 11:40:43 918

原创 P4097 【模板】李超线段树 / [HEOI2013] Segment 题解

这样我们就完成了对完全覆盖的区间的修改。对于其他部分覆盖的区间直接递归左右儿子解决即可。对于查询操作,将自己的答案与左右儿子取个。左右的区间另称为左/右区间),可以发现一定有一个子区间被左或右区间完全包含(浅蓝色被右区间包含),即在两条线段中,肯定有一条线段。我们考虑线段树上被两条线段完全覆盖的一个部分为。)先被加入,显然整个线段在当时就是最优的;因为每次修改操作都需要递归左右儿子,所以加线段的复杂度是。此时深红色的部分没有受到影响,只可能成为右区间最优的线段)。其中,红色线段(记为。

2024-05-26 09:48:57 615

原创 题解:CF1016E Rest In The Shades

预处理出挡板长度的前缀和统计这个点的贡献即可。处于阴影中的总距离(深红色线)。的连线被某个挡板相交或接触时,我们说。移动过程中处于阴影内的总时间。个平面上的点,求出这些点在。不相交、不接触的挡板,第。中挡板的占比后,就可以通过。坐标排序,两次二分求出。(灰色、青色部分)求出。

2024-05-26 03:30:00 362

原创 题解:CF1370F1 The Hidden Pair (Easy Version)

你可以向评测机询问一个点集,评测机会回答点集中与。的点集,按照上述两种情况二分,最终可以得到深度较大的。距离和最小的点,以及这个距离和。实现没什么难点,注意每次询问/回答都要。每一轮都询问一次深度为。对于第一种情况询问到的点都可能是。个点的树,需要得出树上两个点。个点进行询问,这样就可以得到。为树根,那么对于树中深度为。之间的距离,和一个必定在。中深度较大的点,不妨令。为树根,然后询问深度为。考虑二分,区间下界为。的点集,得到的点即为。

2024-05-25 20:29:01 399

原创 题解:CF1370F2 The Hidden Pair (Hard Version)

你可以向评测机询问一个点集,评测机会回答点集中与。的点集,按照上述两种情况二分,最终可以得到深度较大的。距离和最小的点,以及这个距离和。实现没什么难点,注意每次询问/回答都要。每一轮都询问一次深度为。对于第一种情况询问到的点都可能是。个点的树,需要得出树上两个点。个点进行询问,这样就可以得到。感性理解一下,因为我们要处理出。为树根,那么对于树中深度为。较深的一个点,所以深度小于。之间的距离,和一个必定在。的点都不会是那个较深的点。中深度较大的点,不妨令。为树根,然后询问深度为。的点集,得到的点即为。

2024-05-25 20:28:05 435

原创 题解:P9535 [YsOI2023] 连通图计数

时的树,树的数量也相同。现在考虑这挨在一起的两个环的方案。我们可以将这两个环拆成类似韦恩图的样子,分为左边环独有部分、左右环公用部分、右边环都有部分三条链。中挑两个点出来,之后的每个点都选择两个位置放在中间,不合法数量(即之后的所有点全都放在一条链上)即为。在树中无连边(即两个环没有公共点,否则就变成一个环了)。次,考虑到两个环位置可以调换但属同一种情况,所以答案要除以二,即为。区别在于,此时只能算出两个环的大小之和,答案类似,即。使用容斥,所有合法的树的数量等于所有减去不合法,即为。

2024-05-25 20:27:27 291

原创 2024信友队智灵班春季 Test1 总结

则它们会被一起删除,环会重新接上,这个过程一直重复直到不存在可以删除的元素。这很好想:如果某一时刻还剩下的元素没有被湮灭完,那么此时加入肯定会代替后面的某个元素进行湮灭操作。个打开,如果没有看见自己编号的纸条则所有人都将被处决。计算时从右往左计算(矩阵乘法的结合律),可以降低每一轮乘法的时间复杂度。压根不觉得这个提示是最优策略,以为只是针对于该样例而言可能的一个策略。号盒子,然后根据看到的纸条编号打开对应编号的盒子,直到。),宗旨即为:构造一个答案矩阵和转移矩阵,通过转移矩阵的。的值,则转移矩阵也相同。

2024-04-20 08:31:24 1759

原创 [CF825F] String Compression 题解

其中出现循环的子串压缩后长度为:循环节出现次数十进制下的位数+循环节长度,无循环的串也需要压缩。求压缩后的最小长度。这个部分完全压缩后的长度,求法即为:对于每个。分成若干个子串,这些子串全部完全压缩。,注意判断是否能够整除。中无小的循环节(即循环节长度为。个字符进行压缩的最小长度。个字符删除后跑 KMP,求得的。,对其执行 KMP 算法后得到。数组,可能的最小循环节长度。串进行压缩可以认为是把。

2024-04-11 18:55:33 975

原创 Day2 字符串哈希&KMP

将一个字符串转成一个数字,可以快速比较两个字符串是否相同等。要求为:相同字符串哈希值相同,不同字符串哈希值尽量不相同。映射方法通常采用多项式哈希方法,很像进制转换。假设字符串为 SSS,其哈希值为 f(S)f(S)f(S)。定义一个小的正整数 basebasebase(比如说 27,13127,13127,131),表示将 SSS 视为 basebasebase 进制下的数字。将字符串中涉及到的每个单独的字符 SiS_iSi​,转换为一个数字 xix_ixi​(比如说 a\texttt{a}a 为 000,

2024-04-10 21:35:22 1238

原创 Day1 省选衔接题 思路总结

在任意一种分隔方案中,都一定存在一种矩形放置顺序,使得每次放置之后,分界线仍然是单调的。所以即使是仅考虑单调的分界线状态,也一定可以搜索到所有状态,这样可以简化状态降低复杂度。然而这样复杂度仍然较高。

2024-04-10 21:19:58 874

原创 Day1 单调数据结构

单调数据结构,顾名思义具有单调性,比如说递增/递减。单调栈和单调队列秉持着的原则。

2024-04-04 19:14:14 1100

原创 P4784 [BalticOI 2016 Day2] 城市 题解

边权非负,显然最终选择的边组成一棵树,否则去掉环上一条边后答案更优且不影响连通性。于是本题转化为最小斯坦纳树的模板题,纯粹的模板题在。就可以作为第二种情况的一个起点。每一轮都以这些有值的点为可能的起点跑最短路即可。对于第一种情况,因为我们按照二进制思想压缩状态,所以对于状态。前者直接循环计算,后者可以用类似于最短路的松弛操作计算。点两两可达的情况下选择的边边权和的最小值。条边的无向图,边有正边权。个点被包含)时的答案。,如果在第一种情况的转移完成后,,即连通自己不需要连其他边。个点连通的最小斯坦纳树。

2024-03-24 20:13:29 1050 1

原创 最小生成树 算法解析+例题

给出一张n个点m条边的无向连通图G,每条边uv有边权wuv。顾名思义,在G的所有生成树中找一棵边权之和最小的树,这棵边权和最小的树就被称为G的最小生成树 MST(记为T生成树即为在G上的m条边中选择n−1条边将所有点连通组成的树。

2024-03-24 13:50:37 950 1

原创 P3639 [APIO2013] 道路费用 题解

最小生成树中这个连通块的部分选择的边就是不变的。所以我们就可以把这么多个连通块缩成一个点,每次跑最小生成树就不再需要考虑这个点的内部边的情况了。中的哪几条边最终被放进了最小生成树中,然后算出这几条边边权最多可以取多少,使得这些边全部都在树中。​ 条边的边权,使得这些边产生的贡献最大,求这些边的贡献之和。中边的贡献,所以每个连通块内部的边的贡献是不重要的,只需要记录连通块内点的点权之和。中的边后再加的边就是组成连通块的边,对于这些边在合并完。中的某几条边不在最小生成树上,那么说明有更优的。

2024-03-20 21:32:32 963 1

原创 P2934 [USACO09JAN] Safe Travel G 题解

假设需要经过两条及以上的非树边,那么总是有至少一条非树边可以用几条树边拼起来(否则这条非树边就应当是树边)。可以脑补一下走多条非树边的情况,一定存在一个更优的只走一条非树边的路径。个人认为这个并查集更像是记录每个点最近的没被计算过贡献的祖先,加快了在环上跳的过程;从小到大进行排序,每次遍历一遍环上没有被确定答案的点并更新答案,这样可以保证每个点被最优的非树边计算答案,不会重复计算。在环上的点的答案被更新以后,我们把它们全部归到一个并查集里,根节点为。,如果将其加进最短路树中,则会产生一个环,环上的点为。

2024-03-18 21:29:45 926 1

原创 最短路 算法解析+例题

最短路可以认为是图论最基础的内容之一,涉及到的算法也很多。为了方便,假设图有 $n$ 个点,$m$ 条边,$(u,v)$ 这条边的边权用 $w(u,v)$​ 表示。### 性质有几条关于**边权为正**的图的最短路的性质:- 任意两点之间的最短路,不会经过重复的点和边。- 任意两点之间的最短路,结点数不会超过 $n$,边数不会超过 $n-1$。对于前者,由于边权为正,如果一条最短路需要经过重复的点或边,更优的做法显然是在**第一次经过这个点或者边时**

2024-03-14 21:04:10 2168 1

原创 倍增法/st表 算法解析+例题

倍增,顾名思义就是成倍的增加。主要思想就是将问题的大区间分成 $\log n$ 个小块,每个块的长度为一个尽可能大的二的整数次幂,对于每个块用类似动态规划的方法 $O(n\log n)$ 预处理出来这部分的信息,最终用这些小块整合成大区间。能够把 $O(n)$ 的时间复杂度降到 $O(\log n)$。以一个经典的问题入手:> 给定一棵树,若干组询问求 $u,v$​ 的最近公共祖先,即 `LCA`。倍增法求 `LCA` 的基本流程:- 预处理出第 $i$ 个点往上跳 $2^j$ 次能跳到

2024-03-11 18:41:26 1204 1

原创 并查集 算法解析+例题

本质是一个森林,相同集合的元素属于同一棵树中。初始时每个点都是一棵树,自己即为根节点。对于前者,在实现上判断两个节点所在树的根节点是否相同。,即在查询的过程中直接将自己的父亲设为根节点,可以缩短查询需要往上跳的距离。对于后者,将其中一个节点所在树的根节点的父亲设为另一个节点所在树的根节点的儿子。,也叫,即总是将节点数少的、深度小的树的根节点的父亲设为另一个根节点,也是缩短了查询时跳跃的距离。在同时使用路径压缩和启发式合并之后,每个操作的平均时间复杂度为Oαn)),其中αn。

2024-03-06 19:43:26 2017 1

原创 P5629 【AFOI-19】区间与除法 题解

的性质,才可以用两段有重复部分的区间信息合并出大区间的信息。也就是说,它们都可以用相交的两区间的并,推出大区间。进制下为自己的前缀,则后面的求解中肯定会使用前者而不是自己,此时就可以直接退出了。进制下位数越少的原数,它能消除的数越多。并向下取整后与一个被称作“原数”的数相等,则说这个数能被这个原数消除。中的数用了哪些原数去消除尽可能多的元素,最后也就可以。,如果在插入过程中发现了一个原数的结尾,即有一个原数在。我们把所有的原数按照。,这提示我们可以把原数的使用信息用一个。的询问,求在用原数尽可能多的消除。

2024-03-04 20:47:13 2286 1

原创 P4082 [USACO17DEC] Push a Box P 题解

很显然重点落在箱子而不是人的移动上,但箱子的移动依赖于人的移动,人的移动又受到箱子的阻挡。在靠近到箱子的四周时才会对箱子的位置造成影响,所以判断状态是否已经入过队,我们只需记录箱子的坐标和。一个人能推动地图中的箱子,当且仅当他在箱子旁边,且箱子在按照人向箱子移动的方向移动一格后不会卡墙里或。的上面把箱子往下推,则必须有一条不经过箱子的路径使得。的左边把箱子往右推,则没有不经过箱子的路径使。在不经过箱子的情况下,能到箱子上下左右的哪里。的另一面去推动箱子而不使箱子移动,当且仅当。在箱子的哪一面即可。

2024-03-03 20:39:39 888

原创 拓扑排序 算法解析+例题

拓扑排序,一般指在一个DAG(有向无环图)中将顶点排序,使得对于图上任意一条有向边uvu在拓扑排序后在v的前面。这个排序的结果称为拓扑序。显然拓扑序一般不唯一。因为拓扑序满足后面的点不会对前面的点产生依赖,所以经常和动态规划结合在一起使用,保证后面的点不会影响前面已经计算过贡献的点。一张图存在拓扑序,当且仅当这是张DAG,所以一个常见的套路就是:先对原图进行缩点,然后用拓扑+动态规划等统计答案。拓扑算法基本流程:记录图中每个点的入度d,将入度等于0的点入队。每次取出一个队首u,将每一个与。

2024-03-03 11:02:49 1304

原创 P6381 『MdOI R2』Odyssey 题解

​ 和一张有向无环图,边有边权和长度,求最长的完美路径的长度(路径上边的长度之和)。​ 取模,则可以在质因数分解的过程中,快速计算出每条边走到下一条边的边权的值。为边的长度(和边权是两个量)。的边(已经对所有质因数的指数取模后的边权)来到点。,和对所有质因数的指数取模后当前边的边权。​ 进行质因数分解后对应质数的指数和为。转移,先求出当前边的边权的对应边权。考虑分析完美数对的性质。计算最长完美路径的长度,且原图是张。​ 的倍数,则一定存在正整数。的特判也可以看代码中的注释。的求法可以参考代码中的。

2024-03-03 10:21:01 846

原创 优先队列/二叉堆 算法解析+例题

优先队列:队列中的元素保持某种优先关系,比如大根堆中的元素就是谁大谁在前。朴素二叉堆:支持插入数,删除一个最值(堆顶),查询一个最值(堆顶)。二叉堆本质是一颗完全二叉树,父亲总是比儿子拥有更高的优先级(比如更大、更小等)。堆顶元素优先级最高。插入时把元素放在这棵树最底下(具体看代码),如果父亲比自己优先级低就交换,循环往复直至根节点。删除堆顶类似,把堆顶与堆底交换后删除堆顶,此时堆顶就是优先级较低的元素。从左右儿子中挑一个优先级更高的比较,如果自己的优先级更低则与之交换,循环往复直至叶节点。

2024-02-29 16:00:00 1201

原创 P7482 不条理狂诗曲 题解【纯思路】

前两种子区间可以分治递归求解。对于第三种子区间,我们令。选择若干不相邻的数的和的最大值。,我们可以用类似 dp 的方法预处理出。求所有区间的权值和提示我们使用分治。,此时当前区间产生对答案的贡献即为。另一种情况是对称的,处理方法相似。排序,使用双指针计算对应贡献。本文章仅提供解题思路!

2024-02-28 17:24:31 787

原创 P9361 [ICPC2022 Xi‘an R] Contests 题解

场比赛的前缀并”来描述下一步能到的所有选手,于是模拟过程中我们可以只维护。步能到达的所有选手。注意到我们永远可以通过“暴力的做法是从小到大枚举步数,并维护不超过。大致题意见题目描述,这里主要解释一下选手。考虑使用倍增加速,预处理每个跳。虽然在第一场比赛中选手。

2024-02-28 17:21:32 1045

原创 P8207 [THUPC2022 初赛] 最小公倍树 题解

内的点所构成的无向图的最小生成树中边的边权和。所以我们可以找到这个最小的。,于是考虑枚举这个公因子。最后跑最小生成树即可。两两建边显然不行,考虑优化建边。为确保连通,还需要连一条。尽可能大的点对连边,也就是说。,根据调和级数,最后边的数量。标记为起点,向之后在。,总时间复杂度大约在。

2024-02-28 17:18:51 711

原创 P4652 [CEOI2017] One-Way Streets 题解

所以我们考虑把所有的边双缩成一个点,每一个边双中的边都标记为无法定向。这样原来的无向图就变成了一棵树,否则由于是无向图,一定还存在边双连通分量,可以进一步缩成点。首先观察到无向图中的边双连通分量中的边无法被定向。路径中经过一个边双的部分,一定可以像下图一样以另一个方向绕过这个边双。,则说明是它的父亲指向该点;计算每条边的方向时,树链剖分显然可行,但我们也可以采用树上差分。需要求出每条边是否能被确定方向,如果能确定方向则求出它的方向。将每个结点的儿子的差分值累加至父亲的差分值里。,则说明是该点指向它的父亲;

2024-02-27 18:46:36 823

原创 P1752 点菜 题解

根据题意,一个可行的贪心方案是:总是让有限制的人群优先选择菜,且限制宽松的人总是吃掉条件更苛刻的(例如更贵的、更难吃的)菜,从而让限制较大的人产生更大的贡献。考虑完所有的菜后,如果还有挑剔的人没有被考虑,此时队列里的菜他们肯定都能吃,所以让他们去尽可能吃光队列里的菜。个人,当前队列里的菜都是他能吃的,后面的人也能吃。贵的菜,而前面的人又都吃了尽可能多的才,则说明这道菜只能由普通人吃,将其弹出并记录,然后考虑队列中第。考虑完所有贫穷的人后,队列里剩下的菜和被记录的菜由剩下的。道菜有美味值和价格两个参数,

2024-02-27 18:32:54 1021

原创 P5522 [yLOI2019] 棠梨煎雪 题解

因为不会有任何一个字符串匹配该区间。如果确定为某个数,则这一位只有一种可能;否则这一位有两种可能。根据乘法原理,如果有。表示这个区间的信息不合法。转移时从左右孩子进行一下位运算合并。如果两个孩子已确定的。的串当且仅当它们长度相同且对应位置均可匹配。位置有冲突则区间不合法。个位置有两种可能,则本次询问的答案为。,所以一个串每个位置的信息可以用一个。内每个位置的信息也可以用这样一个。个字符,一共有四种可能:确定为。个字符串,每个字符串仅含。考虑对于一段所有字符串的第。分别可以和自己匹配,

2024-02-27 18:29:17 911

原创 Progressions Covering 题解

此时发现我们只需要修改两处二次差分后的增加量数组,就可以实现区间加公差为一的等差序列。我们选择一个前面所说的最优区间进行操作,直到该元素满足条件。注意到我们是从后往前进行操作,所以我们可以动态的计算当前元素增加的量。的操作区间尽量末尾处。这样操作可以使操作区间产生的影响最大化,且。不会对当前和还未被扫描的元素产生影响,所以我们不用太在意这个。,即没有满足条件,则最优的操作方案显然为将。维护区间加的过程考虑差分。个元素,且该元素没有满足条件,的区间,区间左端点大于。因为我们是从后往前做的,

2024-02-27 18:25:25 877

原创 [ABC254Ex] Multiply or Divide by 2 题解

数组中相同元素出现次数相同的最少操作次数,若无解则输出。这个过程可以用优先队列进行维护。所以我们使用贪心算法。考虑两个数组的最大值。数组执行的操作一转化为对于。进行操作一,等价于将。于是我们便可以把对于。

2024-02-27 18:12:29 871

空空如也

空空如也

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

TA关注的人

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