随笔分类 - 模板
就是各种并不对劲的模板
摘要:说明 "板板题链接" "这个人" 讲得很清楚 WAWAWAWA 建的边“不完整”,比如当限制是“x为1时y一定为1”时,连x y的边时,忘记连y' x'的边(逆否)。 代码
阅读全文
摘要:"这个人" 讲得很清楚 关键在于把“匹配”转换成“某个式子的值为0”。 include include include include include include include include include include include include include include de
阅读全文
摘要:题目大意 给$n$($n\leq 2000$)个点$(x_1,y_1),...,(x_n,y_n)$($x,y\leq 998244353$),求多项式$f(x)$使$\forall i\in [1,n],f(x_i) mod 998244353=y_i$。 题解 结论:$f(x)=\sum\lim
阅读全文
摘要:多项式求逆是一个很多人选择背诵全文的算法。 include include include include include include include include include include include include include include define rep(i,x,y
阅读全文
摘要:FFT是一个很多人选择背诵全文的算法。 #include<algorithm> #include<cmath> #include<complex> #include<cstdio> #include<cstdlib> #include<cstring> #include<ctime> #includ
阅读全文
摘要:最近很对劲的太刀流做的一道题中说树是无向连通无环图,并不对劲的片手流为了反驳他,决定与之针锋相对,就练线段无向连通无环图套平衡无向连通无环图的题。 很对劲的太刀流-> 题意非常简单,就是维护一个数据结构,支持区间排名、区间第k大、单点修改、区间前驱后继这些操作。 主席树+树状数组想必是可以做的,但是
阅读全文
摘要:LCT,是连猫树(link-cat-tree)的缩写。它是树链剖分和splay的结合版本。 由于有很多关于LCT的文章以及这并不是对劲的文章,并不对劲的人并不打算讲得太详细。 推荐:详细的LCT-> 想必大家都知道splay+树剖=LCT splay虽然常数较大,但是它好写好调(大部分操作都可以把左
阅读全文
摘要:为了反驳隔壁很对劲的太刀流,并不对劲的片手流决定与之针锋相对,先一步发表cdq分治解三维偏序。 很对劲的太刀流在这里-> 参照一、二维偏序的方法,会发现一位偏序就是直接排序,可以看成通过排序使第一维无效。二维偏序是排序+树状数组,就是先通过排序消除了第一维的影响,再通过树状数组进行统计。那么以此类推
阅读全文
摘要:对于带修改的区间求和能做到O(n log n)预处理,O(log n)查询;而不带修改的可以做到O(n)预处理,O(1)查询。那么不带修改的区间最值能做到O(1)查询吗? 区间最值有这样一个性质:对于一段区间的两个子区间,如果它们覆盖了整个区间(可以有重叠部分),那么这两段区间各自的最大(或最小)值
阅读全文
摘要:为了反驳隔壁很对劲的太刀流,并不对劲的片手流将与之针锋相对。 很对劲的斜堆、左偏树简明教程-> 它们是可并堆的两种实现方式。 (还是假装二叉堆只包括小根堆。) 斜堆的缺点在于,每次合并的堆大小不同,无条件交换左右子树可能遇到某些坑孙子的数据,复杂度会变得玄学。 左偏树是在斜堆上有所改进的。根据斜堆的
阅读全文
摘要:为了反驳隔壁很对劲的太刀流,并不对劲的片手流将与之针锋相对。 很对劲的斜堆、左偏树简明教程-> 它们是可并堆的两种实现方式。 (假装二叉堆只包括小根堆。) 二叉堆该如何合并?先想一种暴力的。 现在有根的键值较小的二叉堆A,键值较大的二叉堆B。 在合并后,A的根肯定还是根。若A的左、右子树都不为空的话
阅读全文
摘要:俗话说的好,心中有党,常数极小。 1、循环中加寄存器优化for(register int i;i<=n;i++){} 好像在开O2时这个没什么用。 2、函数前inline int f(int x){} 当调用函数本身的时间长度比执行函数的更长时效果会更显著。配合read()、write()使用更佳。
阅读全文
摘要:最小费用最大流肯定要保证最大流,所以它和最大流有一些类似的性质。如果把费用看成边,就可以每次走最短路(保证费用最小),走到不能走为止(保证最大流)。费用流版的ek就是这样。需要注意的是,反向弧的边权为它对应的正向弧的费用的相反数,所以最短路要用spfa来求。 费用流版的dinic,又叫zkw费用流,
阅读全文
摘要:网络流问题可以看成是从一个单位时间流量超级大的水龙头经过一些粗细不一的水管流向下水道的问题,一般情况下是要求合理分配流量,使得单位时间内流向下水道的水量最大。 现在,水龙头开闸放水,假设自己是一个水分子。那么会怎么走呢?当然是找出一条能走到下水道的并且没有被流满的路,然后沿着这条路走到下水道就行了。
阅读全文
摘要:后缀自动机是个好东西,代码短还很快。 这是因为根到一个节点的不同路径表示所有有某种相同性质的不同字符串。 假设对于字符串S建后缀自动机,以下名词的意思是: right(S的子串s):s在S中出现的位置的右端点的集合; 状态:有同样right集合的子串,某状态的right集合是指该状态的所有字符串的r
阅读全文
摘要:后缀数组sa(x)表示排序后第x位在排序前的位置。 这个东西的求法有两种,一种是倍增,时间复杂度o(n log n)或o(n log2n),另一种是用不知道什么方法做到的o(n)。 至于第二种方法是什么,并不对劲的人并不知道,所以只说倍增。 考虑正常地比较两个字符串,都是从头比较到尾: 那么,如果把
阅读全文
摘要:听上去像是破坏植物的暴力行为(并不)。 可以快速查询某个字符串在某个字符串集中出现了几次,而且听上去比字符串哈希靠谱。 把整个字符串集建成树,边权是字符,对于字符串结尾的节点进行特殊标记。 这样一方面合并了前缀,节省空间;另一方面查询很方便,直接按边走就行。 #include<iostream> #
阅读全文
摘要:这道题在好多测评网站都可以提交。 这次用平衡树维护的不是每个数的值,而是顺序。 至于区间操作,每次把左边界左边的那个点旋转到根,把右边界右边的那个点旋转到根的右儿子。 然后你就会惊讶(并不)地发现:这个区间都被转到蓝色区域去了!(毕竟是l-1<rank<r+1的部分) 这样就可以在这个区间的根节点,
阅读全文
摘要:splay和不加任何旋转一定会被卡的二叉搜索树的唯一区别就是每次操作把当前节点旋转到根。 旋转有各种zig、zag的组合方式,感觉很麻烦,并不对劲的人并不想讲。 其实可以找出一些共性将它们合并。设ls(a)=[点a是其父亲的左儿子],son[a][0]=a的左儿子,son[a][1]=a的右儿子,f
阅读全文