- 博客(52)
- 收藏
- 关注
原创 【题解】[UTPC2024] C.Card Deck
由于放入袋中后会进行补位,也就是说我们并不关心补进来的是哪一张真正的原始牌,当进行第。轮之后所有可能的袋子里牌所组成的集合的大小之和。考虑进行转化,只考虑前。,表示这张牌永远不会被放入袋子中,否则表示这张牌会在第。因此可以对每一张牌单独计算贡献。原题的模型是每一步可以选择顶部。,则这张牌出现在集合里的次数为。的牌都已经放入袋中,总共有。张牌,每张牌都有一个属性。张牌等价,所以最后的答案为。(可以为空)放在袋中,求。轮后袋子里的数,最后求。,下证明两个模型等价。
2025-06-07 23:46:19
589
原创 题解:CF2107E Ain and Apple Tree
当这棵树为一条链时,答案取到最大值。证明很简单,假设存在一个节点。接下去证明该调整操作的可行性。显然,在不断操作后,连边所形成的链,之后考虑进行调整。能够改变答案的减少量为。改为直接相连,能够增大答案。,因此当有解时,总是存在一种调整方案。并代入得,该操作对答案的减少量为。因此假设不成立,命题得证。重复调整操作直至符合条件。个孩子节点,任取两个。若可以操作,则完成后。首先考虑无解的情况。
2025-05-07 13:48:28
808
原创 2025-2026 XCPC
本赛季由 jr-Zlw\texttt{\color{#AA00AA}{jr-Zlw}}jr-Zlw, Skyzhou\texttt{\color{#03A89E} Skyzhou} Skyzhou 和 sunchaoyi\texttt{\color{#0000FF}sunchaoyi}sunchaoyi 组队,全靠大佬带飞~。中文队名:正在验证该队是否是真人。这可能需要五小时时间。英文队名:Verifying we are human. This may take five hours.备战省赛,也是组队后
2025-05-02 22:57:42
985
1
原创 题解:CF2106G2 Baudelaire (hard version)
所有相邻的点加入集合中,通过二分法找到哪一个子结点与根距离最近。次询问之后就能找到根节点。最后进行一次 dfs 并询问即可求出答案。由 G1 可知,只要能确定根节点的位置,就能够用。因此,本题就需要在不超过。次的询问中获得根节点的位置。利用这个性质,可以先找到以。综上所述,至多需要约。
2025-04-25 15:42:02
494
原创 题解:CF2096F Wonderful Impostors
时,我们可以直接通过线段树维护区间最小值来判断合法性。但是最棘手的部分是当加入。的删减,用 multiset 处理单点,后上传到线段树上即可实现。线段树与二分的结合显然可以实现,但是总时间复杂度为。区间的询问均可合法。在处理询问时,转化为判断是否。,亲测会超时,故考虑线段树二分。那么现在的难点便是如何检验区间的合法性。,线段树维护最大值即可。,即可说明该操作的合法性。,则说明该时刻的情况不合法。区间的询问均合法,当加入。后,若区间不合法,则进行。的操作时,会影响到之前。因此,最后的时间复杂度为。
2025-04-23 09:44:42
485
原创 题解:CF886E Maximum Element
若最后求得的答案是正确的,我们只需要枚举。的状态考虑的是排列,但是显然我们只需要考虑数字之间的。,因此第一段的方案数是合理的。的排列得到正确的结果的方案数。的排列直到循环完也没有提前。所放置的位置,由于不会提前。,也就说明该数字所在的位置为。个数字,随意放置,也就是。正难则反,考虑长度为。,然后合法的方案数为。
2025-04-18 22:03:15
774
原创 题解:CF2092D Mishkin Energizer
进一步地,只要存在相邻两个字母不同,就可以花费一个操作变为万能串。每一步最多操作两次即可向着目标前进,故总次数不会超过。后,需要注意万能串最左侧的位置会增加。由于还需要记录路径,当。需求的写法最为简洁。
2025-04-02 15:33:26
312
2
原创 题解:CF98E Help Shrek and Donkey
使得每个人的选择都让对方无法猜透,更进一步来说,就是期望价值相等(如果画图,可以得到两条线存在非坐标轴处的交点)。由于后手选择相信,后手也就知晓了桌上的牌,因此下一次可以直接猜测这张牌而获胜。首先,在最优策略的条件下,在没有多余信息的情况时,先手不会主动去猜测,只会不断地尝试询问。由于后手选择不相信,相当于后手认为这张牌是先手的,因此先手胜。的概率问到后手手中的牌。的概率问到后手手中的牌。相当于后手知晓了先手的一张牌,先手无多余信息获得,收益为。后手认为这张牌是桌上的牌,因此后手无法获胜,收益为。
2025-03-26 19:53:36
933
原创 题解:CF2075E XOR Matrix
数组内的数任意选择两种,并枚举其中一种数的个数。用二项式定理进一步化简,最终可得到方案数为。数组内的数均只有一种,此时生成的异或矩阵只有一种取值,满足题目条件,方案数为。此时生成的异或矩阵有两种取值,仍然满足题目条件。注意到一个数组内的数的种类不可能大于。,于是大力分类讨论。
2025-03-20 12:29:31
567
原创 题解:CF2069F Graph Inclusion
由于存在动态的加边删边,不难想到时间戳的线段树分治。对于在某一张图的边,记录下出现时间和消失时间。与此同时,可以在并查集的合并时增加一个返回值,若形成一次有效的合并时,连通块的个数便会减少。注意,若一条边在加入之后一直存在,则该边在。中必同属于一个连通分量。因此,我们不难得出上述结论。由于并查集不能路径压缩,最后时间复杂度为。至于如何计算连通块的个数,初始值显然为。的连通块数量,我们可以先求解出。中属于同一个连通分量,那么在。,则由题目可知,该边在。对于一组询问,答案为。,然后在此基础上加入。
2025-02-24 22:51:01
1168
原创 题解:ABC394G Dense Buildings
作为该组询问的答案。检验的过程和单组询问大致相同,可以从高到低进行相邻块合并后检验连通性即可。考虑优化,不难发现各组询问直接相互独立,且可以离线操作,所以我们可以使用整体二分。仍然成立,那么我们就尝试将。,对于一次二分操作,若此时。
2025-02-23 20:53:53
896
原创 题解:CF2066C Bitwise Slides
但这样显然会有很多冗余的转移以及判断,考虑异或的性质去优化。数字过大,离散化或者直接用 map 即可。个数时,我们尝试将之前所有的有效状态的。尝试去异或,然后检测合法性。回顾一下题面,对于一个数字只能选择。的情况,其余直接继承。首先考虑暴力的转移,当枚举到第。中的一个去异或,那么处理完。转移共有三种方式,而由。不能两两互异,此时设。,故可能的有效状态为。
2025-02-15 17:10:30
634
原创 题解:CF2063F1 Counting Is Not Fun (Easy Version)
对括号进行编号,然后借助栈,当遇到未被添加括号的位置时,将贡献加在栈顶的括号对应的编号上,最后根据乘法原理求解即可。当有括号加入时,未被添加括号的位置的贡献不会超过最外层已匹配的括号。所有方案数均基于卡特兰数,不妨设。
2025-02-03 18:13:14
594
原创 【题解】CF1749F Distance to the Path
这条链上的点,也就是提示要用数据结构去维护。将单点数据的处理分为子树内与子树外两种情况进行分类讨论。对于在子树内的点,倘若是一段连续的区间,则可以利用数据结构一次更新完毕。的节点产生的影响被重复计算,直接进行容斥即可(需要减去的条件是距离超过。序,因此在查询答案时子树内的贡献即用差分的思想进行树状数组维护操作。,考虑将不等关系的信息存放在数组中,转换为最大距离。时每一个点产生的贡献。利用常数较小的树状数组,设。的点,此时不难分析出时间复杂度为。对于在子树外的点,显然都可以归结到。的节点产生影响,然后发现,
2025-01-15 20:00:00
909
原创 【题解 CF1650F】Vitaly and Advanced Useless Algorithms
有一个显然的贪心结论,就是先完成任务截止时间考前的,若在前面的都无法完成,那么后面的更加不可能完成。对于每个任务,需要用尽可能少地耗时完成尽可能多的百分比,每个计划的状态均为选或不选,这不就是。由于要输出方案,所以我们设二维状态,对于某个任务,设。则说明发生有效转移,记录此时的计划编号即可。,方案记录数组的初始化以及无解的判断。后将每个人物的方案汇总至总的方案数组即可。,其中有一个是继承上一次的状态。对于每个任务的方案记录,直接从。去记录会比较遍历,每一次。时的最小耗时,这里默认。个计划完成的百分率为。
2025-01-15 15:23:30
866
原创 【题解】P3176 [HAOI2015]数字串拆分
先处理函数fi,有fiji−m∑i−1fj,这个递推式显然可以通过矩阵乘法进行优化。设Fi表示通过递推函数fi得到的矩阵,则有以下矩阵的递推(以m5。
2025-01-14 10:00:00
1003
原创 题解【 [USACO22DEC] Circular Barn S】
现在将问题还原,对于某一格的数,如果是必败点,那么先手会尽量拖延时间,也就是说选择数使其能够经过尽可能多的轮数;,无论如何都是后手胜,所以为必败点。如果这时候你不知道如何去分析,可以尝试打出必败点的表(猜测必败点并不多),对于一个。,下同)开始判断,找到尽可能大的质数符合质数加上必败点的形式;那么以此类推,可知必败点为。为偶数,无论是必胜还是必败点,每次都只会取。与另一个比它小的必败点的形式,那么这个。,判断其是必胜点还是必败点即可。为必胜点,否则为必败点。其实这很好理解,由于。为最小的必败点,那么对于。
2025-01-13 17:00:00
1498
原创 【题解】CF575B Bribes
由题可知这是一棵树,因此求每一条边经过的次数可以通过树上差分解决。而现在只有部分(有向)边需要花费,因此就需要找到一种能够记录单向花费的信息。考虑到一条边连接的两个点因在树上而深度不同,所以可以分为叶子指向父节点与父节点指向叶子两种边。形象化地,第一种可以称为上行边,第二种称为下行边。首先通过树上差分,将信息分别储存在上行边的起点与下行边的中点。和差分数组还原每一条边经过的次数。最后统计答案,对于一条。需要花费的边,若是上行边,那么通过的次数记录在。
2025-01-11 15:00:00
786
原创 题解【CF59E Shortest Path】
同时该路径可以更新,那么加入队列中去并记录下前驱节点(用于路径的输出)。来记录同一个值的不同三元组,这样空间便可大大降低,可以通过此题。于是尝试用哈希来优化空间。大体思路相同,而这次用。本题对选择恰当的工具存储三元组有着较高的要求。进行广度优先搜索,记录一个点。虽然能过样例,可是……点的同时遍历后继节点。
2025-01-11 12:00:00
647
原创 【题解】CF509C Sums of Digits
在编写代码的时候,分类三种构造的函数。第一种是无条件限制,直接贪心填入。第二种是弱依赖,即需要补充多的部分的第一种情况。第三种便是需要较大改动的第二种情况,其中按照贪心进行填入的部分直接调用第一个函数即可。,往高位的方向均不变,往低位的方向重新排列。当然,往低位的方向的排列方式直接按照贪心的思路即可。如果全部遍历完也未出现可以填的,那么只能新开一位并填上。相较于前一个数,只需要把多的部分。按照贪心的思想去填入即可。的形式是最优的,即还原出的数形如。,然后剩下的按照贪心的思路即可。的位置,尝试将该位加。
2025-01-11 10:00:00
782
原创 题解:P9778 [HUSTFC 2023] 基因编辑
也就是说目前算法存在重复计算。考虑一个贪心的思想,若一个较长的子串中存在所需串,则只将标记打在较长串上而不是其中的较短的所需串,显然这样标记严格覆盖的。那么,结合差分的思想,设。在统计答案的时候,从长的串到短的串进行累积即可。但是问题并没有完全解决,手模第一个样例发现,的乘积,不难想到对前缀和后缀分别建立。将题意进行简单的转换,枚举。,然后再枚举其中的断点。因此只需要求出前缀为。
2025-01-10 18:00:00
449
原创 题解:P10701 [SNCPC2024] 致命公司
依次考虑子弹所在通道所需的凝视时间。对于第二个难点,只需再用一个数组记录通道已用的凝视的时间即可。那么对于第一个难点,可以对子弹出现的时间进行排序,为了使得凝视不会产生后效性,我们按照时间进行。题目的难点显然是如何分配凝视的时间于不同的通道,以及如何在一次凝视时将通道内的子弹进行标记。特别地,当所有子弹都在同一个通道时,永远都不会受到伤害,特判即可。看完题目后盲猜二分答案()。
2025-01-10 15:00:00
715
原创 题解:P10865 [HBCPC2024] Genshin Impact Startup Forbidden III
同时,由于一个炸弹只能影响到五个格子,所以我们可以预处理出不超过。每一位分离后,修改炸弹影响到的那些位置,然后再重新获得。个有鱼的格子中受到炸弹影响后的状态为。时,在某处放入一个炸弹,我们可以将。个可能会放炸弹的位置。条鱼,而所有有鱼的格子不超过。时所需要的最小的炸弹的数量。因此可以列出转移方程。,所以我们可以写一个。最后的时间复杂度约为。
2025-01-10 12:00:00
904
原创 题解:P10864 [HBCPC2024] Genshin Impact Startup Forbidden II
开始搜索的棋子,每到达一个未被访问到的同色棋子的块,就加入到集合中;每到达一个未被访问到的空位,就把该连通块的气的数目加一。直接在落子后暴力搜索计算出相邻的棋子所在块的气,最后在计算落子位置所在块的气。模拟围棋的落子过程,然后根据围棋的气来计算每一步落子后被提子的个数。当然强调了,每一步的落子没有限制,也就有可能。
2025-01-10 09:00:00
344
原创 题解:CF2039C2 Shohag Loves XOR (Hard Version)
区间即可(当然,官方解答的做法更加简洁,但是没看懂)。区间未检测,但可以充分利用。这个性质,我们循环判断。
2025-01-09 19:00:00
471
原创 题解:CF2039C1 Shohag Loves XOR (Easy Version)
同时,由于最高位的不同,此时。时,才能满足题意,也就是说因子。在二进制下的最高位相同,所以。在二进制下的最高位不同。
2025-01-09 14:00:00
462
原创 题解:CF2039D Shohag Loves GCD
中,然后从最大的数开始,查找到第一个未出现在集合中的数即可退出循环。)为下标的数,预处理因数即可。在构造的时候,我们可以将所有以。此时与题目的条件不符合,故假设不成立。并且构造出的序列字典序最大。从给定集合中选数并构造序列。不妨从反面分析,考虑满足。时,只需要考虑序列以。的因数为下标的数放入。
2025-01-09 12:00:00
616
原创 题解:CF2039E Shohag Loves Inversions
均插入末尾,或者在末尾插入若干个以后再将。直接后缀和进行处理即可,时间复杂度。首先需要通过观察得出一个性质,当序列。以下均设当前的序列逆序对的数量为。类型的串,我们需要找到第一个。现在我们讨论整一个序列均为。插入其中,求最终长度为。插在中间的位置,会使得。综上所述,最后的答案就是。的序列时至少由长度为。一般化的,若在长度为。
2025-01-08 18:00:00
820
原创 CF2044H Hard Demon Problem
次即可,也就是再维护一个普通的二维前缀和后处理。,所以需要先对其做扩大倍数的处理后再将其相加。为系数,那么对于一组询问,可以得到以下。由于列的下标之差不为。对于每一行,相邻的两个数的下标差为。对于每一列,相邻的两个数的下标差为。将矩阵中的每一个数字都减去。不难想到对行和列分别做。
2025-01-08 16:00:00
652
原创 题解:CF2053F Earnest Matrix Complement
于是可以用有区间加,单点加,单点取最大值,最后维护区间最大值的数据结构实现。这里用两个懒标记的线段树去实现,每一次标记下传的时候,加法的懒标记直接累加,而最大值的懒标记需要先作加法后再取最值。,显然只会填一种数字,因此可以得出一种比较朴素的 DP。无关的量可以直接用线段树区间加处理,与。相关的直接单点加(每一行最多只需要。数组可以预处理获得,于是就得到了。进一步观察这个方程,发现方程中与。
2025-01-08 13:00:00
521
原创 题解:CF2057D Gifts Order
由于转移的方程式仍然满足矩阵的结合律,因此用线段树单点修改就可以维护矩阵。但需要注意的是,矩阵不满足交换律,因此需要注意。既然已经写成了可以迭代的形式,那么就可以改写成矩阵去维护。当然,这里的矩阵乘法需要被重载为相加取最大值的形式。首先需要想通的一个点就是最值一定出现在端点处,否则区间长度变化而极差不变,会导致答案更劣。为了更好的为 DDP 做准备,可以通过增加负号的方式改写转移方程,使得均变为取。的值只依赖于前一项,因此我们可以滚动数组优化空间,最后时间复杂度为。,则单组数据的时间复杂度为。
2025-01-08 12:00:00
723
原创 题解:[ABC387E] Digit Sum Divisible 2
较小的时候难以构造出上述条件,直接跑暴力即可。因此大致的方向就是去构造。可以尝试通过构造解决此题。整除是各个数位上和为。的一个数来满足条件。
2025-01-08 11:47:24
888
原创 ICPC 小白勇闯南京
【2024.11.2−2024.11.32024.11.2-2024.11.32024.11.2−2024.11.3】下午翘课,VP 了 202220222022 年南京的区域赛。但是大家打得并不是非常认真,最后只过了 555 题。开局签到,但是我读题加写题花了 202020 分钟。看来还是我英语水平不够的问题,好在没有罚时。队友开了一道比签到稍微难点的题,但是卡在背包的正确性上了。我读题后提出先排序然后前部分背包后部分贪心的写法,然后大胆尝试,一发通过。然后是数学题,直接丢给队友,他们俩讨论了一下,差不多
2025-01-08 10:00:00
1186
原创 你真的懂 Floyd 吗
那么,Floyd 最终直接删去那一维,这样做不会出错吗?【Q2】若每次修改一条边的权值,有必要重新完整的去做一遍 Floyd 算法吗?这样我们的转移就变得简单,重载后直接通过矩阵快速幂即可解决问题。根据边权排序,然后答案显然就是某一条边的值。因此我们证明了空间优化的该算法的正确性。与此同时,从动态规划的角度出发,“为什么。的路径,则其传递闭包的关系图上就应有从。,按照之前的三维转移方程,可以得到。,不会再发生变化,并查集维护即可。条边的时候,比其小的边均置为。具体来说,对于一个点,拆成。
2025-01-08 00:00:30
1124
原创 树的拓扑序
为根,此时每颗子树内的相对顺序是确定的,只需要考虑子树间的相对顺序。而现在需要求以任意一点为根时的答案,故考虑换根 dp。注意到转移方程可以前缀和优化,所以最后的时间复杂度是。子树内的节点放入的方案数,后者直接套结论。的相对顺序先固定形成一个整体后,再考虑。内的顺序,在统计答案的时候再作更新。的做法在 CF 上会挂。内存在其余子树,为了方便转移,方程中。的其余子树在整一拓扑序中的位置,以及。为根时该子树的合法拓扑序的数量,首先考虑二叉树的情况。,暴力逆元维护,时间复杂度。的其余子树的相对拓扑序。
2025-01-07 19:51:49
1307
原创 GCD 题集
gcd(x,y)\gcd (x,y)gcd(x,y)求两个数 x,y(x>y)x,y(x > y)x,y(x>y) 的最大公因数,辗转相除法即可。int gcd (int x,int y){return !y ? x : gcd (y,x % y);}lcm(x,y)\rm lcm(x,y)lcm(x,y)求两个数 x,y(x>y)x,y(x > y)x,y(x>y) 的最小公倍数,即求 xygcd(x,y)\dfrac{xy}{\gcd (x,y)
2025-01-07 19:51:09
999
原创 位思想例题
的和,那么对于这些和,对答案的贡献就是。因此从后往前遍历即可得到。表示在它之后的与其互补的数的和,因此我们对于按位考虑,对于第。表示与其互补的数的个数(此处。求所有有序对一直除以。直至为奇数后的值的和。需要发现一个性质,设。
2025-01-07 19:50:13
495
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人