随笔分类 - OJ---洛谷
摘要:算简单的了,直接拿线性基维护路径异或然后倍增跳合并就行。 cpp include include include include include include include include include using namespace std; define re register defin
阅读全文
摘要:考虑每一次要求的是一条路径上深度的$k$次方和,但是$k \leq 50$,所以可以先把$k$的所有情况预处理出来,然后直接树上差分就行了。 cpp / mail: mleautomaton@foxmail.com author: MLEAutoMaton This Code is made by
阅读全文
摘要:传送门 "Loj" "BZOJ" <! more Solution 我们考虑一下设$f(x)$表示当$n$为$x$时构造二叉树的方案数,$g(x)$表示当$n$为$x$时构造二叉树的叶子节点数的总和. 仔细看一下这个句子: .$Catalan$数无疑了,接着就是解决$g(x)$是什么. 现在不是有$
阅读全文
摘要:传送门 "洛谷" "BZOJ" Solution 如果不需要动态的话,那就是一个裸的最小生成树上的最大边权对吧。 现在动态了的话,把这个过程反着来,就是加边对吧。 现在问题变成了怎么动态维护加边的最小生成树,这是一个比较常见的套路了,使用LCT(~~暴力~~)。。。 深刻理解一下Kruscal的过程
阅读全文
摘要:我是不是太菜了,现在什么都不会. 过程 1. 对于每一个未知元求解. 2. 对于一个未知元$x_i$,找到对应系数的绝对值的最大的那一个方程. 3. 如果这个东西是0,那么就无唯一解. 4. 然后把第$i$行和最大的那一行交换,然后消元. 5. 重复1 最后每一行的常数就是对应的解. 代码实现 cp
阅读全文
摘要:传送门 "洛谷" Solution 实测跑的比ST表快!!! 这个东西也是$O(1)$的,不会可以看 "我上一篇Blog" 代码实现 "代码戳这里"
阅读全文
摘要:传送门 "洛谷" Solution 做过的比较玄学的后缀自动机。 果然就像$Tham$所讲,后缀自动机这种东西考场考了不可能做的出来的。。。 考虑如果$l=1,r=|S|$的怎么做? 直接建后缀自动机然后跳。 接着就是$l,r$随机。。。 详细说明可点开蓝色题解按钮然后膜拜第一篇题解! 考虑线段树合
阅读全文
摘要:传送门 "洛谷" Solution 考虑要求的是什么,前缀的本质不同的字符串个数? 如果只要求一个串那么显然答案是$\sum_{i=1}^{tot}len[i] len[fa[i]]$(实际上这个并不显然,~~想一想为什么~~) 接着就是在线的啦,你可别忘了SAM本身就是在线算法,每一次算一个贡献就
阅读全文
摘要:传送门 "洛谷" Solution 考虑他要求的是最长公共子串对吧,那么我们对于一个串建后缀自动机,另一个串在后缀自动机上面跑就是了。 复杂度$O(n+m)$的,很棒! 代码实现 "代码戳这里"
阅读全文
摘要:传送门 "BZOJ" "洛谷" Solution 考虑我们每找到一个回文串就更新一次答案,跑个SAM,这样子复杂度是爆炸的。 接下来的就是优化: 我们可以倍增跳直到跳不了,最后的siz就是出现次数。 没了?没了! 代码实现 "代码戳这里"
阅读全文
摘要:传送门 "BZOJ" "洛谷" Solution "SA版本的" 考虑可以建一个SAM? 那么接下来我们就考虑每一对点对之间的贡献了。 把这个式子化简一下就是无序点对之间的那啥(自己意会一下) 然后我们定义边权为len的差值。 然后那个东西不就是$i j$的路径吗? 然后就可以分开考虑每一条边的贡献
阅读全文
摘要:传送门 "BZOJCH" "洛谷" Solution 这个东西要求的不就是最小表示法吗? 把原串复制一遍然后都加到后缀自动机里面去。 用个map跑一下,这样子可以保证每一次选的是最小字典序的。 然后跑$n$次就可以了。 小插曲 对面的神仙 "hyjhyj" 问我这个东西如果长度不够怎么办。 emmm
阅读全文
摘要:传送门 "洛谷" Solution 考虑看到什么k小就整体二分套上去试一下。 矩形k小整体二分+二维树状数组就好了。 代码实现 cpp // luogu judger enable o2 / mail: mleautomaton@foxmail.com author: MLEAutoMaton Th
阅读全文
摘要:传送门 "BZOJ" 然而是权限题 "洛谷" Solution 发现题目给出的一些规律,emm,如果我们新凑出来的一个数,那么后面一个数一定是$sum+1$。 于是就可以主席树随便维护了! 代码实现 cpp include using namespace std; inline int gi(){i
阅读全文
摘要:题面 "传送门" Solution 看到什么最大值最小肯定二分啊。 check直接跑一个二分图匹配就好了。 orz ztl!!! 代码实现
阅读全文
摘要:传送门 "洛谷" Solution 这是一道神仙题! 考虑这个东西是个啥。 emmm,如果两个点要到达,一定不能经过比他们大的。 所以Floyd搞定两点距离然后费用流跑一遍就是答案了! 代码实现 cpp / mail: mleautomaton@foxmail.com author: MLEAuto
阅读全文
摘要:传送门 "洛谷" Solution 考虑和happiness一个套路,新建一个点然后连边就好了。 代码实现
阅读全文
摘要:传送门 "洛谷" Solution 直接跑最小割板子就好了。 代码实现 cpp include include include include include include include include include using namespace std; define ll long lo
阅读全文
摘要:传送门 "洛谷" Solution 比较巧妙啊! 考虑这个只有同意和不统一两种,所以直接令$s$表示选,$t$表示不选,然后在朋友直接建双向边就好了。 代码实现 cpp include using namespace std; const int N=500010,Inf=1e9+10; int f
阅读全文
摘要:传送门 "洛谷" Solution 考虑把每一个修车工人拆成$n$个点,那么考虑令$id(i,j)$为第$i$个工人倒数第$j$次修车。 然后就可以直接跑费用流了!!! 代码实现 cpp / mail: mleautomaton@foxmail.com author: MLEAutoMaton Th
阅读全文