自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BSGS大法——有趣的分块打表

对于三个整数A,B,CA,B,CA, B, C,满足A,B&lt;C&lt;109A,B&lt;C&lt;109A, B < C < 10^9且A,CA,CA, C互质,求一个最小的x使得Ax≡B&nbsp;(mod&nbsp;C)Ax≡B&nbsp;(mod&nbsp;C)A^x \equiv B~(mod~C),怎么做? 分块打表! 令t=⌈C‾‾√⌉,x=i∗t−j&nbsp;(i,j&...

2018-07-31 23:56:55 299

原创 树套树——树状数组套主席树

线段树套平衡树是什么脑残东西,复杂度就是假的,O(nlog3n)O(nlog3n)O(nlog^3n)让人感觉非常不靠谱。所以我们为什么不用更好写的树状数组代替线段树,更好写的主席树(权值线段树)代替平衡树呢?而且,不仅是好写,复杂度也是很对的O(nlog2n)O(nlog2n)O(nlog^2n)啊。我们来简单理解一下树套树是什么: 思想其实很简单,树状数组的每个节点都是一颗权值线段树,并...

2018-07-31 22:34:22 2579 3

原创 建立在点双上的圆方树及 APIO2018T3 铁人两项

圆方树是什么? 其实很简单,就是点双的缩点形式。原图中的点用圆点表示,对于每个点双内部建立一个方点,并把这个方点向点双内所有点连边。对于一个单点,就把它连出去的每条边都改为方点并和原来这条边两端的节点连接。这样做之后,任意两个圆点以及任意两个方点都不相邻。接下来看题。 传送门 建立圆方树,方点权值为其代表的点双内的点数,如果这个方点是从一条边变过来的,那么其权值为2,同时令圆点权值为-1...

2018-07-31 19:46:55 211

原创 Kruskal重构树及 NOI2018D1T1 归程

Kruskal重构树,就是在运行Kruskal算法的时候,对于每次找到的一条边{x, y, w},我们新建一个节点z,权值为边权w,连接fa[x], z和fa[y], z,然后用并查集的方式把x和y各自所在的集合都合并到z里,下一次的fa[x]和fa[y]就是z了。inline void kruskal(){ for (int i = 1; i &amp;amp;amp;lt; n &amp;amp;amp;lt;&amp;amp;amp;lt; 1; ...

2018-07-31 16:04:00 257

原创 可持久化并查集

其实这已经快不能算并查集了。 维护可持久化的fa数组,因为不能路径压缩,所以就用按秩合并(启发式合并)就好了。 可持久化数组一个log,启发式合并一个log,总复杂度就是O(nlog2n)O(nlog2n)O(nlog^2n)了。#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstring&amp;gt;#include &amp;lt;cstdio&amp;gt;con...

2018-07-31 15:12:53 292

原创 平衡树——Splay及其维护的相关信息

无限Orz Tarjan大神。Splay是一个神奇的数据结构,它可以维护一些数的权值集合、一个序列甚至是一棵树(一片森林)。权值其实权值线段树也可以处理平衡树的问题。在权值线段树外面套一个树状数组(树状数组套主席树)可以解决更复杂的带修改和区间查询权值相关的问题,那不要那个树状数组不就能解决一个平衡树的问题啦? 不过今天不讨论权值线段树,我们只讲Splay。二叉查找树学S...

2018-07-31 00:15:21 695 1

原创 manacher算法

和KMP一样,是个字符串算法,是个O(n)算法,同样也是个通过减少无意义匹配来降低复杂度的算法。 但哪里不一样呢? 哪儿都不一样。 解决的问题不一样,优化的方法和思路不一样,代码不一样,还有这个比KMP简单多了。 它解决的问题是这样的:给出一个字符串,求它以任意位置为中心的最长回文子串长度。这个任意位置可能是某个字符上(比如abcba中的c),也可能在两个字符中间(比如abba中间的两个b...

2018-07-21 23:30:27 515

原创 AC自动机

自动AC机是什么?交上去就能AC? 要真是这样,那还要OI干什么。 AC自动机相当于是Trie上KMP,相对于KMP,解决多串匹配问题,但比KMP要简单,核心思想就是两句话。Code#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstring&amp;gt;#include &amp;lt;cstdio&amp;gt;#include &amp;lt;queue&amp

2018-07-21 22:09:36 102

原创 KMP字符串匹配

KMP是一个单串匹配O(n)O(n)O(n)的算法,不同于Hash,这个是保证正确的。 什么是单串匹配呢?就是给你一个模式串P和一个文本串T,问P在T中的哪些位置出现过。 暴力做法就是把T的每个位置都跟P匹配一遍,复杂度为O(len(T)∗len(P))O(len(T)∗len(P))O(len(T)*len(P)),也就是O(nm)O(nm)O(nm)。 以下,因为公式化的引号(包括单引号...

2018-07-21 21:30:51 247

原创 Miller-rabbin算法

这个算法用于快速判断一个数是否是质数。 那怎么判呢? 首先,既然要快速,我们就不能用朴素的O(n‾√)O(n)O(\sqrt n)的试除法。我们会联想到质数的一些性质: ap−1≡1(modp)(0&amp;lt;a&amp;lt;p)ap−1≡1(modp)(0&amp;lt;a&amp;lt;p)a^{p-1} \equiv 1 (mod p)(0 &lt; a &lt; p) 也就是费马小定理了,我们可以由此想到一个简单的方法...

2018-07-21 18:28:17 635

原创 扩展欧几里得算法

这个算法是用来解决这样的问题的: 给定a,b,ca,b,ca, b, c,求 ax+by=cax+by=cax + by = c 这个不定方程的最小非负整数解。 扩欧求的实际上是 ax+by=gcd(a,b)ax+by=gcd(a,b)ax + by = gcd(a, b) 这个方程的解,所以只有当 gcd(a,b)|cgcd(a,b)|cgcd(a, b)|c 的时候才有整数解。 ...

2018-07-21 14:31:48 173

原创 高斯消元

高斯消元其实就是个模拟……想想初中怎么学的加减消元,模拟这个过程就好了。 主要看看代码里的一些技巧。Code#include &lt;iostream&gt;#include &lt;cstring&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;const int maxn = 107;const double eps =...

2018-07-21 13:37:25 103

原创 多项式各种操作

前些天学了一堆多项式的算法,今天总结一下。乘法朴素的NTT就不说了,主要说一下三模数NTT。 三模数NTT,顾名思义,就是选取三个适合做NTT的模数,然后把它们用CRT合并起来得到的答案再去对我们要求的模数取模。 为了方便,这三个模数分别是998244353, 1004535809和469762049。它们的原根都是3,且它们减去1的值都有超过20个2的因子。 如果你觉得能用in...

2018-07-21 13:28:28 431

空空如也

空空如也

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

TA关注的人

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