自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 div2 996个人补题题解(A~D)

最开始的时候,肯定是让最左边的稻草人到达乌鸦的位置驱使着乌鸦移动,对于乌鸦移动到的位置。的值,操作可行的本质是这所有值中最小的两个值加起来大于等于0。秒的时间内移动到乌鸦上一次传送后的落脚点,这时候不花费时间(仍然为时间。个稻草人成为了前方驱使乌鸦移动的稻草人,这时候不花费时间(仍然为时间。我们可以预处理每行每列的总和,可以发现,无论怎么走,来填补这个空缺,然后能确保下一步存在类似的空缺,依次类推补齐即可。的时候 ,由于方程数小于未知量数,所以没有唯一解,因此可以设。的时候 ,若想等式成立,则。

2026-03-09 03:32:14 353

原创 第二章——排列与组合 读书总结

谈到集合的组合时候,可以抽象化为如下:有个元素的集合,现在从其中选取个元素,一共有多少种选法?我们设为其方案数,那么显而易见 ,。对于,我们这样子考虑,不妨从排序的角度来入手,排序一共有 2 步:(1) 、从集合中选个元素。(2) 、这个元素进行排序。操作 (1) 本质上就是集合的组合,然后操作 (2) 以及总方案数本质上就是排序,所以有如下公式:代换一下就可以写成。

2026-03-06 14:32:02 384

原创 div2 1082(A~E)

可以容易得知,左边所有符合(2)情况的序列必然是可以的,而这些情况的特征都是右括号是子序列的最后一个值,我们需要继续考虑所有最后一个字符的左括号的序列,也可以发现,前面符合上述特征的序列都可以这样子扩展。对于(2),我们需要知道一些信息,就是需要知道右括号放到前面之后仍然满足合法的序列数量,这些序列有一个特征:最左边的左括号的前面子串左括号数量严格多于右括号数量,如果没有左括号其必然可以满足。(2)、如果两张牌的元素一样或者都是第一次出现的元素,其贡献是最少的1。这里从每个元素的贡献来讨论,从。

2026-03-03 23:32:51 254

原创 div2 1081(A~E)

对于(1)而言,只需要加上该子节点的价值和其他节点原本的价值即可,所以需要存储每个节点没有进行操作后的价值以及进行操作之后的最大价值。可以发现,我们需要求的是子树的最大代价,而最大代价和子树的每个节点所在的层数及其节点的值有关,那么如何去考虑去求呢?然后就需要考虑都是偶数的情况下如何找到交换思路了,我们可以从图论的层面来考虑,对于每一个。节点的相邻子节点进行切断是最优解,然后放到其他节点最高的那个边上面。观察可得,当最开始1的个数为偶数个或者0的个数为偶数个的时候就可以。的子节点进行交换后的最大价值。

2026-03-01 18:47:19 779

原创 第一章——什么是组合数学 读书总结

组合数学是研究离散构造的存在、计数、分析和优化等问题的一门学科,其验证一般采用数学归纳法等方法,由于这是读后总结,所以不想在历史发展等与学习组合数学无关的内容上进行过多赘述,下面是几个例子,我自己根据书上内容用我自己的方式做了一下笔记。

2026-02-17 22:05:55 906

原创 div2 1069补题笔记

我们从枚举最大值这一块出发,可以发现,我们其实不需要处理每一个朋友的时候,都枚举一遍最大值,只需要处理第一次出现的最大值即可。然后状态转移的话朴素就是先处理每一个朋友,对于每一个朋友先枚举当前可能的最大值,然后考虑花费总和,最后再从比最大值小的值来转移,以此来更新。具体转移的话,对于每一个待处理的最大值,可以先遍历总和,然后再遍历可以转移的量直接转移即可。简单模拟即可,可以发现答案为数组中的某个数,从时间复杂度的角度分析看不会超时。贪心模拟即可,尽可能的把小的先排前面,然后排的时候不破坏整体字符串即可。

2026-02-11 16:39:29 311

原创 div2 1064补题笔记(A~E)

思路:看看字符串和最后一个字符不同的字符数有多少个即为答案,代码略。

2026-02-05 11:21:18 890

原创 div3 970个人笔记

最近身体不适,所以训练上比较缺乏动力,下面是vp这场的一个个人笔记。

2026-01-24 23:03:10 643

原创 div3 1059补题笔记

的形式,这种情况就特判处理一下(因为这种情况正好无法填充),剩余情况就按照上述方法填充。,也就是回文串最前面的两个字符和最后面的两个字符各形成的组必须是对称的。同时进行操作1、2才行,所以我的想法基本上就是操作1、2绑起来进行。进行操作1、2的任何一种操作我感觉得不出直观的规律,必须对区间。这道题我感觉有很多种思路,先分享一下我自己的,虽然没有题解好。我们肯定就是在当前数组的末尾填充,因此,我们不妨维护。假设两个不同的数前后规定为一个组,对于。是最坏的情况,那么我们最多有。的位置,最后答案就是。

2026-01-04 00:03:57 740 1

原创 div2 1052 个人补题笔记

的情况,如果没有出现即可说明这种方案是成立的,我们只需要有。统计每个数出现的个数,然后排一下序,设出现次数定为。先按二进制拆分,然后我们要找满足如下条件的最大的。至于之后2900的F,感觉目前能力达不到,就不补了。我们看少了一组方案的元素后,对于任意一个元素。,然后我们把每一组的元素都存起来,设。,我们要想让 其能二分找到,就要确保。,我们可以从大到小枚举,对于每个形如。按从大到小排序,我们的答案 即是。,我们需要维护,去找每一个可能的。是不满足要求的,所以要把这时候的。对于可能构造的方案,首先,所有。

2025-11-13 14:53:03 717

原创 cf div2 1061个人补题笔记

我们可以考虑一件事情,最终美丽数的大小由锁定的几个数来决定,其中真正做贡献的只有2个数字,因此,其实锁的操作只需要进行4步即可确定答案(因为经过4步操作后 总能 让 美丽数达到Alex的预期,后续的操作其实不影响最终结果),建边,最终构成一张图,保证这张图删除一个节点后还存在一个度为2以上的节点。对于这道题而言,直接从数组出发其实是不好考虑的,我们不妨从最终的答案。的复杂度,很明显是会超时的,其实我们根据4步操作这个性质就操作。,模拟过程即可,如果不存在 直接输出 对应的。的下标中,分别进行查询,若是。

2025-11-04 20:40:26 675

原创 2024ICPC昆明个人vp赛后补题笔记(正在更新)

我们若想要消灭敌方所有单位,就要尽可能的多引爆,因为无论如何操作,攻击次数的最大值是固定的(除非你进行无意义的操作浪费次数,比如对于。就是引爆,我们一定要尽可能干掉敌方血少的,然后引爆,看 有限的。,然后转移到上面Alice先手的情况,这种情况下当且仅当Alice先手的时候能使。,其实如何攻击我们并不需要知道,我们只需要最后能不能把敌方全干掉,因此这。,然后转移到Alice进行操作。时候,我们可以发现,无论是Bob操作还是Alice操作,都能使。中选一个最大的,确保无论如何移动,总能包含1个点,,即。

2025-10-30 20:07:40 1164

原创 edu div2 183个人笔记(目前只补到D,后续可能会更新)

看0、1的操作数有多少个,让左右两边铺满-,然后看中间,中间+的数量如果和2的数量一样,说明都能铺满,中间都变成-,否则把?从从左到右第一个+向右铺,从右到左第一个+向左铺。很简单的取余数,代码略。

2025-10-11 10:18:43 298

原创 div1+2 1055 个人笔记(可能后续会更新)

ABCD,E之后可能会补题

2025-10-06 15:28:14 245

原创 第一次训练赛题解

这场比赛挂了几道牛客上的题目,比赛地址:https://www.nowcoder.com/acm/contest/118815。【邀请码:nuc2025】或者也可以直接利用前缀和思想,我们可以很容易知道区间【1,n】中有多少个数满足2的倍数,且【l,r】=【1,r】-【1,l-1】。然后我们想要变成双生数组,就需要分别对cnt1、cnt2找到其中出现次数最多的相加,然后len-最多次数即为答案。开2个数组cnt1和cnt2,分别存储 字符串前一半或者后一半 每个小写字母出现的次数。

2025-10-02 17:09:05 370

原创 div3 1054个人笔记

区间长度为【l,r】的满足要求区间个数 = 区间长度最长为r的满足要求区间个数 - 区间长度最长为l-1的满足要求区间个数。这道题我感觉有很多种思路,由于赛时我没调出来,所以就多学一学(太不应该了,居然赛时卡住了,这不对),列了2种写法。首先,包含k个不同元素的区间个数=包含最多k个不同元素的区间个数-包含最多k-1个不同元素的区间个数。我们肯定得把0变成1,这样就操作0的个数次,然后如果有奇数个1,就把-1变成1,这样操作数再+2。很明显,我们的长度d是固定的,因此我们要尽可能让这m+1段均衡一点。

2025-10-01 15:53:53 500 1

原创 div3 954 个人笔记+思考

暴力枚举,由于n很小,所以我们可以把每一位都看成两个数连接起来,然后有个思路,如果有0的话就一直乘,没有0就遵循遇到1就乘,否则就加的原则。对于那些要换的下标,我们只能换,记录多个不同的下标,按下标从小到大的顺序把可交换的字母按从小到大的顺序依次放置即可。AC代码:(我感觉这个算法还是很少见的,为了帮助理解,让AI添加了一些注释)因为最中间那个点到中间那个点的距离为0,到两边点的距离和又是最小的。根据题意,对于符合要求的格子,将其变成周围所有格子中最大的那个即可。

2025-09-21 23:51:45 390

原创 div2 1048个人笔记(参考了各种优秀的思路)

看a和b的质因子分解,我们乘x的目标就是让他们共有的质因子相同,因此我们可以先把a、b公有的部分提取出来,看a、b提取完后有没有剩下的质因子即可。我们可以确定一个点,就是知道一个状态,我们很容易推出来这个状态上一个状态是什么,因为上一个状态相对于这个状态而言是固定的,因此我们倒着处理即可。很明显,按从大到小排序,然后依次收集m天、m-1天......1天即可。我们知道了最后的状态,然后我们想知道如何从开始到达最后的状态的过程。至于F题,等日后有实力了再补(贪多嚼不烂)

2025-09-11 17:30:59 365 1

原创 div2 1021笔记

若是第k+1天的结果不固定,那么他可以先固定住第k+2天的情况,然后穷举第k+1天的情况,这样在 第k+1天预测的时候,他就能把 第k+2天的情况固定住。若预测第k天的人数为1个人,若是第k+1天的结果固定,那么他可以排除第k+2天的一种可能,从而让第k+1天的预测就只有2种情况(因为第k+2天只要另一种可能,第k+3天有2种可能)。根据上面的规律,就可以推出来,只要 存在预测第l天有2个人及其以上,预测第r天有2个人及其以上,且预测[l+1,r-1]这几天都有1个人及其以上,那么就是可以的。

2025-09-04 16:16:35 967

原创 个人题解 div3 995

div3 995的个人向题解,希望对你有所帮助

2025-09-03 17:38:19 683

原创 div3 693个人笔记

这是一个非常经典的思维,对于糖果而言,若想能平分,那么总和必须得是个偶数,然后假设一半糖果是 x,若x是偶数,显然易见,必然存在方案能满足,若x是奇数,那么必须存在一个1,那么才能满足,特批即可。具体对于每一个位置i,由于i+a[i]必然是增大的趋势,那么我们从后往前处理的时候i+a[i]必然已经会处理,然后对于i这个位置的得分而言,其就是 a[i]+(i+a[i]这个位置的得分)。根据条件,我们容易知道,1是能到达任何一个顶点的,我们先计算出1到达各个顶点的距离,然后从1出发逐渐遍历每个点。

2025-08-17 13:18:17 631

原创 div3 760

看下标为奇数的gcd x 和下标为偶数的gcd y,如果下标为奇数的数都不能整除y那么结果就是y,如果下标为偶数的数都不能整除x那么结果就是x,否则都不能解决。把x、y的二进制拆分成 a、b两个数组,看a、a的翻转是否是 b、b的翻转的子串,且b除了子串部分全为1(只有全为1的情况下x才可能变成y)这是这场唯一一道2200难度的题,难度还是有的,而且考的算法恰好是我不太擅长的,所以赛后我就好好补了补。其实很明显这样的操作其实是无用的,因为我们要确保自己的值更大,就不能有以小换大的操作。

2025-08-06 19:34:20 367

原创 div3 702个人题解(可能代码不是最优的)

开一个cnt数组存储每一个数出现的次数,用sum存储各个出现次数的数量(比如 1 1 2 2 3 3 ,1、2、3各出现了2次,2这个次数出现了3次,所以这个时候 cnt【1】=cnt【2】=cnt【3】=2,sum【2】= 3)。先用map存储一下 1到 1e4的三次,然后对于每一个x,让i从1到1e4遍历,看 x-i*i*i是否存在即可。离散化存储出现的次数和sum值,然后用cost【i】存储 把 出现 i 次的数全移除的成本。用数组存储 余数为 0、1、2的数的个数,然后暴力调整数的分布即可。

2025-07-26 18:06:51 410

原创 div2 1026题解

这道题的思路是构造一个二分图,然后从二分图中度数为奇数的一个点开始进行遍历(如果没有奇数度的点,就任选一个偶数度的点),遍历到另一端后继续这个操作。然后看这个组成的数组和边界r差多少,最后只要后面的差值都合适 把当成 0看待的 -1 从0 变成1即可。这道题的图是有向图,而且是节点小的向节点大的跑,不得不说还是挺特别的。思路挺简单的,二分答案+循环即可(但我没想出来,又是悲伤的一天)的数量相同,然后在前面取走一个左括号,后面取走一个右括号即可。先把 0 和 1 知道的先组成一个数组,-1先把其当成0看待。

2025-07-25 23:18:22 343

原创 edu div2 181的赛后个人小题解

个人思路,用 dp【r】来维护 【1,r】的概率状态,设dp【r】.first 为【1,r】中出现一次的概率,dp【r】.second 为【1,r】中不出现的概率(注意,是这一整条不出现的概率,不止是这一条)。先算出来a和b的最大公因数,设其为r,然后 看 a/r+b/r 是否小于等于k,若是满足就是1,否则就是2。对于【l,r】的推导,那么就只要从【1,l-1】转移一下即可,推导和上述类似。看【l,r】之间有多少个数,能被2、3、5、7整除的,具体计算看容斥原理。把T放前面,剩下的放后面即可。

2025-07-23 14:52:12 277 2

原创 div2 1000 的赛后个人补题(未更新完,毕竟2000+有强度)

我们只能从【1,l-1】和【r+1,n】两个区间选择一个来进行交换,这样才能保证结果最优(如果两个区间都选择,那么其中任意一个区间必然会对另一个区间和【l,r】的交换造成干扰)若是有2个度数最大的点,那么最后的思路肯定是删除这两个度数最大的点,但若是有两个度数以上的点,那么就不能随便删除,要删除两个不相邻的度数最大的点,这样才能符合要求。对于1而言,其为【1,1】,对于其他数而言,就是【i,i+1】,因此,当l=r=1时候答案为1,其他情况都为r-l。

2025-07-21 19:27:06 374

原创 整数分块(基础版)

蒟蒻的整数分块

2025-07-14 14:42:17 533

原创 div3 1013题解

思路:贪心的想法,先排个序,然后按从大往小 的顺序依次组队伍,如果满足就说明 这个队伍是合格的,就开始下一个队伍的组建,如果不满足就让这个数加入这个队伍来让 数的个数大一点。题意+思路:就是从左到右,只要能凑够 01 03 2025 这几个数字,就输出最小的位置,如果没有就输出0,送分题,但由于我当时没读懂题,还是浪费了一些时间。找规律写即可,一个规律就是 让 1 到 n-1 往后挪,1挪1次,2挪2次,以此类推,然后对于n,就放到原位置即可(当然,这是我的idea)二分答案,然后按最优策略安排即可。

2025-06-25 18:20:34 840

原创 动态规划-树形DP

一个算法萌新的树形DP

2025-03-23 21:35:52 1239 2

原创 动态规划-线性DP

1、数字三角形:问题描述:给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。输入描述:第一行包含整数n, 表示数字三角形的层数。接下来 n 行,每行包含若干整数,其中第 ii 行表示数字三角形第 i 层包含的整数。输出描述:输出一个整数,表示最大的路径数字和。分析:思路:关于一个位置上的数字嘛,从上往下看的话其实只有两种选择。

2025-01-31 16:38:15 1162 1

原创 动态规划-背包问题

递推代码(暴力做法):

2024-04-02 17:54:06 1779 7

空空如也

空空如也

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

TA关注的人

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