
模板与算法
永无止境……
Felix-Lee
北有玄武盾,南有雀攻法,东有青龙唾,西有虎焰击,中有沙婆星,层层设备,步步为营。
展开
-
多项式快速插值学习小记
今天终于抽空把这个综(du)合(liu)知识点学了,心力交瘁……多项式快速插值给出 nnn 个点 (xi,yi)(x_i,y_i)(xi,yi) ,要求一个次数为 n−1n-1n−1 的多项式 F(x)F(x)F(x) 满足:F(xi)=yiF(x_i)=y_iF(xi)=yi显然这个多项式是唯一确定的。根据拉格朗日插值法,我们有:F(x)=∑i=1n∏j̸=i(x...原创 2019-03-28 21:14:57 · 1054 阅读 · 0 评论 -
多项式的ln、exp、快速幂和开根学习小记
不妨又学习了一下多项式的求ln、exp、快速幂和开方操作。这些操作比之前的求逆更上了一层台阶,应用同样很广。多项式ln给出一个次数界为 nnn 的多项式 F(x)F(x)F(x) ,要求多项式 G(x)G(x)G(x) 满足:G(x)≡ln F(x) (mod xn)G(x)\equiv ln\ F(x)\ (mod\ x^n)G(x)≡ln&n...原创 2019-03-22 22:23:38 · 2066 阅读 · 0 评论 -
多项式的求逆、取模和多点求值学习小记
最近学习了多项式的求逆、取模和多点求值,这些方法能够解决很多多项式问题。这三个操作是环环相扣的,很有趣,学完后不妨记录一下。多项式求逆给出一个次数界为 nnn 的多项式 A(x)A(x)A(x) ,需要求 B(x)B(x)B(x) 满足: A(x)B(x)≡1(mod xn)A(x)B(x)\equiv1(mod\ x^n)A(x)B(x)≡1(mod x...原创 2019-01-19 14:54:20 · 1795 阅读 · 0 评论 -
C++ 40行超级加速命令
开眼界了。。。原文地址:40行加速头文件:https://www.cnblogs.com/Yuhuger/p/9280598.html40行Code#pragma GCC optimize(3)#pragma GCC target("avx")#pragma GCC optimize("Ofast")#pragma GCC optimize("inline")#pragma GC...原创 2019-03-07 17:01:54 · 3614 阅读 · 0 评论 -
积性函数与Dirichlet卷积 学习小记
前言首先感谢 XHM 大佬的悉心指导,我懂得了不少~。链一下他关于这方面的见解、博客——XHM 的Dirichlet卷积 学习小记一些定义回归正题,这次我学习了一下狄利克雷卷积方面的知识。先给一波定义:(这里也感谢 skywalkert大佬的精心讲解)数论函数的定义若 f(n)f(n)f(n) 的定义域为 正整数域,值域为 复数,即 f:Z+→Cf:Z+→...原创 2018-04-19 17:04:25 · 1589 阅读 · 0 评论 -
C++ 手动开O2优化
O2优化能使程序的编译效率大大提升从而减少程序的运行时间,达到优化的效果。C++程序中的O2开关如下所示:#pragma GCC optimize(2)只需将这句话放到程序的开头即可打开O2优化开关。原创 2017-09-02 19:45:47 · 57191 阅读 · 7 评论 -
O(N) 求 1~N 逆元 模板及证明
O(N) 求 1~N 逆元 模板及证明 Solutioninv[i]=(mo−mo / i)∗inv[mo % i] % moinv[i] = (mo-mo\ /\ i ) * inv[mo\ \%\ i]\ \%\ mo证明:设 t=mo / it=mo\ /\ i ,k=mo % ik=mo\ \%\ i ,则有:t∗i+k≡0 (mod mo)t*i+k≡原创 2017-11-02 16:44:24 · 9726 阅读 · 0 评论 -
树链剖分详解
树链剖分详解简介树链剖分,一种对树进行划分的算法,它先通过轻重边剖分将树分为多条链。保证每个点属于且只属于一条链,然后再通过数据结构(树状数组、SBT、SPLAY、线段树等)来维护每一条链。它能巧妙地将树上信息映射到线性结构上(如套用线段树),应用广泛。接下来,我们通过一个问题来探究树链剖分算法。详解【问题】在一棵树上进行路径的修改、求极值、求和【探究】暴力计算固然可行原创 2017-04-08 16:07:21 · 3631 阅读 · 0 评论 -
单源最短路 SPFA 算法模板
简介在图论中,最短路是十分重要的一部分,在很多问题中都有涉及而现在所讲的 SPFA 算法是十分优秀的算法,时间复杂度为 O(k∗E)O(k*E)其中 EE 是图的边数,而 kk 是一个常数,一般极小。事实上 SPFA 就是在 Bellman-ford 算法的基础上加上一个队列优化,减少了冗余的松弛操作,是一种高效的最短路算法。而且 SPFA 还能判负环,这种情况下类似 Dijkstra 算原创 2017-01-15 22:08:17 · 1038 阅读 · 0 评论 -
Manacher 算法模板
简介在字符串的题目中,有时会遇上 回文串 这样一个名词顾名思义,回文串 就是 正读和反读都一样的字符串而 最长回文子串 ,就是在一个字符串的所有子串中,是回文串且长度最长的那个求最长回文子串最普通的方法是 O(N2)O(N^2) ,即枚举一个点往两边扩展但是在有些题目中,N 却十分的大那么我们就要用到 时间空间复杂度都是 O(N)O(N) 的 Manecher 算法用法在处理回文串时原创 2017-01-11 20:22:52 · 941 阅读 · 0 评论 -
线性筛法 与 线性求欧拉函数 的计算模板
简介懂得如何快速计算质数是十分重要的在筛法的基础上,我们可以使用更为高级的线性筛法!顾名思义,就是时间复杂度是线性的,即 O(N)O(N) ,N 为所求的质数范围而对编程有所接触的人,应该都知道欧拉函数 即 φ(N)φ(N)听起来高大上,其实就表示 小于等于 N 的数中与 N 互质的数的数目这在竞赛中用处很大,变式也很多—— ~不明觉厉~那么如何在 线性时间 内求出 1—N1—N 中的原创 2017-01-04 20:20:40 · 924 阅读 · 0 评论 -
c++ 二分查找的函数 lower_bound & upper_bound & binary_search
简介C++ STL 中二分查找函数主要有这三种:lower_bound()upper_bound()binary_search()这三个函数都运用于有序区间。用法1. lower_bound(a+1,a+1+n,x)-a返回一个非递减序列 [1,n][1, n] 中的第一个大于等于值 xx 的位置 (int)(int)。程序相当于:int lower_bound(){ int l=原创 2016-12-24 16:09:44 · 919 阅读 · 0 评论 -
C++ 读入优化与输出优化 模板
简介C++ 是一种神奇的编程语言……自然,读入和输出也有着许多种形式:如:scanf(),cin>>,cout<<,printf()scanf(),cin>>,cout<<,printf() 等但是我们奉行——效率第一!!!那么如何提高读入和输出的效率呢?用法1. 读入优化C++中有一个函数:getchar() ,用于读入字符,那么这跟读入整数有什么关系呢?其实,经过类似高精度的处理原创 2017-01-13 22:23:37 · 20496 阅读 · 13 评论