- 博客(50)
- 收藏
- 关注
转载 [TJOI2015]弦论 题解(第k小子串)
题意:对于一个给定的长度为n的字符串,求出它的第k小子串。有参数t,t为0则表示不同位置的相同子串算作一个,t为1则表示不同位置的相同子串算作多个。题解:首先,因为t的原因,后缀数组较难实现,这里不讨论。使用后缀自动机:因为,这里需要按字典序考虑子串,所以要使用trs指针。首先,计算出每个子串的贡献:t=0则为1,t=1则为出现次数。然后,通过记搜算出匹配到每个点之后可以...
2019-10-01 21:59:00
591
转载 线段树分治总结
目录 类型一 例题1:八纵八横 代码: 例题2:时空旅行 代码: 类型二 首先,要求可以离线。线段树分治有两种。类型一操作基于区间,单点询问。有时,进行的一种操作可...
2019-09-30 22:02:00
443
转载 树形背包总结
目录 概念 一、基于dfs合并: 1、物品大小为1,没有限制: (伪)代码: 2、有物品大小: 3、物品大小为1,有k的限制。 (伪)代码: 复杂度证明: ...
2019-09-14 19:49:00
347
转载 [SDOI2017]苹果树 题解
首先,观察题意,可以发现在最长链下再接一个点,结果一定更优。也就是说,可以免费选一条最长链,之后正常选。我们枚举选的最长链,然后算出剩下部分的最优解。有4部分:1、链上每个点都选一个。2、链上剩下的部分。3、链的左面。4、链的右面。1可以直接计算。那么,我们需要先进行树形背包,然后再通过某方式将其余3个合并。我们知道,在此问题中,合并2个背包是\(O(k)\)的;但...
2019-09-13 22:08:00
331
转载 [NOI2019]序列 题解 (模拟费用流)
题意:有两个长度为n的序列,要求从每个序列中选k个,并且满足至少有l个位置都被选,问总和最大是多少。\(1\leq l\leq k\leq n\leq 2*10^5\)。首先,记录当前考虑到的位置i,第一个选的数量a, 第二个选的数量b,都被选的数量c,可以做到\(O(n^4)\),卡常后能过\(n\leq 150\),有40分。考虑正解:首先,看到这个范围,可以认为正解一定是...
2019-08-25 21:54:00
376
转载 余子式总结
行列式:gauss消元求。余子式:去掉一行一列后,剩下的矩阵的行列式组成的矩阵。代数余子式:余子式根据行列的奇偶性取相反数后的矩阵。行列式等于 各个位置乘以代数余子式之和。代数余子式的转置叫伴随矩阵。伴随矩阵等于逆矩阵乘以行列式。所以,一遍行列式,一遍逆矩阵,就能知道代数余子式。进而知道修改某一位置后的行列式,以及删除一行一列后剩下的矩阵的行列式。时间复杂度\(O(n^3...
2019-08-25 21:48:00
1236
转载 动态 DP 总结
目录 例题1:模拟赛题 代码: 例题2 例题3:带修改树上最大独立集。 代码: 注:部分参考 https://www.luogu.org/blog/gkxx-is-here/what-the-hell-is...
2019-08-24 21:43:00
177
转载 Pollard-Rho 总结
将一个大数\(N\)分解质因子。试除法,暴力枚举\(1~\sqrt{N}\)的数。时间复杂度:\(O(\sqrt{N})\)。通常,这个复杂度够了,但有时,\(N\leq10^{18}\)。这就需要Pollard-Rho了。首先,考虑一种简单情况。设\(N=p*q(p<q)\)。有一种糟糕的做法:随机法。随机一个\(1~\sqrt{N}\)的数x,判断能否整除。期望需要\...
2019-08-19 14:12:00
271
转载 [AH2017/HNOI2017]抛硬币 题解(扩展lucas总结)
推式子+exlucas。题意:小 A 和小 B 是一对好朋友,两个人同时抛 b 次硬币,如果小 A 的正面朝上的次数大于小 B 正面朝上的次数,则小 A 获胜。小 A 决定在小 B 没注意的时候作弊,悄悄地多抛几次硬币,当然,为了不让小 B 怀疑,他不会抛太多次。现在小 A 想问你,在多少种可能的情况下,他能够胜过小 B 呢?由于答案可能太大,所以你只需要输出答案在十进制表示下的...
2019-08-19 14:05:00
284
转载 [HNOI2015]开店 简要题解
主席树。推下式子,发现点的深度和好算,lca深度和不好算。lca深度之和有个套路:先给a到根路径+1,再算b到根的和。如果可以离线,即LNOI的LCA。本题强制在线,可持久化。由于区间修改,使用标记永久化。注意修改要复制全,关于和的修改有些细节:int xiugai(int i, int j, int l, int r, int L, int R) { if (R &...
2019-08-19 14:03:00
187
转载 trie上构建后缀数组
例题:往事太多,有时候忘了就忘了吧。如果有非记不可的,就只能用点附加手段啦!我们定义一棵往事树是一个 n 个点 n-1 条边的有向无环图,点编号为 1到 n,其中 1 号点被称为是根结点,除根结点以外,每个点都恰有一条出边(即以其作为起点的边)。每条边上有 1 个字符(这里我们实际上用一个不大于 300的非负整数代表不同的字符),对于任意一个点 u,u 的所有入边(即以其为终...
2019-08-18 11:05:00
198
转载 [CQOI2017]老C的方块 题解
题意:老C是个程序员。游戏被限定在一个由小方格排成的R行C列网格上,有些相邻的小方格之间的公共边比较特殊。特殊的公共边排列得有很强的规律,下图所示是一个R=C=8的网格,蓝色标注的边是特殊边。如果网格的规模更大,我们可以用同样的方法找出所有的特殊边。网格的每个小方格刚好可以放入一个小方块,在游戏的一开始,有些小方格已经放上了小方块,另外的小方格没有放。有一些小方块排列成了它讨...
2019-08-16 21:58:00
198
转载 [JSOI2018]潜入行动 题解 (树形背包复杂度分析)
题目链接题意:外星人的母舰可以看成是一棵 n 个节点、 n−1 条边的无向树,树上的节点用 1,2,⋯,n 编号。JYY 的特工已经装备了隐形模块,可以在外星人母舰中不受限制地活动,可以神不知鬼不觉地在节点上安装监听设备。如果在节点 u 上安装监听设备,则 JYY 能够监听与 u 直接相邻所有的节点的通信。换言之,如果在节点 u 安装监听设备,则对于树中每一条边 (u,v) ,节点...
2019-08-16 21:36:00
217
转载 李超线段树 总结
李超线段树可以支持如下操作:在区间\(l~r\)加入线段\(y=kx+b\)。询问直线\(y=x\)与所有线段交点的\(y\)坐标最值。例题:模板题做法:对于线段树的每个区间,维护“最优线段”,即上面露出最多的线段。在插入一条线段时,同样对应到区间上。考虑如何在线段树的区间上加入一条线段:如果该区间没有线段或在此区间内,两条线段没有交点,则直接修改,不是最优的线段扔掉...
2019-08-15 21:32:00
164
转载 [NOI2018]你的名字 题解
题目链接先考虑68分的做法:求在A串中出现,且在B串中没出现的串的数量。使用容斥,用A的不同子串数减去A,B的不同公共子串数。先用双指针,求出A的每个位置开始,在B中最多能向后匹配多远。然后,问题变为,给你一些区间,问它们的子区间中有多少不同的串。因为每个串,都是原区间\([l,r]\)中\([l,i]\)的后缀。\((l<=i<=r)\)而后缀就是在前面去掉一...
2019-08-14 21:07:00
303
转载 [HAOI2018]奇怪的背包 题解
题目链接题目大意有一个模P意义下的背包,n个物品,每种有无限个,q个询问,问重量为w的方案。题解:首先,先考虑如何判断一些物品能否组成重w的背包。根据贝祖定理,只要这些数和P的最大公约数是w的约数,就可以。所以,对于本题,就是判断\(2^n\)中方案中,有多少种方案使得选择的数和P的最大公约数是w的约数。显然,有一个\(O((n+q)*约数个数)\)的dp,会超时。考虑优...
2019-08-14 21:01:00
172
转载 [HNOI2019]JOJO 题解
题目链接题意:有一个字符串,初始为空,n次操作,每次可以添加一段字符到末尾或回到第x次操作之后的状态。每次操作后,输出所有前缀的next之和。首先,那个撤销操作可以离线,建版本树解决。既然求的是最长公共前后缀,自然想到用KMP。模仿KMP的过程:记录每次添加后的串的next,中间的next无需记录。然后,考虑添加一段字符:和KMP一样,沿next链走,不过这里的匹配需要匹配一...
2019-08-13 20:42:00
463
转载 [BJOI2018]二进制 题解
题目链接题目描述:pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是 的倍数。他想研究对于二进制,是否也有类似的性质。于是他生成了一个长为n 的二进制串,希望你对于这个二进制串的一个子区间,能求出其有多少位置不同的连续子串,满足在重新排列后(可包含前导0)是一个3 的倍数。两个位置不同的子区间指开始位置不同或结束位置不同。由于他想尝试尽量多的情况,他...
2019-08-13 20:16:00
198
转载 tarjan等
有向图注意v在栈中时,才用dfn更新low。无向图不用判断这个。SCC和边双,都是在返回时判断low==dfn。点双就是找割点,low(v)>=dfn(u)时,把tarjan(v)过程中放入栈的点以及u加入点双。一个点可能位于多个点双。割点为>=,割边为> 。点双要特判根。圆方树圆圆边就是割边。圆方树要把边开够(n×2+m×4)。转载于:https:...
2019-08-12 21:56:00
140
转载 [HNOI/AHOI2018]转盘 题解
题目链接题意:给你一个\(n\)元环,你可以在0时刻从任意一个位置出发,每一秒可以选择往后或者留在原地每个点有个参数\(T_i\),当你走到\(i\)的时间\(t>=T_i\)时你就可以把i标记问你把整个环上的点都标记最小需要多长时间,带修改\(T_i\),强制在线好难的题。首先,有等待操作不太好弄。可以发现:在总时间一定的情况下,到每个点越晚越好。所以,可以把所...
2019-08-12 20:47:00
112
转载 CF46F Hercule Poirot Problem 题解
题意:有n个房间和m扇门,每扇门有且仅有一把钥匙有k个人度过了两天,在第一天开始的时候所有的门都是关闭的,在第二天结束的时候,所有的门也都是关闭的在这两天内,每个人可以执行如下操作若干次:关上一扇门(前提:他有这扇门的钥匙,且这扇门与当前房间相连)打开一扇门(前提:他有这扇门的钥匙,且这扇门与当前房间相连)将自己手上的一些钥匙给与他同处于一间房里的其他人走向一个与当前房间相...
2019-08-12 20:18:00
212
转载 CF70E Information Reform 题解
题意:给你一棵树,要选择若干节点,若一个点i没有选择,则有\(d(dis(i,j))\)的代价,其中j被选择。选择一个点代价为k,求最小代价。首先,考虑这样一个问题:如果距离a的最近被选点为i,距离b的最近被选点也是i,那么a到b的路径上的点的最近被选点都是i。考虑一条链:设Ax是链上第x个点,那么点y到Ax的距离fy(x)随x的增加,先下降,再上升。(这个显然)。那么假设a到b...
2019-08-09 22:14:00
143
转载 [十二省联考2019]皮配 题解
题目:[十二省联考2019]皮配设S等于各学校人数之和。首先,有一个很简单的\(O(nM^2)\)的\(dp\):记录当前考虑到哪所学校,以及蓝阵营人数a,鸭派系人数b,最后,只要满足\(S-C1<=a<=C0\)且\(S-D1<=b<=D0\),这个方案就是合法的。写上这个就有50分了。注意到还有20分满足\(k=0\),即没有限制,考虑这部分的做法:...
2019-08-08 22:03:00
143
转载 期望总结
终于理解了一点期望。定义E(X):X表示一个随机变量,xi为X的若干种取值,pi表示X取xi的概率。则E(X)=xi×pi之和。性质:E(C)=C (显然,C为常数,仅有一种取值)。E(X+Y)=E(X)+E(Y) (不要求X和Y独立)。因为不管X,Y是否独立,根据定义,pi1+pi2+....+pim始终等于1,同理,p1j+p2j+....+pnj始终等于1。这里的X...
2019-08-02 21:33:00
203
转载 「NOI2019」弹跳 题解(KD树)
题意:w×h网格中有n个点,m条边。每条边可以从p点花费t时间到一个矩形中的任意点,求1号点到每个点的最少时间。\(1<=w,h<=n<=70000,1<=m<=150000\)时间2s,空间128M。本题如果放在序列上,使用线段树建图,可以做到\(O(mlogn)\)的复杂度,通过数据分治可以获得72分。对于二维问题可以想到将线段树变为二维线段树,...
2019-07-26 16:16:00
369
转载 CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths (dsu on tree) 题解
先说一下dsu算法。例题:子树众数问题。给出一棵树,每个点有点权,求每个子树中出现次数最多的数的出现次数。树的节点数为n,\(n \leq 500000\)这个数据范围,\(O(n \sqrt n)\)直接莫队会超时。考虑一种暴力做法:开一个全局数组,记录每中数的出现次数。依次对每个点,用dfs遍历它的子树,并记录每种数的出现次数。遍历结束后,找到众数,记录结果,并清空这...
2019-07-25 21:11:00
145
转载 模拟赛 树上选点 题解
【题目背景】Po 姐姐很爱他的妹子,可是 Po 姐姐并没有妹子。于是 Po 姐姐决定去找妹子。【题目描述】A 国有 n 个城镇,由 n-1 条道路连接,构成了一个树形结构。每条道路的长度都是一样的。Po 姐姐最近得到了一个信息:在 A 国的某些城镇,可能出现质量上乘的妹子。为了捕获这些妹子, Po 姐姐制作了 m 个传送器,准备将这些传送器安置在一些城镇中。一旦某个城镇出现...
2019-07-25 21:01:00
421
转载 模拟赛 最小环 题解
求包含1号点的最小环。这个最小环一定是从1点的出边指向的点出发,再回到另一个1点的出边指向的点。这等价于1号点所有出边指向的点中,两两之间最短路+1号点到这两个点的距离的最小值。使用二进制拆分,分成两组点,分别向s,t连边,正反算两次最短路。时间复杂度 \(O((n+m)log^2 n)\)二进制分组是很常用的思路。参考代码:#include <stdio.h>...
2019-07-25 20:35:00
153
转载 模拟赛 路径计数 题解
题意:有k个障碍,求(0,0)到(n,m)不经过这些障碍的方案数。直接DP会超时。可以发现,(0,0)到(n,m)不经过障碍的路径条数 为总路径条数-经过障碍的路径条数,即C(n+m,n)-经过障碍的路径条数。设dp(i)表示从(0,0)到第i个障碍,不经过其它障碍的路径条数。转移时计算经过障碍的路径条数,枚举j,表示第一个经过的障碍是第j个障碍,这样从第J个障碍到第i个障碍就可以...
2019-07-25 20:32:00
218
转载 LNOI2018 劈配 题解
主要思路为连反向边。对于本题,贪心策略,依次决定每个人的最优解但因为每人达到的最优解可能有多种方式,如果每个都尝试就会超时,所以只能先采取其中一种并将这个方案连反向边,其它方案连正向边这样对于之后的人决策,可以看哪些导师能够走到汇点就是反向建图后,从汇点BFS判断能到达哪些导师,再判断哪个更优。例如:对于这个例子建图为先考虑选手1。 1,2号导师都能到达汇点,并且选择...
2019-07-25 20:30:00
185
转载 noip2017 列队 题解
使用线段树。对于取走序列中的一个数并放到尾部这样的操作,我们可以使用数组和线段树解决,方法如下:例:1 7 3 5 7 3 取走5,放到尾部。1 7 3 5 7 3 --> 1 7 3 __ 7 3 5 (下划线表示空)但这样查询第K个数时不能直接访问数组中的第K个元素(因为有空格),而扫一遍的复杂度又太高,所以要使用线段树进行优化,方法如下:维护另外一个数组,数组中只有0...
2019-07-25 20:27:00
140
转载 模拟赛 求和 题解
求(d表示约数个数)第一个sigma不能优化,需要优化第二个sigma(指数的那个)。只有完全平方数的约数个数才是奇数,所以指数就相当于i×1,i×2……i×m中完全平方数的个数。完全平方数中质因数分解后,所有指数都为偶数,所以对于每个i通过质因数分解可以得出至少乘多少才能成为一个完全平方数。例如:\(360=2^3×3^2×5^1,2和5的指数为奇数,所以360至少×10才能...
2019-07-25 20:25:00
178
转载 模拟赛 妖怪等级考试 题解
妖怪等级考试:给定一个无向连通图,求是否存在两个点之间存在三条路径,并要求输出路径。首先,如果两个节点之间存在多条不相交路径,就一定存在一个环。所以,这题和找环相关。只有两个环之间存在相交的边,才说明有解。如图:现在关键就是如何找到环。由于无向图dfs后,只有树边和返祖边,且只有返祖边才会形成环,所以只要对返祖边处理就可以了。每次将第个\(i\)环上所有边染成\(i\...
2019-07-25 20:20:00
193
转载 NOIP2016 天天爱跑步 题解
题目链接首先,把每条路径拆成如下两条路径。从起点到LCA的路径。从LCA到终点的路径。对这两条路径分别处理。首先,处理从起点到LCA的路径。为了方便,我们把这条路径拆成两条,进行差分:用从起点到根的路径,减去从LCA到根的路径,得出这条路径的贡献。现在我们要处理如下路径:从x点出发,走到根,出发时间为t,贡献为g(1或-1)。这个操作对点u有贡献,当且仅当满足如下...
2019-07-25 20:18:00
265
转载 可持久化可并堆 例题 题解
OVOO题解:求包含根节点的第k小连通块的权值,连通块的权值定义为连通块中包含的所有边的权值之和。使用A* 算法(估价函数为0),维护一个优先队列,优先队列中储存连通块的权值,上一次选的边权和当前连通块周围的可选边集合构成的可并堆,每种状态有如下两种扩展方式:(1)删除上一次选的边,并选一条当前可选边中权值最小的边。(2)将上一次选的边的所有出边所构成的可并堆与当前处理状态中的可...
2019-07-25 20:15:00
181
转载 欧拉回路
圈套圈模板,复杂度线性需要保证存在欧拉回路void dfs3(int u){ for(int i=fr[u];i!=-1;i=ne[i]) { if(fr[u]==-1)break;//表已被清空 fr[u]=ne[fr[u]];//当前弧优化 if(!bk[i/2]) { bk...
2019-07-25 20:15:00
102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅