自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Atto Round 1 (Codeforces Round 1041, Div. 1 + Div. 2) C、D、E

而对于一组数,我们先进行调整,我们默认a存的是晓得那组,那么我们就可以发现,每组数都可以形成一个区间,而当两个区间相交的时候,这两个区间无论怎么变化都没办法增大答案,那么这一定是Ali的首选,相反如果没有区间相交,我们就去找区间相隔距离最短的长度之后ans就是这个长度乘二+原来的答案就行了。如果而且对于一个非叶子节点,我们会散射出一些点,那么这些点当且只当父亲节点为根时,最多只能有两个非叶子节点的子节点,除此之外,都最多只能有一个叶子节点(靠边放),剩下的叶子节点就直接阶乘就行了。

2025-08-09 16:08:01 347

原创 2025 “钉耙编程”中国大学生算法设计暑期联赛(6)

而却我们发现对于原序列中的每个递增序列dp[j]-j是不升的,所以我们转移i的时候,相当于会从他之前每个递增序列的尾部转移,从而保证了正确性。剩下我们对于k<m时,我们可以预处理出每行取的状态的最大值,最后答案其实就是不超过k个区间合并的区间的最大值。不难发现如果pos[i]>pos[i-1]时,dp[i]=dp[i-1]至于从其他地方转移,dp[i]=min(dp[i],dp[j]+i-j)设dp[i]表示数字i不动,形成1,2,3.......i的最小步数。首先,k>=m时,只要选出每列最大元素即可。

2025-08-06 19:19:22 356

原创 2025 “钉耙编程”中国大学生算法设计暑期联赛(5)补题

本文介绍了两个算法问题的解决方案。第一个是T1004四角洲行动的背包问题,通过将物品拆分为11和12两种规格进行贪心处理,再使用动态规划求解最优解。第二个是T1008双端魔咒的字符串匹配问题,利用AC自动机处理前后缀匹配,通过预处理和统计有效前后缀组合来优化计算。两个方案都展示了如何通过合理拆解问题和数据结构优化来提高算法效率。

2025-08-02 23:33:39 427

原创 Codeforces Round 1040 (Div. 2) C/D

题解:可以观察到如果成环的话,其实对第一部分是没有贡献的,于是乎,直接拒绝成环,这里我们可以用并查集来处理,如果发现新加入的边的在一个子集里,直接跳过就好了,反之,对于有贡献的序列,我们把左右端点直接压入集合即可。我们如果按数从小到大处理,我们不难发现,不管后续的数变不变,都不会再形成由当前数参与组成的新逆序对,于是乎我们只需要每个参与的数的贡献都取最小值即可。大意:给你一堆区间,请你找到一个子集,要求子集区间覆盖的长度-区间成环数量(同一个环,起点不同算两个环,而且要求环上最少包含三个区间)

2025-08-01 09:37:35 489 5

原创 2025“钉耙编程”中国大学生算法设计暑期联赛(4)咖啡的罪恶

另外就是当他改为0的时候,首先因为特殊序列存在,要更改其前3位以及其本位,之后因为0在普通序列有两种位置,因此我们需要找到序列中在这个0两个非零位点并修改位点本身与位置-2(不要担心有没有必要多修改几个也无妨)而对于序列的处理时,我们只需要将非0点的坐标直接插入一个飞天大set中,这样我们访问的时候可以以坐标为媒介,更方便的处理出序列中0个个数,只需要在set中查询其余非零位置即可。然后是1位置,先是本身与前两位的修改,再根据普通序列的特性找到1之前的非0位,然后update(pos-2)

2025-07-29 22:21:58 374

原创 2025“钉耙编程”中国大学生算法设计暑期联赛(3)

本文总结了ACM竞赛中的若干算法题解,包括光线折射、三带一、线段染色、树形DP等问题的解题思路和代码实现。主要内容为: 光线折射问题:通过分析反射次数和路径规律,利用组合数学和模运算计算光线强度衰减。 三带一问题:采用二分查找确定最优解,通过边界处理确保每组牌数量的合理分配。 线段染色问题:使用动态规划处理大规模数据,维护前缀和优化转移过程。 树形DP问题:通过状态转移方程计算子树断边后的连通块性质,合并子树信息求解最终答案。 核心共振问题:利用切比雪夫距离转换,通过排序和前后缀和快速计算点对间的绝对值和。

2025-07-27 12:54:44 743

原创 2025“钉耙编程”中国大学生算法设计暑期联赛(2) 1007 1009 1012

其实直接dfs即可,因为我们发现跨越的宽度只能有1或者是2,因为如果跨越3的话中间那个数取的话得到的子集范围可表示的数必然>=不取,这样的话我们队第一个数与第二个数进行dfs找子集每次跨越+2/+3因为n只有50所以复杂度完全能接受,拿到子集后我们把这些数放到线性基中,然后找最大值即可(马后炮:这题真应该出吧谔谔)于是乎我们发现c[i][k+1]来自c[i+1][k]、c[i][k]来自c[i+1][k] 而最后减去的那一项与x无关是常数项所以存到c[i][0]中。现在讲讲正解(也不是很难)

2025-07-24 10:59:36 416

原创 Order Capital Round 1 (Codeforces Round 1038, Div. 1 + Div. 2) C、D

如果是一维的那就好办了,直接排序然后首尾元素相配对,直接贪心即可,但要注意这里是二维空间我们不妨将上述想法移用一下 A.左上 B.左下 C.右上 D.右下。采用dp思路:dp[t,x],表示时间t时候到x点需要停留的最短时间,这里外层枚举时间内层更新转移dp即可。可得正好配对的方案:先对x排序,再分别对前半段与后半段的y进行排序,再进行配对即可。

2025-07-20 12:39:32 358

原创 2025“钉耙编程”中国大学生算法设计暑期联赛(1)

首先我们可以知道所有的区域极大值点都无法到达,所以这些区域都需要设置传送锚点,之后就是建边,而区域高度涉及的权值参数远大于横轴数轴坐标 权值,因为 x 和 y 的范围一定在 [1, 100] 有 919810 > (11400 + 514100)。(不符合:就是出问题的子串其所有有问题的位置都不进行幻视),并且我们可知,有问题的状态所属的祖籍,也一定是有问题的,这里我们使用 SOSDP,可在。这里其实不难发现如果如果一个子序列的一个中间段满足题设,则其扩展出的序列也会满足题设,,反之如果大于则赋值为。

2025-07-19 21:06:32 579

原创 吉林省CCPC与全国邀请赛(东北地区赛)游记

day 2后第二天队内又开了一场小会,队友觉得队内训练不足,但我觉得是我们在赛时的对问题的处理过于糙了,而且day 2的赛时进程相较于day 1其实交流上少了许多,导致了有队友单开题被反杀没人能补伤害的局面,再加上一共3天奔波,大家确实累了,赛内的一些内容以及突发的状况(身体不适,选择开题错误以及开题人员选择错误等等)都没有处理好导致了队伍失利,身为队长这是我的失职。

2025-05-27 21:22:40 943

原创 同余最短路

方法:最短路->我们只需要找到一个基准数x,那么,这n个数所组成的数字对x取模的值只能在。同余最短路作用:可以得到n个不一定个数的数在一定范围内组成的数的数量。之间,所以,对于任意模数。

2024-10-10 10:38:59 313

原创 最大流笔记

每确定一条边时,同时建立一天反方向的边以用来进行反悔操作(毕竟一次性找到正确方案的概率太低了)也是运用bfs进行找边,但统计答案时使用dfs,可大大降低时间复杂度。求两点间的路径中可在同一时间内通过的最大量。通过bfs找通路,找到后回溯;

2024-09-14 18:26:33 236

原创 YJ的2022CSP游记

发现Vs-Dev挂了,心态-=inf(幸好我会4个编译环境),先将T1,T2,的暴力在半个小时内划了出来,再去开T4,一个小时后发现读错题了,就心态有有点小蹦,就立马推出了,k=1的情况,拿了8分就跑路看T3,发现题好长,耐住性子读完后,理解+手玩样例又过了一个点,发现对于我的理解,样例是错的//此时我已经在考场上叫妈了。最后就是检查一下所有的代码的小bug。出考场后,发现是个人都比我高,我giao更难受了,晚上换了新酒店,房间小了点,但是电视的位置很舒服,回看了代码是否有问题,就看了一集仙王3就睡了。

2022-10-30 18:23:44 351

原创 P7961 [NOIP2021] 数列

但是优化一下,设dp数组dp[pos][num]表示搜索到第pos位,总和为num时的余下位的权值进行一下记忆化搜索,就可以水到50pts。此题看上去直接暴力dfs,你就可以拿到20pts。

2022-09-29 15:20:39 830 1

原创 P7960 [NOIP2021] 报数

思路其实很简单,就是类似于埃式筛,将1e7内的符合条件的数全部筛出来即可,同时记录一个nxt数组即可。

2022-09-28 21:39:14 222

原创 9.20模拟/2022CSP初赛游记

这几天心情异常平静,但这段时间是最应该斗志昂扬的时候,加油,龑钧。今天终于AK了,虽然今天有点水,但好似已经有好几个月没有AK了。前两天回顾了卷子,发现手残选错了10多分//////////初赛比赛时有点小崩56分///////

2022-09-20 22:39:10 210

原创 YBTOJ 「动态规划」第6章 单调队列全解

设dpi为第i个位置必须删掉,能得到的最小减少量,那么答案就是dp[n+1]每一个子串用KMP跑一遍,记录一下每一个位置之前的最近的违禁单词起始位置。和的最小值,运用两次单调队列找到区间内的上一个位置的最小值即可。那么用单调队列维护维护的范围也有了,那么就直接开干就行了!还是二分,单调队列维护的是区间最小值,最后判断的时候要从。很明显的单调队列维护:维护符合范围的dp最大值,直接用。时,只有k时在一直变化的,所以,我们可以单调队列维护。在不断变化,于是可以想到找区间内的最小的。首先时很明显的二分,设。

2022-09-15 15:45:18 1057

原创 20220913模拟

T3:读完题,心情--,头疼感++,感觉bfs可以做,但相当麻烦,还不想摆,就硬着头皮直接敲,于是就寄的离谱,正解用的是dijkstra,有点小蒙(这不就是bfs典型题吗),仔细看后发现dijkstrs优化了多,而且这种算法也支持动态建边/😓。LZB,你是否清醒 ,下次继续努力吧!实际:100+100+0=200 寄。,反正十几分钟就切了。期望:100+100+0;T1:裸的欧拉函数,直接秒。

2022-09-13 22:32:35 177

原创 9.8 模拟

写在最后:这次没挂分,但是不理想,csp与noip马上就要来了,感觉这两个月的水平已经有了质的飞跃(奆佬勿喷),但是还有很大的提升空间,最近得更加抓紧时间,多做题多总结,不辜负自己,总之就像今天的T2,明明可以做到更好,但为什么不呢?T2很容易根据lca思想想到直接去遍历树,并看每一条路径中恶少边的数量与国有边的差值,如果小于0,提出来放到一个集合里处理,but这知识蒟蒻考场上的30分做法,正解用的是deque(其实更好的利用了dfs的性质)可以遍历树的时候直接动态处理点。期望 100+30+10。

2022-09-08 23:45:45 143

原创 9.6模拟

T2:找n个区间中第k小的数,我应该大意了,写了个优先队列优化,算了个时间复杂度为nlogn,但是我忽略了还有一个为2000000000的常数,就T挂了60分。挂分最主要原因:又开define int long long 数组开大十倍不止,总之各种地方的卡常,正解:二分第k大的数,找分别去判断是否合理即可时间复杂度nlog(maxn-minn+1)最近新题单就要建好了,赶紧去刷,感觉最近刷题有点不细(不要总用邪教水题,会被ban)期望:100+100+100。实际:100+56+40(悲。

2022-09-06 23:15:25 200

原创 9.2模拟

做题过程:拿到题看完T1很有感觉但感觉暴力不好敲,就看T2发现T2也只会暴力,索性直接开T3,觉得就是一个spfa板子,之后开了T4,写了一个n^2的暴力dp但不会优化,就去开T1,发现T1的实质就是算为一位1的个数为奇数的方案数,30分钟切掉,最后看T2,感觉会30的暴力,本想用平衡树来维护集合的,但是我对自己的平衡树基本功并不自信于是用了小根堆优化,4个点就这样过去了。ans+=tot-cnt[p1]-cnt[p2]+cnt[p1*p2]..........发现系数为莫比乌斯函数,

2022-09-04 10:35:08 244

原创 YBTOJ 树形dp

Link我们用0/10/10/1表示一个点的选与不选那么f[i][1]=f[i][1]+f[to][0]f[i][1]=f[i][1]+f[to][0]f[i][1]=f[i][1]+f[to][0], f[i][0]=f[i][0]+max(f[to][1],f[to][0])f[i][0]=f[i][0]+max(f[to][1],f[to][0])f[i][0]=f[i][0]+max(f[to][1],f[to][0])动态方程就出来了这一板块昨晚,就就发现一个树形dp的共同点:通过dfs对

2022-08-29 21:07:48 220

原创 YBTOJ LCA全集

思路:首先应该生成最小生成树,生成时标记一下,再去遍历未被标记的边,这些边的共性就是出现时间晚,并且长度较大,当我们决定使用这条边时这两个点一定会形成一个环,依据贪心原理,我们因该替换掉两点路径中第一个小于加入边的边,不是最大边!思路比较好想:因为会有重边,而且求的是最大可载重量,于是可以先跑一棵最大生成树,剩下的就是来维护两点之间的最小值,而最小值与上面的就全长有异曲同工之处,找到两点到lca的最小值。的边,显然这些边都要被修改,也就是找到一条边,这一条边所有的大于。,使俩端点的差分数组++,而。

2022-08-25 10:52:50 258

原创 YBTOJ 线段树全家桶

这两天可算是把线段树的题刷完了,感觉线段树更熟练了(😓板子题,甚至不涉及到pushdown,直接修改即可CodeB. 【例题2】区间查改板子plus 对于这里不用一个一个的去修改,,如果一个区间在修改范围内,不妨将直接将其区间总和加上 v×(r−l+1)v\times (r-l+1)v×(r−l+1) 同时记录一个懒标记,如果之后修改的区间在其之内就将其下放,大大节约修改时间CodeC. 【例题3】公园遛狗思路 计算区间最大连续子串和,我们对于一颗树需要维护有三个变量:区间最大子串和、

2022-08-23 20:28:46 300

原创 YBTOJ H. 4.超级钢琴

做开头,再找i+l-1~i+r-1的前缀和最大值(用RMQ解决),再将这些值压入堆中(思路:对于一个和弦的值,很容易想到用前缀和化,而我们要做的就是对于每一个位置。

2022-08-22 22:45:37 208

原创 YBTOJ C. 【例题3】不定方程

的约数,所以先算n以内的质数,再计算每个质数出现的次数,即可。

2022-08-21 07:40:50 197

原创 YBTOJ E. 【例题5】余数之和

的一定时,i是有范围的,在k/i!=0时,很容易得到i的最大值为。思路有点巧妙,其实可以。

2022-08-21 07:40:17 170

原创 YBTOJ E. 1.合法序列

找到两个当两个前缀和mod k值相等时 就证明这里有一个子序列(

2022-08-21 07:39:56 153

原创 YBTOJ B. 【例题2】质数距离

拿到数据后,其实不难发现我们不必要去处理所有的质数,我们只需要将R开根号后的数内的质数求出来然后再进行一遍埃式筛,就可以得到答案了!题面很简单,但当时怎么都做不出(又看题解,又看博客的,现在看好水)

2022-08-20 20:41:02 237

原创 YBTOJ C. 【例题3】与众不同

思路:首先应该想到dp,我们约定pre[i] 为i号位为结尾的数的起始位置,f[i]为i号位为结尾的最长序列长度,不难得到 pre[i]=max(pre[i-1],last[a[i]]+1) f[i]=i-pre[i]+1。因为上面的式子可以得到pre[i] 为一个单调不降序列,于是我们可以用二分来寻找分界点,那么第二种序列长度就为pos-l+1,下面就是处理第一种答案了,这里运用。对于一个访问区间有两种序列长度:1.整个序列被包含在区间内 2.整个序列被不完全包含在区间内。算法来加速区间最大值查询。

2022-08-20 20:25:35 360

原创 YBTOJ F. 【例题6】矩阵修改矩阵查询

写到这里鄙人的差分来搞树状数组区间问题也算是正式理解了 撒花花~~~~中学会了一种区间查改方法,就是。通过类比以为可以化简得到。这里很显然我们只需要维护。注意:访问的时候注意容斥。根据差分我们可以推得。对于区间修改,我们在。

2022-08-20 19:55:14 249

原创 YBTOJ C. 【例题3】严格上升子序列数

【代码】YBTOJ C. 【例题3】严格上升子序列数。

2022-08-20 12:13:42 179

原创 YBTOJ H. 4.火车载客

细节:1.对于数据需要先进行排序 2.先下后上 3.对于每一次处理,上车时需要对原数据的标记进行处理(有点抽象,看code。:每次如果车上有空的话,就尽量让最多的人上车,如果不空,就让后下车的部分人下车,换上早下车的人(小总结:思路不难想,但是实现有点烦人,借鉴了许多代码(((这里需要维护一个结束站点的大根堆。

2022-08-20 11:51:48 220

原创 YBTOJ F. 2.选数游戏

每一次根据贪心,每一次加入n个数,如果加入的数超过n个,那么就将最小的元素弹出n-1个(因为要保证1~x中每一列至少1个在队内。记录弹出数的最大值,好让空隙填补。思路:从左到右依次遍历。

2022-08-20 11:28:11 1041

原创 YBTOJ I. 5.宫室宝藏

难点:建图,如果每一行全是横门或每一列全为纵门那就需要O(n^2)来建图,直接炸。每一行的横门的集合为强连通分量,每一列的纵门的集合为强连通分量。思路:缩点+拓扑dp。

2022-08-20 10:28:55 236 1

原创 YBTOJ H. 4.软件安装

当一个超级源为根时的最大值。

2022-08-20 09:34:37 129

原创 YBTOJ G. 3.删点次数

g[x]=max(g[x],g[col[v]]),在比较时要加上自己本身——>ans=max(ans,g[x]+=scc)方法:先缩点形成一张DAG,让后再倒着寻找(设g[x]表示以x号颜色为结尾的最大链所包含的点。思路:很显然找最大链。

2022-08-20 08:36:56 159

原创 YBTOJ C. 【例题3】最大半连通子图

在一个有向无环图中的“半联通”就是一条链(因为一条链中的任意两个点都满足定义。毕竟强连通分量一定是半联通的,那么第一问而言就是找一天最大链。这样就生成了一个有向无环图~,而第二问就是找最大连的条数。注意:重新建边的时候需要去重。

2022-08-20 08:14:16 189

原创 BSGS/EXBSGS

于是我们可以分别遍历等式两边的取值,第一次相等时,即可求出最小值。=1(b=1时令x=0),现在要求你计算一个最小的非负整数。一定比p小,所以可以一直约到。注意:b除以na时需要求逆元。其实就是不保证a与p互质(是一个循环节,不难暴力~于是乎 我们还可以得到。...

2022-08-02 21:42:42 153

原创 卢卡斯定理

定理是用来求C(n,m)modp的值。其中n和m是非负整数,p是素数。一般用于m,n很大而p很小,或者n,m不大但大于怕、,这样用阶乘就解决不了问题。

2022-07-31 21:14:13 342

空空如也

空空如也

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

TA关注的人

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