- 博客(27)
- 收藏
- 关注
原创 剩余不多的ACM日记
虽然是第一次去,我还是装成很会的样子,直接走到自由区,拿起哑铃就是热身。结果发现重量都在大了,然后…就开始学周围的大佬做动作了,哈哈哈哈(去之前心想,不能学,绝对不能学。)一个小时就回来,接着做,发现环状舞会的题目还没有补掉,就给做完了。下午学习了一下独立集,基环树,以及他们的经典例题,基环树DP,其实就是环状舞会,还可以。新年第一训,看着倒数日上剩余不多的时间,决定写一写日记,留下点回忆。果然去健身房是比在家练效果更好,胸疼死了,敲键盘都快没劲了。哦,对了,今天三顿饭,餐餐吃煎饼,真是太好吃了!
2025-02-16 20:31:23
274
1
原创 ICPC简单博弈论总结
博弈论在ICPC中出现的次数较多,并且出现在铜牌以下,其凭借博弈游戏的大思维量和简短的代码量,稳居easy题目。面对不同的参赛者,会从不同的角度去考虑局面,导致情况多样化,会做的很快就做出来,不会做的可能一直做不出来,为防止赛时出现此类情况,理应整理部分知名博弈游戏结论,以便不时之需。看了这么多的博弈论,都是比较简单的或者比较出名的。简单的总结一下会遇到的博弈论类型首先是三大出名博弈论,巴什博弈,尼姆博弈,威佐夫博弈,这类博弈都不具备推广性,只是单独对于相应问题而言,并不是类似一个模型一样进行套用。
2025-10-23 19:56:18
820
原创 网络流初步
网络流不同之处在于它的本质图论,但是把图论的某些概念换了一个说法而已,初步只要了解网络流的各个概念就可以明白的很快。下述概念是本人自己定义的,对于网络流的题目做的还不多,后续会更正。首先需要理解:网络流其实是在一个有向图中,从某个原点开始放水,水沿着管道最后流向汇点的过程,基于此就可以很好的理解一些概念和定理,而不需要十分严谨的证明(因为证明意义不大流网络: 对于一个 G(V,E)G(V,E)G(V,E) 的单向图,我们称为流网络容量C: 点和点之间的边权成为容量流量F: 通俗点说,点与点之间流过的水流量,
2025-08-14 17:55:10
657
1
原创 基环树,图内找环技巧
原理,vis2中存储的是每个点的dfs序,我们知道对于一个环,我们会在dfs时遇到两次,第一次是子节v点访问到曾祖父节点,形成环,第二次是回溯时,回溯到曾祖父节点,然后继续枚举该点连接的其他点时,枚举到子节点。对于第一次相遇,其实和我之前的想法是一样,我们普遍认为,最好想的找环就是遇到曾经遇到的,但是解决不了上述的问题。但是我发现,没有办法记录两个点构成的环,因为我们在dfs的时候,通常会将连接父亲的点重复边,一般会。,所以这就导致我们解决不了两个点的环。
2025-08-09 16:48:23
308
原创 问题 K: 实在是太美
我加入第四组括号的左括号特别特别大,此时反悔堆中有优先弹出最小的右括号,此时4,5,6位置都是右括号,我们来考虑一下情况,如果4,5其中一个变为左括号,我们发现,其实和这个左括号匹配的并不是第四组的右括号,而是6号位的右括号,那么我们的目的是是什么呢,是让曾经与4,5之中匹配的左括号和第四组的右括号匹配。说的有点繁琐,简单的讲:或许这个反悔确实有点东西,确实,贪心的局部最优解性质仍然存在,但是因为这个反悔操作,改变了已经存在的最优子结构,从而保证了全局最优解。但是,贪心如何保证做到全局最优解?
2025-08-06 15:50:40
1037
原创 钉耙编程round6 1002 英逃题解
当我开始模拟数据,手玩几组,想找出几组数组来反制这个单调性的时候,我发现,我枚举绝对值出现的情况,发现了单调性,并且其实枚举的情况很少,试试证明这些情况下,统统满足单调性。其实还有一种,原理相同,神奇的发现,随之右端点扩张,距离的总和只会不变或者变小,自然得出了单调性的结论。我看了两篇题解,对我迷茫的单调性证明总是轻描淡写,一笔带过,导致我想了很久才明白,他们是这样说的。的思路,能不能进行二分,但是我没有发现单调性,所以这道题目一直被卡着。,绝对值的存在让我自发的认为非常难处理,因为要考虑多种情况,从而。
2025-07-27 14:54:51
925
原创 DP——环形与后效性处理
不需要连续,那么我们的答案就是最优答案,所以现在我们只需要考虑二者连续的情况,而二者连续的情况我们只需要。转移也很简单,只需要考虑上一个是否连续即可。,每个物品的价值满足上述要求,求在使得背包容量恰好装满的最大值。可以做出贡献,并且最后的答案中必须最后一个位置选。因为需要考虑上一个位置是否选择,所以我们有。之间的环的时候,如果最优结果中第一和第。就可以了,如何强制选择呢,也就是。:我们发现,当我们断开第。,但是空间似乎有点爆炸,,用滚动数组优化就可以了。,可是发现时间复杂度在。一个十分暴力的想法就是。
2025-02-24 16:27:12
895
原创 树形DP(树形背包+换根DP)
通过题目可以知道,一条路径上的流量取决于最小流量边,所以这是一个维护最小值的问题。对于度数只为1的还需要特别注意,度数唯一不一定是叶子结点,也可能是根节点,当换根时,根节点变成叶子结点,我们先来想如果根节点固定的时候如何做,比较容易的DP,其实也就是递推,没有任何决策问题。我来思考,如果是在树中间换根怎么办,我们发现,父亲节点还需要同时加入父亲父亲的节点情况。节点就是根节点,不再是父亲节点的时候,此时的值刚好就是。家常便饭了,写了好几遍,没啥好说的,正常独立集问题。题面:见ACwing287。
2025-02-22 16:06:37
860
原创 区间DP(模板+蓝书例题)
所以我开始考虑子树的分布情况,然后我发现,将所有和顶点统计出来,然后组合数选择,然后在转移,根本不可能。一个区间DP进阶思想就是,区间DP本质上是像类似线段树类似的结构不断向上合并,这样就可以将区间DP和树进行联系,题目外表出关于树的题目,然后在联系上序列,这样就看着比较不可做,区间DP不容易想到,需要相对多的树和区间的知识。,但是如果写多了也不会出问题,因为多出来的情况也不会造成贡献,但是那样更不容易理解,也不严谨。,左侧的森林和右侧森林都可以求解,不过很快发现,这样算重,因此也就卡在这里…
2025-02-21 10:21:50
1107
原创 多重背包(二进制优化+单调队列优化)
但是我们的单调队列维护的就是这个最大值,但是现在当位置发生变换的时候,相同位置上的值发生改变了,这该如何办。我们发现,余数不同的之间不会相互影响,因此我们可以考虑分组进行转移。是不会影响单调性的,相当于没加,我们可以当成不操作,但是,有一个新数会加入到队列。,但是我们发现,对于相同位置,需要的状态转移表达式是不一样的。此时,我们为保证大小,就必须更改队列中的元素,使得他们都加。我们可以反过来看,我们需要比较的只是大小关系,我把。,因为我们队列中各村放的是每个转移的体积,的倍数,说明转移和被转移的体积对。
2025-02-20 09:13:57
1273
原创 背包DP 呀
去统计了,结果发现很明显是错误的,当时就炸了,这可没办法跑DP,因此状态与状态之间不可以转移,每个状态的答案取决于当前差的和的绝对值大小,因为绝对值,最小值,最大值维护都是错误的,当时就没有办法解决绝对值,因此也就不做了。因为就在于:装满的求的是方案数,当一个物品装入后不能使当前背包变满,那么就不会得到转移,而对于求最值,即使当前背包不是变满,可是当前物品可以对答案做出贡献,重点在于方案数和最值。看了 y总的视频,写代码真快,确实帅,思路清晰,每行代码都是一句话。的数据,稍微更改一下题目就很显然的做了。
2025-02-19 15:43:50
381
原创 线型DP呀
这道题目是蓝书DP第一道题目,在ACwing上也显示是简单题,当时就像拿来练手,不过现在看来,这像是一道劝退题,难度评定有误。首先,题目特别绕口,简单地说就是数字要求从左到右依次增大,从上到下依次增大,并且从上到下满足数量依次减少。说到这里,起码可以感受到平常DP的思路:连续地推,说的再普通一点就是通过上一个位置转移(常规的线型DP),因为上面写到,发现一个性质是每行必须是连续的,同样的,每列也必须是连续的,因此才有这样的限制条件。,总满足当前状态下最大值,所以可以在边界所以放置,所以转移式子就出来了。
2025-02-17 16:02:59
1030
原创 基环树与独立集
这里的错误是,在 dfs1 寻找树上环的时候,我对每个点的 fa 进行了赋值,然后在跑 dfs2 的时候直接就。在输出答案的时候,我们发现无法判断最后一个数和第一个数之间的关系,有可能存在二者都选的情况。点是当前除了其两条出边的“环上点”之外,他就是顶点,所以曾经的父亲节点是不对的。解决方式是看题解的:直接强制判断第一个选还是不选,那么最后答案就方便选择了。题目换句话说就是一个基环树,也可能是(基环森林),求解最大独立集。说说自己出现的问题,以及一些值得注意的地方。实际上,这是错误的,因为此时。
2025-02-16 16:02:26
1128
原创 2022年3月上海月赛
最为最后一位,因为只有这样,我们在状态转移的时候才能更加可以判断是否可以转移。总结:以后遇见升序类的DP问题,一定要抛开位置,从相对位置开始思考!向后移动对于当前第i个位置来说可能会超出i的范围,就导致后效作用。这种考虑是多余的,我们现在说DP是什么,再来说为什么多余。我就不会做了,期间想了DP,但是发现一个问题。可以说一开始一点思路都没有,连暴力都不会写。然后我就开始挖掘性质,首先可以显然的发现。个作为不动升序列的最小花费。大往后移动的花费,而不是下标。
2025-01-17 21:00:34
712
原创 2022年2月上海月赛
为了满足该条件,我们就会发现计算有两种,一种是最大值在右侧,一种是最大值在左侧,我们可以维护右侧最大值,然后找最后一个满足要求的左端点,剩下的部分就是最大值在左侧的情况,此时我们发现需要做的就是维护区该区间的最大值之和。扫描线的主要实现方式:对x轴进行离散化,用线段树维护x轴,维护的内容是区间最小值,已经最小值的个数,简单的将因该是维护 0 的个数,这样通过区间总数就可以直接得到区间中不为0的数量,通过枚举y轴的变化,来直接算出不为零的位置对面积所做出的贡献,这样看来就像是一条扫描线。
2025-01-16 15:46:15
886
原创 CDQ分治+扫描线——(COGS577蝗灾,矩形面积的并)
首先 CDQ分治的重点是分治,实质是通过分治将多维偏序问题降维,直观体现比如,有修改和查询的操作,每次操作都保证前一半只取修改,后一半只取查询,然后进行计算,这样总能保证修改在查询前面,随着分治不断地进行,最终所有在当前查询点前的所有修改都会对其产生贡献,通过这两道题,我也很很难说出CDQ和扫描线的具体模板,代码上直观的感受是线段树和树状数组维护,思想上直观的看就是偏序问题降维,说人话就是多元问题,但从时间方面看是无序问题,通过这些方法实现降维问题,CDQ的时间降维,扫描线的x降维。
2025-01-16 09:49:07
1010
原创 2022年1月上海月赛乙组
子序列,一点脾气都没有,不过可以提供一点方向,看到这种序列比较是否相同,就会非常麻烦,她不想字符串一样可以直接map直接比较去重,所以这让我放弃了暴力的思路,并且关系到计数问题,所以很自然的从DP和计数方面考虑,先考虑的计数,可是发现,不存在合并性,有考虑DP,结果发现我无法用状态完美描述当前的状态,并且没办法比较,说到底还是去重的问题。块,就必须移动一些,而无论往哪里移动,都不符合条件,以为无论和谁结合,都是超标的,因为分割的时候就是这么分割的,所以我们二分得到的答案就是最优结果。
2025-01-13 21:00:38
1031
原创 【基础类】枚举
一个好问题:给定 nnn ,输出{1,2,3...n}\{1,2,3...n\}{1,2,3...n} 的所有子集的所有子集的总数(重复的重复算)结论是:3n3^n3n 个。直观上,因为数量为 nnn 的所有子集是 2n2^n2n 个,所以上述问题的计算公式为 20×Cn0+21×Cn1......+2n×Cnn2^0\times C_{n}^0+2^1\times C_{n}^1......+2^n\times C_{n}^n20×Cn0+21×Cn1......+2n×Cnn其中 2n2^n2n
2024-10-31 22:33:00
1875
原创 基础类(枚举,贪心,分治,二分,搜索)
所以这个小tips,就可以让我知道 dfs 是否会超时,如果不知道,看到上面的式子,我就觉得爆搜肯定超时。但是显然,我不会这个和是多少,感觉非常大,经过手算发现,几个小数据都表明。的所有子集的所有子集的总数(重复的重复算)个子子集,这样长度的子集一共有。个,所以上述问题的计算公式为。表示长度为n的子集会有。,严谨的证明没找到。
2024-10-31 01:23:39
170
原创 欧拉筛进阶
通过这次学习欧拉筛进阶,我又进一步对欧拉筛加深了理解,消除了我对欧拉筛的一处误区。visprej×i1visprej×i1,在原欧拉筛中,无需任何判断,直接写,不需要考虑是不是第一个最小的。当时我在想,因为就算不是最小的第一个,因为之前就包含了一个,那么肯定这个数就已经被标记了,所以无所谓。但是实际上,这是一个新数,我有点想当然了,显然他没有被标记。用于晒去最小素因子个数1>11的合数。
2024-10-31 01:21:14
375
原创 洛谷 Fox and Card Game(博弈论)
这道题目自己没有做出来,思路上制作出来一半,但是后面的部分更重要自己大概率想不出来。没有用到SG函数。
2024-10-10 23:46:00
795
原创 浅谈SG函数
听说CSDN给米就来了,不过作为一个品质优良的程序员来说,无私奉献是我应该做的,所以博主写的文章基本上不花钱,都是为了以后某天忘记了,自己能看懂才写的。so,我会写的很啰嗦,直到保证忘记的我能够看懂。对于读者嘛,能看就看吧,我就不管了。咱们一步一步来。
2024-10-09 23:24:48
1654
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅