- 博客(19)
- 收藏
- 关注
原创 Codeforces Round 1034 (Div. 3) G题题解记录
其可能会影响的只有左边和右边两个数。所以只需要判断修改前后大小关系,更新。所以,对于是否可以组成非递减序列,我们只需要判断跳跃次数。,使得得到的新的数组呈现非递减排列(不实际改变,只询问)。以此类推,根据跳跃次数,在跳跃次数相同的时候,如果。的大小关系来判断,更新的时候更新所有因数。从0次跳跃开始,最多可以跳跃多少次?,那么在先前保证贪心策略下,:查询:是否能够针对每一个。大致题意:给定一个正整数。必须进行一次跳跃才能保证。我们预处理出所有可能作为。所有可以变化的数为一个。可以变化的最小的数就是。
2025-07-10 22:59:00
466
原创 Codeforces Round 1019 (Div. 2) C题题解记录
而对于一个数组,其中位数小于等于k,要求数组中小于等于k的数的个数要大于等于其中大于k的数的个数。,必须至少有两个中位数本身就是小于等于k的。,右边界是确定的,那么我们可以预处理出来。如果存在的话,那就说明可以分割。要使得三个中位数的中位数。.最简单的,左半部分和右半部分。三者中至少任意两者大于等于0。.后半部分和中间部分,类似于。那么基于此,我们可以构建。.左半部分和中间部分。如果三种情况都不满足,就是。,我们只需要知道是否存在。我们构造一个新的数组。
2025-06-30 18:00:39
708
原创 Codeforces Round 1026 (Div. 2) D题题解记录
进行一次松弛操作,v会被加入队列,然后v会重新遍历周围边。从一号点开始,每个点都有一定数量的电池。号点的时候,可以拥有的最小数量的电池。然后就tle于33case。个电池的情况下可以通过这条边。,可以取走一部分,对于每条边有边权。可以直接考虑二分,直接考虑在上限为。的情况下是不是可以走到终点。也算是为了警醒自己吧。给定一个DAG并且保证。
2025-06-25 19:40:42
858
原创 Educational Codeforces Round 166 (Rated for Div. 2) D题题解记录
对往后所有的右端点都是不合法的左端点,我们可以直接把这个端点给删了。最后保留的都是合法的区间。:我们把左括号当成+1,右括号当成-1。的个数,使得翻转此区间内的括号以后,整体仍然合法有效。大致题意:给定一个合法有效的括号序列,现在找出。为0的时候,整体才合法有效。考虑将其作为右端点。我们还必须保证:其中的最大的。并且,为了保证翻转以后。不能出现负值并且只有当。
2025-06-25 17:07:40
591
原创 Educational Codeforces Round 167 (Rated for Div. 2) D题题解记录
然后我们考虑,对于当前拥有。不同种类的锭之间互相独立,我们可以分开计算。选择的武器一定是性价比最高的,即。而每次铸造和融化都会分别获得一点经验值。问最多能获得多少经验值。那么我们考虑能不能针对所有锭数直接预处理出满足此条件的。块锭的情况下,最多可以获得多少经验值,那么。块锭的情况下,最多可以获得多少经验值。,我们一直可以选择性价比最高的,直到。,我们可以进一步直接推出来当前有。种武器,每种武器可以花费同种锭。块同种类型的锭,我们要找到一个。块锭的情况下,性价比最高的花费。,使用预处理的数据得到。
2025-05-15 11:49:27
612
原创 Educational Codeforces Round 168 (Rated for Div. 2) D题题解记录
如果一棵子树包含的所有节点(除了子树的根)均为正数,我们可以进行如下操作:使得子树的根权值+1,子树中所有节点-1。每次操作之后,节点值需为非负。现求在不限次数操作的条件下根节点的最大权值可以为多少。对于2号节点,如果本身权值就大于等于x,那么对于其子树中的所有节点,仍然只需要要求加x;如果权值小于x,那么还需要针对2号节点操作使得其权值变成等于x,操作。考虑一棵树,假设我们要在根节点1加上x,那么对于子树中所有的节点都要求加x。而新操作的次数又会要求子树中的节点权值再次下降。一定是合法的,其次,如果。
2025-05-15 10:46:05
1729
原创 Codeforces Round 1024 (Div. 2) D题题解记录
如果AC所在的位置(奇数位置或者偶数位置)逆序对数量为奇数个导致了A>C,那么考虑字典序的话,我们一定可以交换最后四个数使其变成CDAB。在此情况下,1要往前跳三个奇数位,同时为了保持偶数位置相对次序不变,最后的2和3的次序发生了改变。合并以后,对于最后四个数,如果倒数第四个数大于倒数第二个数,那么我们不用考虑倒数第一个和倒数第三个数的大小关系,进行一次操作使得倒数第四个数小于倒数第二个数。然后发现样例都过不了。首先分别处理奇数位置和偶数位置的逆序对的个数,如果有偶数个逆序对,那么最后形成的一定是。
2025-05-13 09:39:53
613
原创 Educational Codeforces Round 170 (Rated for Div. 2) D题题解记录
那么我们可以考虑用差分数组来代替原先的加法,而对于第一种情况,把差分数组的信息暴力传给。考虑优化:我们发现,多数操作花在了第二种和第三种情况中的加法。为截至目前为止遇到的总的分配点数。我们首先可以想到一个很朴素的。现在询问,在某种分配策略情况下,最多可以通过多少检查。的前提下,通过的最多的检查数。,那么可以选择一种属性,使其值加1,如果。但是这样的时间复杂度比较高。,那么会有一次检查,如果。数组更新以后再转移方程。两种属性,给定一个数组。的信息传给当前状态下的。
2025-05-11 14:09:00
935
原创 Educational Codeforces Round 172 (Rated for Div. 2) D题题解记录
如果先前的区间的左端点都小于等于当前的区间的左端点,那么我我们只需要找到先前区间中大于等于当前区间右端点的最小右端点。这种规则排序,对于所有已经检查过的区间,记录下他们的右区间。对于当前查询的区间,我们可以通过二分来找到离当前右区间最近的大于等于右区间的位置。,按照同样的逻辑再处理一遍,就可以保证在所谓左区间(实际上是右区间)都囊括的前提下寻找最近的大于等于的右区间(实际上是原来的左区间)。其实左右区间有对称性,我们可以处理右区间的逻辑处理左区间。,都需要查询这样的信息:首先找到所有的区间构成集合。
2025-05-09 22:14:16
1992
原创 Codeforces Round 1023 (Div. 2) D题题解记录
每次操作去掉的点数一定是小于等于上次的。我们每次都可以去掉一条直径,然后对于剩下的连通分量中的树继续进行删直径操作,直到树空。要求:输出可能情况下字典序最大的三元组组成的序列。,要求这两点间简单路径经过的所有点的权重都为1,进行如下操作:记录此路径包含所有点的权重之和为。看到题目直观上想到,首先要保证每次选取的两个点一定是当前连通分量上一条直径的两端,由此保证。对于此题的时间复杂度吧,我觉着是n^2,但是为什么能过呢,我也不太清楚。,并且使得两点之间的简单路径所经过的点权重都变为0。
2025-05-06 23:56:58
692
原创 2025“钉耙编程”中国大学生算法设计春季联赛(4)1003-洞察
我们记录一下到当前位前面那一位为止全部顶格处理得到的数,这个数。再考虑前缀和的思想,计算出当前范围内有效个数。二进制表示中到前一位的数。然后对于当前位,我们取和。从二进制高位开始考虑,对于当前位,如果。返回原来的状态,并且按照顶格处理更新。,那么答案需要再加1。这一条件了,我们考虑直接计算贡献。取一样的,那么结果这一位就一定为。,那么只需继续顶格处理就行了。多次询问,每次给定正整数。先不管一次函数,我们假设。然后我们再考虑计算有效。对于属于这个区间内的。,找出有多少非负整数。一定是有上界的,假如。
2025-05-04 16:22:00
975
原创 2025“钉耙编程”中国大学生算法设计春季联赛(3)1001数列计数
注意此时如果是最后一位,代表全部顶格处理,此时可能数也要+1。j-1和j其实相同,但是为了避免是最后一位j-1越界,选j。了,在后面的位中,我们可以直接按照没有限制的情况处理,即直接。这一位只能取0并且当前仍然是顶格状态,也就是相当于。的第0位的情况而定。如果是1,可以取0或者1。这一位可以取0或者1,取0的话,由于已经小于。可取的数量,最后全部相乘就是答案。但是注意特殊情况:如果这是第0位,要视。处理,然后往下考虑。这一位只能取0,并且已经确定小于。的限制,我们从高位开始考虑。的限制,则此时有效的。
2025-05-01 17:31:22
656
原创 2025“钉耙编程”中国大学生算法设计春季联赛(1)——1004海浪
考虑第一种情况:奇数位置最大值大于偶数位置最小值(第二种情况只需要改一下条件就行),我们用两个单调队列分别存奇数位置的最大值和偶数位置的最小值。观察可得:海浪要求当前区间内奇数位置最大值大于偶数位置最小值,或者奇数位置最小值大于偶数位置最大值。如果是偶数,判断它是否大于当前区间内奇数的最大值,如果不满足说明当前位置已经不满足了,退出;,并将其加入单调队列。的时候,一定要记得清理单调队列中落后的信息。一定是单调不减的,那么我们就考虑二分,找到。的,所以左半部分的最大的答案就是查询。,其对应的最远的海浪位置。
2025-04-24 15:07:07
573
原创 2025“钉耙编程”中国大学生算法设计春季联赛(1)——1002船长
构建一颗二叉树,则二叉树的每个叶子节点都是一名选手,根为最终胜者,除此之外的节点为其两个子节点对决后胜利的节点,或者为轮空的节点自动晋级。来判断二者是否互为对手,但是用具体编号的话会无法判断是否轮空,于是选择在每一轮都更新节点编号,对于每一轮的编号。现在,假设染染与其他水手进行较量时总能获胜,而其他水手之间的胜负是等概率的(即每人获胜概率都是。报名那天,经过广泛的交流,染染得知,包括他自己在内,总共有。,表示染染本人和所有威胁他的水手的编号,,表示水手总数和威胁染染的水手数量,名参与竞选的水手的编号即为。
2025-04-22 11:37:38
888
1
原创 牛客寒假集训营第六场B题-好伙计猜拳
小火和小鸡在进行猜拳比赛,赢者加一分,平局和败者比分不变。比赛共进行了若干局,但比赛记录可能被篡改。比赛记录的第i条形如aibi,表示小鸡当前得分为ai,小火当前得分为bi,且初始得分均为0。现在给出一个比赛记录序列a1b1a2b2...anbn,但可能存在错误。为了恢复合法的记录,每一轮,你可以选择以下两种操作之一:删除一条记录,代价为c1。交换某条记录中的两人得分(即aibi。
2025-03-22 15:29:50
620
原创 2025牛客寒假算法基础集训营4 L题 XOR-Triangle 异或三角形题解。(二进制拆位算贡献相关题目)
如果这一位为0,那么我们需要找到同行的b中这一位为1的个数,反之找0的个数。考虑第i位的时候:假设竖着的为a1、a2…考虑二进制第i位:假设有n个数,其中x个数在第i位是1,n-x个数在第i位是0,那么。,即每次选取两个数异或的结果,最后加起来(当i=j的时候 结果为0,可以忽略)。最后结果为1的可能总共有x*(n-x)个,共贡献了x*(n-x)*2^i。故只需从第0位开始考虑到第30位,每次都遍历一遍数组,记录这一位1的个数。那么每次询问其实就是一个斜边为主对角线的等腰直角三角形,即图中的A部分。
2025-03-09 23:48:23
787
7
原创 Educational Codeforces Round 174 (Rated for Div. 2) C题题解记录
Educational Codeforces Round 174 (Rated for Div. 2)
2025-03-05 23:10:53
2249
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人