自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 考虑问题从哪些角度入手

断开一条边,一棵树会被分裂成两个联通快,假设两个联通块里学校个数分别为x,y。那么这条边会被贡献min(x,y)次。首先,显然这条边不会被贡献超过min(x,y)次,如果这条边贡献次数小于min(x,y),那么说明两个联通块内部有匹配,把这个内部匹配改成外部,边数会增加,因此这样的答案不优。题意:给出一棵树,树上有一些2k个学校,现在要让学校两两匹配,求匹配后两两距离和的最大值。解法:我发现如果找具体2k个学校怎么匹配的话,没有头绪。问题直接给出的量不好求解,转而考虑一些容易计算的量。

2025-08-22 20:34:06 273

原创 牛客周赛 Round 103 F题

解法:对字符串集合t建立字典树,并对每一个节点记录cnt值,表示有多少个串对这个节点有贡献,然后遍历字典树,对于每一个节点做字符串哈希,key是从根到这个节点的串,value是cnt值。然后对于s的每一个后缀,二分检查它在字典树中是否存在(通过哈希O(1)检查),答案取最大值。题意:给定一个字符串s,一个字符串集合t1,t2...,tm。对于s的所有后缀,求其与ti的lcp之和的最大值。

2025-08-04 17:26:48 148

原创 CF718C Sasha and Array

线段树维护矩阵。

2025-05-11 09:36:03 134

原创 洛谷P9751 旅游巴士

tag:bfs求边长全为1的最短路;dijkstra思想。

2025-05-03 09:45:39 253

原创 洛谷P3694

也就是说,一旦某个位置有人出列,那一定会有人补回来。一个重要条件是:让出列的偶像一个个归队到原来的空位。f[i]表示调整到状态i,需要出列人数的最小值。注意到乐队总数很少,考虑对子集进行dp。tag:前缀和,子集dp,刷表法。

2025-05-01 23:46:45 256

原创 dfs序求lca

对于(1),深度最小的那个点一定不只是u这个点,所以也可以求[dfn[u]+1,dfn[v]]之间,深度最小的那个点的父节点,等价于哪个点的父节点dfn最小。(2)u是v的祖先节点,那我们就是要找[dfn[u]+1,dfn[v]]之间,深度最小的那个点的父节点。(1)u不是v的祖先节点,那我们就是要找[dfn[u],dfn[v]]之间,深度最小的那个点的父节点;实现快速查询某个连续dfn区间里,哪个点的父节点dfn最小,可以用st表实现。如果u是v的祖先,那么dfn[u]一定小于dfn[v]。

2025-04-08 20:13:21 467

原创 洛谷P2700 逐个击破

这个贪心算法的证明思路类似于Kruskal算法,如果当前最大的边两侧的连通块目前不同时包含特殊点,但我们不选这条边,也就是说未来一定两边的连通块都包含特殊点(否则可以直接选上),那既然现在不包含特殊点,未来包含,即选了一条权值更小的边使得特殊点加入了某个连通块,我们断开那条加入特殊点的较小的边,连接当前考虑的最大边,仍然符合题目要求,所以我们一定要选当前最大边(前提是两侧的连通块不同时包含特殊点)。分析:假设所有边全部删除,问题等价于加权值和尽可能大的边,使得k个特殊点相互之间不再联通。

2025-01-18 22:18:57 301

原创 刷遍力扣周赛300场以后的场次

如果i+1位填d,我们可以算出j2的值(10的次幂预处理),等同于从状态(i,j)向(i+1,j2)连了一条有向边,从大到小枚举d即可。且可以看出每种状态最多被访问一次。1.在i位置填了数字d,那么同时也会在(n-i-1)位置填数字d。记状态(i,j)为从右往左填到第i位,已填入的数字模k的值为j。2.在生成答案之前,只关心当前回文数模k的值。T1:求有多少个子字符串满足题干条件。题意:构建一个n位最大的能被k整除的回文数。滑动窗口+二分+前缀和。T4:前缀和优化dp。

2024-10-04 10:49:31 303

原创 优质博客推荐(自用)

【扫描线】从头到尾弄懂扫描线 是否push_down典例分析 - 寂静的海底 - 博客园 (cnblogs.com)

2024-08-16 22:16:59 177

原创 2024蓝桥杯c++A组游记

G题有一个lca的朴素想法,但倍增法太久没写写不出来了,就改成暴力一个一个的往上跳了,而且没有大样例感觉很危险。E题答案显然具有二分性质,每次check的时候排一下序,方差公式展开一下就可以O(n)的判定,类似滑动窗口?F题开局写了个O(n^2)的算法,拍了一下发现写假了,改了改未果,最后数据分块交上去了(汗。填空第一题是儒略历的退化版,很快做出来了,第二道感觉不太可做跳了。补补上周末cf的e题,复习下矩阵快速幂,看看数据结构和对拍。D题看了看没大有思路,判了下0,暴力都没写出来。感觉啥也不会,有点慌。

2024-04-13 23:49:20 619 2

原创 ABC 341

单调递增,因此可以维护一个离散的向上凹的曲线,每次加入一个新的点,只要在保证曲线仍然为凹函数的前提下,横坐标离当前点最近的点即为要找的。维护凹函数可以用单调栈来维护,因为每个点最多入栈一次,因此算法复杂度为。的最大值,从斜率的角度理解该式子,即求斜率的最大值。为结尾的一段连续序列的平均值的最大值。为开头的一段连续序列的平均值的最大值。

2024-02-18 17:38:10 971

原创 ABC 339(E~G)题解

不难发现如下性质,如当前扫描的序列为1、3、2,那么3这个数字就不会起到任何贡献了(因为能拼在3后面的数字一定也能拼在2后面)。也就是说,想要拼成的上升子序列尽可能长,则需要让每次在上升子序列最后添加的数尽可能小。的最大值,同时该数据结构应能支持单点的修改操作,线段树可以支持以上操作!设dp[i]表示选中第i个数作为上升子序列结尾所得到的所有子序列中的最长长度。,问的是给定序列的最长上升子序列。为结尾数字的上升子序列的最长长度。这样dp的复杂度可以被优化为。的上升子序列中末尾元素的最小值,不难证明。

2024-02-06 19:17:55 1383 1

原创 洛谷P10115 [LMXOI Round 1] Placer

记录能与其匹配的最近左括号位置。这步操作可以用一个类似栈的方法做到。划分为若干非空子段,定义美丽度为每个子段价值之和,求最大美丽度。表示原括号序列的前i位所能得到的最大美丽度。定义一段括号序列的价值:若括号序列。的方法比较精彩,对于一个位置在。是一个合法的括号序列。题意:给定一个长度为。为合法序列,其价值为。

2024-02-03 17:32:07 912 1

原创 寒假牛客集训

6/13,考得差,全程卡B题,先错误的考虑了离散化做法(think twice, code once),后想到正确做法,但无法调试出,整体心态就有些崩。以后遇见卡住1h的问题要大胆取舍。基本算法写得不够熟练扎实。B题错误在于对于一种情况的特判没有处理清楚。(这种问题考察对于细节的精致把控,不能出现一分差池)像E题这种数据范围非常小的问题,应当直接深搜(题名有贪心直接排除贪心hh)。

2024-02-03 12:18:12 229 1

原创 div2 c题专项训练

对于构造的反例的第一位,使用k个字母中在s中第一次出现位置下标最大的那个一定是最优的。这个字母加入到反例中,将s的相应前缀删除,重复上述过程。如果最后构造出的反例长度大于等于n,那么输出YES;否则输出NO,一个没有出现的子串可以构造为当前构造出的反例加上若干个在剩下的s中没有出现的字母,将反例长度扩充为n输出即可。c题普遍不考察高深算法,而考察对问题的分析能力和简单的数学推导。发现k个字母能form的长度为n的串数量是非常多的,如果去检验每一个串是否在s中是否出现复杂度过大且代码不好实现。

2024-01-28 10:33:07 491 1

原创 算法竞赛中的一些注意事项

考前读一下

2024-01-25 19:22:06 237

原创 ARC 170

如果不合法,那么需要在括号序列最前面添加左括号或者在最后面添加右括号。需要注意的是,只要括号序列最左边是左括号且最右边是右括号,那么一定有解。答案即为能配对的括号对数加上单个括号的数量。如果最左边不是左括号或者最右边不是右括号,那么我们要。前言:第一次打regular场,大败而归,只出了A题。对于一次操作,可以使S新增0位,1位,2位和T相等的位置。要求使操作的步骤最小化,那么我们应尽可能多地进行新增2位的操作,即修改。的地方寻找与此括号配对的地方,能找到则有解,反之无解。

2024-01-22 00:45:25 534 1

原创 ABC 336

C:本质上是把一个十进制数转化成五进制数,但是五进制下的0~4分别用0、2、4、6、8代替。B:统计一个数在二进制表示下结尾有几个0,一直将该数右移,什么时候变成奇数就停止。知识点:将一个十进制数转化成k进制数。

2024-01-18 11:16:44 642 1

原创 ABC 335

C:对于身体的每个部分,其位置一定是以一定的延迟去复现龙头的位置。所以可以把龙头经过的所有位置记录下来,然后把延迟体现出来即可。如果还没有走到龙头,需要特判。E:第一反应是在拓扑排序后的序列上做一个DP,然后发现不是DAG,就不会了。B:枚举三个数,判断,字典序从小到大枚举即可。注意偏移量数组使用的技巧。A:把结尾的3改成4即可。

2024-01-07 09:17:43 642 1

原创 近期需要补的东西

数学基础太差,赶快补补

2024-01-03 11:54:56 430 1

空空如也

空空如也

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

TA关注的人

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