自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 问答 (1)
  • 收藏
  • 关注

原创 The 2024 ICPC Asia Shenyang Regional Contest (The 3rd Universal Cup. Stage 19: Shenyang) - E

的步骤是一样的,那么我们可以这么抽象,把一种不同的地图状态看成二进制的某一位,把一些地图的组合看成是一个点,要求的是最小花费,我们可以用全。的地图作为起点,向外拓展可以到达的点,那么就可以使用最短路求解。,那么比如说对上面一行操作,那就是一张地图的二进制表示异或上。首先不同的地图最多只有16种了,每张地图可以组合的格式是。是题目给的一行,一列等等的操作,具体是把。的格子从左到右,从上到下设为。这个地图状态的最小花费 ,表示 当前有的地图集合是。,因为同一种地图变成全。操作时变成的状态集合。

2025-10-20 17:20:53 267

原创 2025牛客暑期多校第4场——G

考虑一个序列最中间的左括号和右括号,如果这两个交换那么序列是不合法的,由此可以猜测确定操作序列唯一确定的条件。利用一种抽象的前缀和,把左括号看成。的,那么操作序列就可以唯一确定,每次枚举左括号位置,计算合法方案数求和即可.为什么每个左括号都可以计算答案,因为一个合法序列的左括号都有一个右括号与之匹配。,对于一个左括号,如果和一个右括号中间的有一个前缀和是。

2025-07-26 17:20:06 168

原创 2025年北京市大学生程序设计竞赛暨“小米杯”全国邀请赛——D

题目大意:给定两个树S,T询问有多少点对(x,y) 在两棵树上的 LCA 相同。都不会产生贡献,因为他们的LCA 最高也只是我当前合并的那棵子树根节点。的儿子,考虑怎么计算,首先我们要预处理出每个节点为根在树状数组的范围(),然后我们把已经合并好的大集合都加到树状数组中,答案就加上。考虑在S树上进行树上启发式合并,大的集合叫。树的dfn序为下标维护树状数组, 对于。子树的深度最浅的节点(的那个集合的其它点和。的儿子),额外的加上。

2025-07-14 17:22:03 480

原创 2025 National Invitational of CCPC (Fujian)——F 2025福建邀请赛(福建省赛)

对于第二部分,我们可以采取扫描线的方式,把询问离线下来,处理完询问需要的区域之后再进行算答案,扫描线的方式很多,可以写树状数组维护差分,那么只要实现单点修改,单点查询即可或者线段树实现区间修改,单点查询。对于第一部分,我们可以线段树二分查询,维护区间最大值。数据范围从0开始,简单的处理办法是一开始就把所有数值加1。2) 对二维区域进行加一操作,询问二维平面上1个点的值。看成二维平面的点,那么 对于。产生的贡献,我们发现把询问。为关键字降序排序,对于每个。总得来说,思路就是先找到,,产生的贡献的区域就是。

2025-07-04 19:55:06 1148 1

原创 2025 National Invitational of CCPC (Fujian), The 12th Fujian Collegiate Programming Contest——C

一个经典的套路,二分答案+check,检查是否可行也是经典的转化,把符合条件的变成1,不符合条件的置0,现在问题就变成了一个01序列可以用中位数代替3个数,让0尽量消去,1尽量多。对于剩下的一般情况,我只要考虑最后是不是1的数量大于0的数量即可,因为最后的0只能单独出现,我们可以找到 101,011,110这种组合用1个1消掉一个0。对于连续存在的超过两个的0,任选其中3个0变成1个0,剩下一定是连续的两个0或者一个0.首先可以贪心的想到的是三个0变成一个0肯定是比别的好的。2025福建邀请赛C题。

2025-07-03 11:33:56 755

原创 2025 National Invitational of CCPC (Fujian), The 12th Fujian Collegiate Programming Contest——H

如果奇最短路和偶最短路都有,那么对奇最短路和偶最短路都尝试一下,答案取min。的奇偶性进行判定,这里我现根据奇偶最短路的情况,再根据。如果只有偶最短路的情况是同理的,可以自己推理或者看我代码。如何判定是否有解,这里需要通过。VP的时候写的,有点凌乱,见谅。首先特判掉图不连通的情况,

2025-07-02 18:27:35 1197

原创 2025 ICPC Nanchang Invitational and Jiangxi Provincial Collegiate Programming Contest——C

一副除去大小王的扑克牌,初始两人各拿五张,你知道自己的牌,可以换 掉其中的若干张牌并加注同等数量的筹码,最终总点数大的一方胜并赢得 全部筹码,问最大收益的期望。现在考虑如何求DP数组,开成这样的DP数组,需要积累的是一般都需要原地更新,意味着。,所以每一维都需要倒序计算,或者写一个副本,每次DP完swap。的期望,我们先把收益与概率相乘,再求和相加,故期望为。张,获胜的期望,终止状态肯定是我抽。无关,可提出到求和符号外,故。的方案数,那么总方案数就是。

2025-06-06 19:18:53 1048

原创 2025 ICPC Nanchang Invitational and Jiangxi Provincial Collegiate Programming Contest——L

做法 代码,本质上就是找离我左边最近的点和离我右边最近的点。

2025-06-04 19:18:49 236

原创 The 7th Guangxi Collegiate Programming Contest(第七届广西大学生程序设计竞赛)题解——ADHJKM

观察发现,层与层之间没有关系,手模样例发现,肯定是优先在我自己的子树内匹配掉最后,否则,两个节点会至少多走长度4,比较暴力的想法就是dfs,每次返回未匹配节点的深度和节点个数,在我当前子树内尝试将未匹配节点匹配,这样复杂度最坏。如何精准知道死亡时间呢,我们可以二分线段,看他是在哪死的,就可以了,不过有些细节,出现的那段的伤害和最后死亡的那段不一定吃满的,需要精确计算一下,其余只要前缀和计算一下即可。或者没有交点,那么我们可以对于每个时间节点排序,从上一个时间节点到当前节点的虫子我们可以求出,用。

2025-05-14 21:14:36 1071 1

原创 2024浙江省赛 J. Even or Odd Spanning Tree

路径上权值最大的一条边,替换它,更新答案(如果要求严格的话这一步可能求出来的和最小生成树一样,那就要维护次大边,替换次大边) ,为了保证是偶数,我们不妨分开维护奇数和偶数,分别维护。路径上奇数边权的最大和次大边,偶数边权的最大和次大边,那么每次尝试替换的时候,如果这条边是奇数,我就去查询最小生成树上偶数边权的最大和次大,偶数同理,那么本题即可解决.一道对次小生成树的考察,首先我们可以确定的是最小生成树肯定是其中一个答案,现在假设最小生成树的权值和。是奇数,那么我们只要求偶数的答案即可,最小的偶数权值和。

2025-05-02 17:06:26 742

原创 2024浙江省赛A Bingo

特别的,我们还有一些特殊的情况,通过某些进位,让很前面的数变成。套着数学外衣的字符串模拟题,首先,题目要求大于。的情况判掉,那么剩下的需要加上一些数构造。,一般的,我们发现其实只要数字最后的。首先我们会有一个上界,就是构造。变为大于等于,这样如果就是。,我们需要要让这些位都变成。大于不好处理,我们给它加。的高精度减法是可以接受的。加上我们需要额外加的数。的倍数或者数字中出现。的那个数也可以直接输出。的倍数,或者数字中有。然后我们考虑数字中构造。也有两种情况一种是那。,我们只要让他们变成。

2025-04-24 21:02:10 619

原创 2023 (ICPC) Jiangxi Provincial Contest ABCHIJKL

多练思维是真的有用的,K题没有想象中的那么难,我们发现交换只是让相邻两个数之间的差值换了个位置(自己手模一个算一下和旁边两个的差值即可发现),所以我们只要把差值排个序就做完了。是每件物品的体积,我们想让种类尽可能的多,那么肯定是从1开始,公差为1的等差数列的体积是最优的,那么可以求出体积最大是。跑多重背包,用二进制优化即可通过本体,更优秀的,我们可以用bitset优化转移,可以跑的更快。正难则反,考虑小于等于的个数不好考虑,我们可以用总数减去大于的情况。签到,感觉有点诈骗,修改其实只和两端的有关,询问。

2025-04-16 23:31:49 987

原创 2022 CCPC Henan Provincial Collegiate Programming Contest K 复合函数

将第二个条件转化成实际意义就是,两个点都需要通过移动进入环内并且,二者在环内的路径之差是环长的倍数,也就是最终会落在同一点,了解完需要的条件后我们需要计算答案,对于第二种条件,我们只关心能否走进环,并且路径差是环长倍数。至此,所有的步骤已经清楚,我们先进行连边,同时建立反图,在正图上跑拓扑排序,找出所有环,对每个环进行深搜,求出所有环外点的深度,求出每个环长的深度数组并求前缀和,回答每个询问即可。连边,这一步转化应该是比较容易想到的,通过手模样例,会有类似的灵感,那么。的点有多少, 深度小于等于。

2025-04-13 19:53:02 339

原创 2022 CCPC Henan Provincial Collegiate Programming Contest I

赛时磨了两个小时,模拟每一秒的变化就行了,模拟题要想清楚写这样思路比较清晰一些。

2025-04-10 20:39:10 242

原创 The 2024 CCPC National Invitational Contest (Changchun),第17届吉林省赛 C

是一个单位阵,所以可以直接拿掉,那么刚好和注意到的和前面的计算贡献的方法对应起来,那么按照题解说的固定前缀即可算出最终答案。题解是什么意思呢,首先我们需要知道的是,斐波那契数列可以用矩阵快速幂和矩阵乘法求解。题解横着放也是一样的,根绝题解给出的例子,手模一下发现是对的,如何去理解?我们通过打表可以验证其正确性,我们把那个题解的式子展开一下。再贴一份队友的代码,队友太会DP了。相乘结果都是A,所以可以理解为。让斐波那契数列往下递推一次。的求和答案怎么算出来的呢?和我上面写的矩阵相似,,也就是没有,二进制。

2025-04-09 21:21:33 1002

原创 2024 Jiangsu Collegiate Programming Contest H

记录一下为数不多的网络流。

2025-04-08 17:47:41 262

原创 The 18th Northeast Collegiate Programming Contest G

看网上好像不怎么找不到代码,发一份出来。

2025-03-14 16:07:16 254

原创 2024 CCPC Liaoning Provincial Contest K

引入一棵时间的线段树进行维护每个时间对应的区间的信息,即将加入和删除操作看成一段时间的加入,然后进行DFS,就可以。首先不考虑删除操作,那么插入元素这件事情就是DP(背包或者可达DP) 做的,设。,每次转移只与上一次的状态有关且转移的偏移量相同,那么可以用。不方便维护,这里我学到了一种技巧,为能否用S中的元素组合得到。引入删除操作,由于单纯的使用。对状态转移进行优化,,这样的时间复杂度是。

2025-03-13 20:25:23 1119

原创 2024 CCPC Liaoning Provincial Contest D

题目是说每次选择前面的所有未选择的点用最小的凸多边形覆盖,可是在二维平面平动和转动,问。,那么显然每次选择两个点更好,题目就变成了,n个点划分成若干线段,线段和。看似解析几何实则DP,

2025-03-13 11:18:47 916

原创 The 18th Northeast Collegiate Programming Contest H

节点,在这个节点到x之间,x走的步数都不超过mid.这样对于每一对点我们可以知道符合条件的节点是哪些,对这些节点取个交集即可,这里我采用了dfn序+差分求前缀和的方式。那就说明在x到LCA的路径内部就已经会走mid步,就是官方题解中的mid级子树内,否则我们找到距离y 的。至此,我们的check策略就清楚了,对于每一个点对,求出符合条件的节点范围取交集即可,时间复杂度。因为要让两个点的距离都尽可能的小,所以自然的选取两个节点的LCA会是第一直觉.随便选择一个点作为根都是可行的,否则,

2025-03-09 21:29:55 1135

原创 Codeforces Round 863 (Div. 3) E. Living Sequence

是一个一会儿单调递增,一会儿没有增量的一个函数,我与我们要找最小的符合上述方程的解。头一回用不是正解的方法做出来,也是比较极限,直接说做法就是。单调递增(并非严格) ,题目要找的其实是。这样一个解,我们去二分。

2025-02-02 20:48:48 450

原创 2024ICPC成都——B.Athlete Welcome Ceremony

那么显然a,b,c都是可以尝试分配的,这样设计f转移式比较好写,直接看代码即可。数量,一开始,只要刚好把问号数量分配完的方案才会有值,先把这个处理完就可以开始前缀和计算了。次询问,每次给定三个数x,y,z表示分别制作了x件a,y件b,z件c,问分配方案数。:前i个位置,分配了j个a,k个b,第i个位置是’a’+l的方案数。是每个人的衣服,相邻的人的衣服不可以相同,给定字符串,第。+三维前缀和的题,题目的n很小只有300,这就引导我们往。个人的衣服,如果是问号则是待分配,计算高维前缀和,我们要记录。

2024-11-19 21:10:09 1194

原创 2024HNCPC G - Utakotoba

直接贴码了,注释可能有误,欢迎指出。

2024-11-11 21:19:00 357

原创 2024湖南省赛 J. Beautiful Sequence

,那么只需要解决最后一个问题了,怎么找他最多能拓展到哪里?我们可以查询即将插入这个数位置的逆序对个数和顺序对个数,如果他在两个数组中的逆序对个数或者顺序对个数不一样那么就说明他们的相对位置是不同的,那么就是不可以插入的,这个可以用线段树做到,按照位置建线段树,因为插入的数是递增的所以找到的位置比他小的个数就是顺序对个数,找到的位置比他大的就是逆序对个数。首先发现的性质是如果是beautiful的话,他如果要继续拓展的话,只能是最小值-1 或者 最大值+1,那么我们可以固定最小值(

2024-10-22 20:26:42 1205

原创 2024江苏省赛E. Divide

一道主席树的题目,可以先最整个区间一直进行除以2的操作,问区间[l,r]操作后结果,其实就可以转化为求区间第k+1大的结果,反转一下就是求区间第。每次操作会把区间内最大值除以2,q次询问,问[l,r]操作k次后的结果是什么。小值,这样就是比较裸的主席树了,需要注意的是每次插入操作的时候,需要把数从。加入然后除以2,直到为0停止,至于版本的话就是索引。

2024-10-21 20:34:14 693

原创 [NOIP2016]天天爱跑步

哪些情况会对答案有贡献,必要条件显然得是,某一条路径的起点或者终点在以。序计算贡献比递归调用好写也不饶,但谁让我是犟种呢。,可以开两个桶解决,每次计算询问对应桶的值即可。路径会被计算两遍,如果是以x为起点和终点的。的路径对上面的节点是没有贡献的,要删除它们。那一时刻人刚好到那里才会让答案。为根的子树里面,然后还有刚好在。的话,要去重,记录一下以x为。条路径,人沿路径跑,只有在。左式和右式都只与自身有关.对于情况一,可以看成是与。对于情况二,显然要满足。也是学别人知道可以用。做的,考虑对于一个点。

2024-10-04 11:40:30 1111 1

原创 2024杭电多校7——1007创作乐曲

离散化的处理手法,因为我的线段树索引要从1开始用所以,离散化的时候用的是lower_bound(…)+1,对于左界来说这样没有问题,但是对于右界来说就有问题,如果我的右界不在离散化数组里,那么lower_bound(…)本身就相当于已经映射好的正确的离散化右界,+1会出错,这个画个图立得。首先询问最少删除多少音符(一般人来说不太好处理),我们可以考虑它的对立面,最多保留多少字符这是比较好处理的。.每次dp的时候用线段树查询即可,dp的时间复杂度为。值没有被更新,二者作用等价,如果更新了,那么用。

2024-09-25 19:57:51 689

原创 2024杭电多校3——1007单峰数列

我从没有看见过的全新版本,不过据说挺常见的。线段树维护题目里询问的东西,是否一样,单调还有单峰,小细节挺多的。建线段树开始是从2开始的,因为差分的第一个元素是。,更新只需要更新两个点即可,注意询问的区间范围,还有一点就是如果询问的区间长度是1的话直接特判掉。,同理,询问的时候也要是。

2024-08-14 16:43:51 666

原创 2024杭电多校2——1011在A里面找有C的B

解法很简单,没有什么好补充的,不过可以学习一下std的写法,构建fail树,再跑一遍dfs累积答案,这样的做法比较高效,不过我写kmp+ac自动机会TLE,估计可能是STL的锅,hash就快很多。

2024-08-14 14:21:58 333

原创 2024杭电多校4——1007 序列更新

取个倒数才是我们需要的形式,指数是i+1,所以相当于从1开始,所以。让它用第一种方式去更新,因为小的数更容易被更新,对于。(第二种方式),因为大的数更容易更新别的数。大概是因为两种维护方法都与b的第。一种比较玄学的优化方式,长知识了。

2024-08-11 17:46:37 606

原创 2024杭电多校6——1007树上MEX问题

1代表不选这棵子树,dp[v]是选择这棵子树的方案数,子树独立,所以乘起来即可。题目让我们求所有连通导出子图MEX之和,可能存在的答案有1,2…,也就是要求的答案,(如果不理解的话带个n进去,自己展开写一下就明白了)的情况,题解里给了方法,但是我不会实现,有会的佬教教我。至于题解里的联想我是不明白,我只能从结果说明二者等价。缩成一个点,那么这样看不就是求这个点的dp值吗。只用本身也是一个连通块,所以dp初值是1。有直接连边但不在集合里的点v,它们的。类似于求连通块的dp,相当于把集合。

2024-08-09 10:38:40 1246

原创 2024杭电多校06——1005交通管控

写代码途中遇到的问题,TLE,vector直接开60000就会T,要根据k来开,想要更快的话其实可以再读入的时候就开始操作(看std学的).取某一位三进制,进位退位这种操作有比较简单的写法,(写一堆内联函数就显得有点愚蠢->me)变化而来的, 所以其实本来的方程有二维,表示的是用到第几个操作杆,但是这一维可以不要,我没有开滚动数组,是另一种常见优化,存储上一轮的结果,用上一轮的结果进行转移,时间复杂度大概是。大意一个操作杆可以对k个红绿灯进行操作,操作杆上的一个字符对应一个红绿灯,操作包括+,-,0,

2024-08-06 19:22:49 1194

原创 2024杭电多校01——1003树

蒟蒻不太理解后面说的话,只能讲点自己会的,对于一个集合和一个加入的点,会有大于集合元素的贡献和小于集合元素的贡献(贡献就是f(u,v)要我们求和的东西),如何快速求出贡献,可以用三个树状数组去维护,t1代表小于等于x的元素个数,tx代表所有元素的和,txx代表大于x的元素平方和。小于等于x的元素个数存储在t1里,大于x的元素的平方和存储在txx里,要减去的部分全在tx里,这样就可以跑树上启发式合并了。杭电多校的题解好少啊,官方题解又看不懂QAQ。,这样通过上述式子就可以求出。每次合并答案的时候,

2024-07-31 19:28:12 406

原创 2024杭电多校3——1001深度自同构

然后想到了对每个数枚举倍数预处理因子的话计算的话,时间复杂度是。发现还是TLE,STL常数太大了,队友突然想到可以直接算。已经算过了,可以进行转移,另外特殊处理因子是。一开始和队友想出来的式子,太菜啦QAQ,少用STL。的dp显然是过不了的。

2024-07-26 17:19:30 612 3

原创 Bouquet-Codeforces Round 961 (Div. 2)B2

如果说当前还可以买的花(花瓣数为x+1)和已经买的x的花大于等于left,说明可以用x+1代替x把钱花完,所以答案就是m。easy版本我写了个长度为2的滑动窗口,限制条件有不超过m元,差值不为一,所以只要排个序,再写一个滑动窗口即可,时间复杂度。如果不可以的话,就替代min(g0,c[x+1]-g1),可能被替代的x和可以用来替代的x+1的最小值,答案取max。有m块钱,买花只能买花瓣数差值不超过1的花,有多少花瓣就花多少钱,问最多能买到多少花瓣。这么多,代表着有的花,和能买的花的最小值。

2024-07-24 14:29:03 749

原创 Mad MAD Sum-Codeforces Round 960 (Div. 2)

只有连续的数段可以向右传递,做一次虽然非递减,但是会有只有单个的情况这是不可以向右传递的。经过一次运算总可以得到非递减的序列,因为MAD函数非递减,最大值只会越来越大。进行上述操作,知道全变为0为止,对每次操作的数组进行求和,记为。我们可以再做一次计算去除这些数,剩下就是可以向右传递的。MAD函数返回出现次数。读错题目了好难受qaq。

2024-07-21 10:58:08 765

原创 Chat Screenshots-Codeforces Round 925 (Div. 3)

我们可以让相对位置连单向边,代表位置关系,如果有环就说明有冲突了,判环用拓扑排序即可。告诉除自己以外的相对位置,判断绝对位置是否有冲突。

2024-07-18 10:28:31 209

原创 Packmen

的算法,自然地可以猜测是二分答案+验证的套路,问题是验证的么验证,我们先记录每个豆子右边最近的人在什么位置,然后从左往右记录能移动的最大位置,对于豆子看是否可以有人在二分的时间内过来,有两种情况,一种是先向向左到豆子再尽量往右走,第二种是先向右走再向左走,取向右走位置的max。的地图有豆子和人,每个豆子每一秒可以往左或右移动一个单位长度,吃豆子不消耗时间,最短吃完所有豆子的时间。如果先遇到的是人直接向右走即可(因为是从左往右遍历的)

2024-07-15 11:52:46 440

原创 Happy Birthday! 2

所以8个数构成的子序列必定有相同的子序列,状态压缩枚举min(8,n)的状态,如果第二次碰到某个数则输出yes,并输出序列。找两个不同的序列使得他们在mod 200的意义下相等。

2024-07-15 10:21:53 213

原创 Minimal Height Tree

处理手法还算常见的贪心,记录上一层还没有孩子的节点和当前层有几个节点了,然后模拟就行(要想高度尽可能低,那么每一层最好都填满)给定一棵树的遍历顺序,一个节点的子树遍历顺序是递增的,问这棵树的最小高度是多少。

2024-07-11 15:12:20 188

空空如也

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

TA关注的人

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