自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NOIP前题目整理

目录dp计数类ds其他Tricks数形结合dp计数类ABC299F : 子序列自动机+dpds其他Tricks数形结合UVA11722

2023-11-06 20:10:13 4356

原创 [IOI2018] werewolf 狼人(Kruskal重构树 + 主席树)

这是个经典问题,我们首先可以拍成dfs序,然后映射过去,然后相当于是判断一个区间是否有。首先,我们肯定要建两棵Kruskal重构树的,然后判两棵子树是否有相同编号节点。内的数,直接主席树即可。

2024-10-14 12:23:43 373

原创 1007C步行(树上贡献统计)

考虑现在断一条边,连一条边。我们先不考虑断边,只连边。那么这是一个基环树,不在环上的贡献使容易算的。取左还是取右在链上显然满足单调性,直接树上倍增二分即可。对于这个环,我们要先找出它的。首先可以发现每条边的贡献为。

2024-10-07 16:46:01 872

原创 1007D. 航行(高消之把可以递推的丢到外面处理)

假如当前速度是0,我们想知道到下一次速度是0的系数。而在这个过程中,肯定是只往一个方向走的,所以转移不会成环,直接做即可。考虑我们现在高消的状态数太大,而我们实际上需要的只有。前面64分显然,搜个状态,然后转移就行,这不是重点。的状态,那它们之间能不能提前把关系推出来呢?

2024-10-07 16:08:19 288

原创 1007B逆序对(二维数点问题 窗口星星)

考场上想了各种扫描线,cdq,kdtree,可持久化,树套树都想不起这个套路是啥,这其实是一个经典的套路,,我们把这个覆盖区域变成一个矩形,那么就是求最多矩形覆盖的有多少,这个可以就是裸的二维数点了。而为了让它张成一个矩形,我们发现只需要维护前后的上升/下降序列作为关键点即可。显然这题是一个二维数点问题,我们要求在确定。而在此题,我们也就看每个。

2024-10-07 15:31:03 832

原创 1006C简单题(计数式子的组合意义 + dp式子联立)

这列出来的式子不是一样吗?注意,当我们转化为组合意义的时候,我们就可以不考虑计数的方法了,我们可以用dp了。提到外面,再重新剩下那坨式子的组合意义,此时红色蓝色已经没有意义了,相当于就是。很小,这启示我们并不是往矩阵来想,而是我们考虑把。个白球要染色,中间有一个绿球,绿球左边有。对于这个式子,我们可以从它的组合意义入手。然后就到了这题最巧妙的地方了。对于边界条件的处理,我们照样联立即可。染完后绿球左边每个白球有。的贡献,右边每个白球有。现在我们还有最后一个问题,我们直接回归原式,然后把。

2024-10-07 14:47:04 925

原创 最小数(欧拉定理)

进行一些简单处理,现在相当于变成了一个。考虑这个东西不好表示,我们可以用。

2024-09-29 14:08:10 542

原创 集合统计(拆mod关系式 + 欧拉函数)

这个形式就非常好看,代回原式后就是套路了。的贡献为它有多少个倍数在。

2024-09-25 13:46:46 553

原创 P4140 奇数国(欧拉函数)

等价于我们要求一个区间的积的欧拉函数,单点修改,每个数的最大质因子不超过281.求积是容易的,然后现在只要求每个因子是否出现。因为不超过60个因子,所以我们直接暴力即可。

2024-09-23 13:52:19 210

原创 欧拉函数 简单题

φn表示n以内和n互质的数的个数nφnn−1φpkpk−pk−1pkp−1φnabφabφaφb∑d∣n​φdnamm≥2aφm≡1modmmam−1≡1modm。

2024-09-20 13:22:47 831

原创 区间线性基

对于正常线性基,如果这个主元已经有别人填了,我们是直接异或后跳过的。而现在,我们显然是直接替换最优,直接swap即可。线性基是肯定要记的,但是哪些线性基是有用的呢?我们对于线性基的每个主元加一个。固定右端点后,相当于求一个后缀的最大值。我们可以对现在的线性基进行一些处理。,表示这个主元是哪个位置贡献的,那么只有。求一个区间的异或最大值。

2024-09-18 13:34:17 302

原创 杜教筛入门

互不相同,所以直接拿数组来存即可。我们计算时直接整除分块即可。,我们直接线性筛预处理。时可以达到最优复杂度。,剩下直接套式子就行了。杜教筛的难度就是构造。

2024-09-13 13:53:48 770 1

原创 [SDOI2010] 地精部落(简单dp)

之前是上升/下降的方案数,转移显然。个,上一个在剩余数里面排名为。一开始想错方向,小丑了。

2024-09-11 14:04:04 324

原创 [SCOI2014] 方伯伯的玉米田(dp+树状数组维护行列)

映射到二维平面上,考虑每次相当于是更新一条斜线,每个点等于其左下角矩阵的最大值+1。那很好做,我们直接对行列都维护拿树状数组维护即可。显然每次操作的区间一定是一个后缀。次的最长长度,转移显然。

2024-09-11 13:09:23 380

原创 BZOJ3688. 折线统计(dp+ds)

段线段,之前一直在上/下的方案数,转移显然。,同时查询其他前后缀的和,那直接树状数组即可。然后前面一维我们遍历。

2024-09-10 13:35:38 402

原创 P2605 [ZJOI2010] 基站选址(线段树优化dp)

因此我们现在需要一个区间加和区间查询最小的东西。现在是对于任意一颗线段树,若。,如果里面建了基站就搞定,建不了就需要。排序,然后我们直接开。

2024-09-09 13:50:25 730

原创 [NOI1998] 免费的馅饼(三维偏序转二维偏序)

此时是一个三维偏序问题,我们可以直接cdq。绝对值的套路就是拆掉。

2024-09-05 18:41:16 626

原创 BZOJ2959 长跑(LCT维护边双后缩点)

此时我们可以用LCT来维护,正常的连边显然,当要缩点时就把这点链提取出来,然后把整棵splay遍历一遍,搞一起即可。显然,一个边双内的点可以全部在一起,也就是可以缩成一个点。要拿个并查集维护实际对应点。

2024-09-05 18:03:17 225

原创 P4842 城市旅行(拆贡献 + LCT)

那我们现在就不管LCT了,就单纯想用一棵二叉查找树怎么维护。分母是好搞的,分子我们要想点办法。表示左子树中每个值乘以左边界的可选数量,我们现在再乘上右子树的大小就成功了。的问题,但这个东西看起来很复杂,但其实我们只需要把转移系数仔细算算就出来了。发现题目就是要维护一个LCT,然后我们只要把pushup写成功了就行。一个要注意的地方是,整体reverse的时候要交换。考虑右子树对左子树的贡献,我们假设处理出一个。那么pushup就很好写了,现在就是整棵树加。

2024-09-04 18:24:51 364

原创 [NOI2014] 魔法森林(LCT维护MST)

假如如果一直是森林那么是好做的,直接LCT即可。如果加入一条边后有环,我们可以尝试把环上最大一条边删掉。实现的时候,我们可以把边换成点,然后把链提取出来,在平衡树内删掉最大点即可。排序加边,我们只需要维护。

2024-09-03 17:56:48 302

原创 P2147 [SDOI2008] 洞穴勘测(LCT)

需要push_down的地方:Splay和要在路径上走的时候。第一次学LCT,梳理一下。

2024-09-02 18:03:39 577

原创 8.29T3 嘉心糖(很稠密的二分图匹配、最大团、偏序传递闭包、最长反链、最小链覆盖、拆点二分图匹配、网络流、模拟网络流)

因此如果我们visit成功,那么未visit的点个数-1,如果visit失败,说明我们肯定通过了原图上的一条边(也就是补图上不存在的边)。我们考虑模拟匈牙利算法的过程,只不过我们把dfs换成bfs,队列维护左部点。我们现在就是要快速在右部点中找出未vis,且当前点存在出边的点。由于补图满足偏序关系,等价于求它的最长反链,也就是最小链覆盖。首先对于每个点补图中不存在的出边(也就是原图中的边)排序。个未匹配,因此此时我们左部为匹配的点的个数是。条边的图的最大团,等价于求补图的最大独立集。,而最终答案也最多有。

2024-08-29 19:14:33 942

原创 8.29T2 国际象棋(构造:棋盘拆分成小方阵)

最后如果余1或余2就很前面或左边的合并一下即可。更厉害的是,其他方阵至少有1条边长为4,而手玩一下边长为4的方阵是无敌的!这种拆分方式好像分成了一个个方阵,而方阵之间是独立的!暴力显然,因为肯定是从奇点到偶点,所以二分图匹配一下就好。更厉害的是,只有右下角会有1个0,其他都没有0。是不是看起来没有什么规律?

2024-08-29 19:01:05 329

原创 8.26 T4 日记和编辑器(fhq维护kmp——kmp本身含有的单射与可合并性)

而这个东西是非常好pushup的!我们直接按照左、中、右的顺序就行了。(也就是kmp匹配到的位置),我们是可以直接预处理得到出来的。前4个操作拿fhq treap是很好维护的。如果我们知道一个串进入的指针。

2024-08-27 20:45:40 525

原创 8.26 T3日记和二叉搜索树(背包 + bitset优化 + 分治)

但是bitset开太大也会死掉,所以你可以手动分治。很容易转化为对于一个节点的儿子们要尽量平均分。然后这个背包又可以经典bitset优化。

2024-08-27 19:31:05 130

原创 8.27 T2 炫酷原神(dp+矩阵快速幂+ddp)

然而这样子会被卡常,然后你思考一下发现因为你开了26棵线段树,有些地方是完全没用被用掉的,你可以把线段树改成动态开点即可。,像这种每次修改一个字符的题我们肯定是想ddp的,但是目前状态太大,我们考虑能不能搞掉一个26。我们重新思考回题目,对于每个字母,只关心这个位置的字母是不是自己,所以肯定是独立的。而当我们把这份程序写好,然后整理一下,我们可以发现一个事实:每个字母的转移时独立。的处理是个经典套路,直接丢状态里就行,因为我们并不涉及期望的高次运算。这个dp的转移时显然的,这样子复杂度是。

2024-08-27 18:39:04 503

原创 8.26 T2 日记和欧拉函数(欧拉函数)

的话相当于求小于它的质数。预处理直接暴力做,求。我们预处理中间的就行。

2024-08-26 22:35:28 297

原创 8.26T1 日记和最短路(二分 哈希 倍增)

题解做法也有可取的,把一个串拆成一堆小字符,实现起来方便很多。比较两个字符串常见方法是二分加hash。题解做法复杂度是错的,hack掉了。

2024-08-26 22:33:02 254

原创 8.22 万灵药(SAM + Trie + 树剖 + 线段树)

具体的,当前SAM节点在trie树上的父亲必然是某个走到当前节点的节点。我们建一个SAM,把这两个前缀找出来,他们的公共后缀集合为这两个点在fail树上的公共祖先。对于trie树,我们要查询一个点到根路径上所有值的权值,并对这条路径所有点的权值±1。的,但是这里有一个重要的性质,就是我们发现SAM节点和trie树节点是一一对应的。后面维护理论上要拿zkw或者树状数组才行,但我线段树冲过去了,复杂度是双log的。接下来我们要统计这些串的前缀,首先肯定要拿一个trie来维护。我们现在要实现的功能是什么?

2024-08-22 21:53:33 425

原创 8.22 T4 (吉司机线段树)伤痕累累的心,在暴雨中仍然放声歌唱

要维护每个东西右边第一个比它大的东西,而且要维护还是相对坐标,考虑这个东西加入会有什么影响?上面三个东西直接拿吉司机维护即可。为左右第一个比它大的数的坐标。考虑一个数的贡献区间为。,再reverse一下。

2024-08-22 15:43:21 503

原创 8.22 T3 escape from whk 3(2次幂相关)

所以对于一个整个蓝色短,我们直接等差数列求和必然就是其贡献。如果按照这样子,我们可以发现选出来的数肯定长成这个样子。性质1:我们从大到小,能选就选,肯定最优。的时候,可以直接考虑蓝色短的贡献。这个可以递归,也可以直接dp实现。考虑统计全局,假设我们现在求。对于一个蓝色格子,它会在所有。区间,我们有什么策略?

2024-08-22 14:07:34 795

原创 8.21T1 草莓蛋糕(拆max + 权值线段树)

权值线段树要提前离散化一下,就不用动态开点了。但是叶子节点有很多信息,怎么维护?我们直接拿权值线段树实现就行。直接multiset即可!我们就应该想到拆max。

2024-08-21 21:21:44 353

原创 8.21 T2 矩阵补全(FWT)

同理,在对应的位置上我们实行对应的操作。也就是把FWT的每一层弄成。怎么做,这是个裸的FWT,FWT后弄个快速幂就行。,在0的位我们就要保持原样不能动。

2024-08-21 21:14:30 892

原创 8.20T3 无损加密(线性代数转LGV+状压dp+高维前缀和)

当走到最近的出度后,他们还可以往下走,此时我们可以拿一个类似高维前缀和的东西来实现。而这里,我们要按顺序,先走最上面,再往下一个一个考虑,那样子才能保证路径不交。这个神秘的线性代数形式比较难处理,但我们可以考虑其组合意义。而对于 [l,r] 内的情况,我们相当于在原先基础上多了一个不断往右增。现在我们已经理清条件,考虑构造图了。最后我们把黄色点的东西去掉,就可以转移到新。我们可以先钦定哪些入度有流,从上一步的。然后我们直接让这些流先走到最近的出度。,但很多情况会直接停止,所以跑不满。,其实我们状压一下。

2024-08-21 08:04:46 968

原创 8.20T2 黑色大桥(函数处理、李超线段树)

如果只有前面的一次函数,我们直接李超就行。但是后面还有两个二次函数,怎么处理呢?但有个问题,我们如果区间加一次函数,复杂度容易炸,我们考虑是否能全局加。但是第3段区间会有问题,我们的处理方式也很简单,我们留到。,我们成功把二次项提到了外面,里面就可以愉快李超了。的时候再加入第三段区间就行。拿3棵李超维护即可。

2024-08-20 16:44:38 862

原创 8.20T1 星图(拆贡献+dp+暴力卷积)

http://cplusoj.com/d/senior/p/NODSX2301A给定 nnn 个实数的取值范围,求其笛卡尔树节点深度总和的期望。场上搞了一大轮区间dp,结果大方向就错了。拆贡献,考虑 jjj 对 iii 是否有贡献。若 jjj 对 iii 有贡献,则 jjj 是 iii 的祖先,此时贡献为1。所以我们只需要计算 jjj 是 iii 祖先的概率即可。考虑 jjj 为 iii 祖先的充要条件是什么,这点也是我考场没有想到的。如果这点想到了,很容易去往拆贡献那个方向想。不妨令 j&

2024-08-20 16:32:16 719

原创 FHQ-Treap学习笔记

这题要维护的东西很多,但多开几个数组,写多一下pushup和pushdown就行。但在pushup或者访问的时候一定要先把儿子pushdown了。使用时就是把一段区间给split出来,然后打tag,然后再merge起来。每次模拟拿出对应的那个东西,然后接到头或尾。因为是按顺序给,所以我们只需要维护最右边一条链,split直接按size决定往左还是往右,通过引用来不断完善两棵树。注意,在这个过程中,要时刻pushup和pushdown。对于merge,我们把优先级小的作为根,然后递归下去。

2024-08-14 22:24:45 382

原创 Splay学习笔记

Splay的两个关键函数,rotate和splayrotate就是正常的旋转。splay(x,target)表示把x旋转为target的子节点这里需要分讨,对于x的父亲y和祖父z对于每一个操作,只要访问一个点,都要splay一次。而且要更新访问的最下面的点。同时对结构改变时要考虑会不会搞到0号点。

2024-08-14 11:33:27 226

原创 24pht春6

神秘的我是在21年做的,过于久远,不想追踪显然一个人第一步向右,最后一步向下。另一个人第一步向下,最后一步向右假设可以求随便走的方案。然后减去相遇的方案。假设相遇,在第一次相遇的时候交互这两个东西再减去终点相遇的情况。

2024-05-22 17:24:13 1067

原创 24pht春5

pht春5A相当于规定了每一位的操作次数的奇偶性。随便排序显然不影响。因此有 fi=fi−1×in+fi+1×n−inf_i=f_{i-1}\times \dfrac i n+f_{i+1}\times \dfrac{n-i}nfi​=fi−1​×ni​+fi+1​×nn−i​,是个经典问题,差分一下?设 fif_ifi​ 表示当前 iii 个正面到 nnn 个操作次数的期望。递推边界 fn=0f_n=0fn​=0fi=infi−1+n−infi+1f_i=\dfrac i n f_{i-1

2024-05-15 17:45:00 856

空空如也

空空如也

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

TA关注的人

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