★Tips
文章平均质量分 63
墓华
这个作者很懒,什么都没留下…
展开
-
同余最短路(洛谷P2371 墨墨的等式)
定义同余最短路常用于解决这样一类问题:有nnn个正整数a1,a2,a3,⋯ ,ana_1, a_2,a_3 , \cdots, a_na1,a2,a3,⋯,an,设:x1a1+x2a2+x3a3+⋯+xnan=k (x1,x2,x3,⋯ ,xn∈N)x_1a_1+x_2a_2+x_3a_3+\cdots+x_na_n=k\;\;\;\;\;\;\;\...原创 2020-04-07 14:08:59 · 321 阅读 · 0 评论 -
快速幂,快速乘 及 欧拉降幂
【快速幂】abmod  ca^b\mod cabmodclong long qpow(long long a,long long b,long long c) //(a^b)%c{ long long res=1; while(b) { if(b&1) //若b为奇数 ...原创 2019-08-04 16:23:34 · 238 阅读 · 0 评论 -
欧拉函数φ(x)相关性质及计算
定义:对 正整数nnn,欧拉函数是 小于nnn的正整数 中 与nnn互质的数的数目。(φ(1)=1\varphi(1)=1φ(1)=1)互质:aaa与bbb互质,即gcd(a,b)=1\gcd(a,b)=1gcd(a,b)=1性质:对于质数ppp,φ(p)=p−1\varphi(p)=p-1φ(p)=p−1欧拉函数φ(x)\varphi(x)φ(x)为(不完全)积性...原创 2019-08-04 14:31:03 · 5090 阅读 · 0 评论 -
素数表:埃氏素筛 及 欧拉筛
一、埃氏素数筛选法时间复杂度O(N⋅loglogN)O(N\cdot\log{\log N})O(N⋅loglogN)int prime[maxn],tot;bool vis[maxn];void get_prime() //埃氏素筛{ memset(vis,0,sizeof(vis)); tot=0; for(int i=2;i<=maxn;...原创 2019-08-04 11:16:52 · 352 阅读 · 0 评论 -
质因数分解(N, N!, 大数) 及 唯一分解定理
质因数分解把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。①短除法分解质因数只针对合数。(分解质因数也称分解素因数)求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。暴力解法,...原创 2019-08-04 10:50:14 · 3425 阅读 · 1 评论 -
数论四大定理
注:(modp)\pmod p(modp),表示 恒等式两边同时对ppp取模,即恒等式两边同余一、威尔逊定理若 ppp为质数,则有:(p−1)!≡−1(modp)(p-1)!\equiv -1\pmod p(p−1)!≡−1(modp)或写成:(p−1)!≡p−1(modp)(p-1)!\equiv p-1\pmod p(p−1)!≡p−1(modp)同时这是 ppp为质数的充...原创 2019-07-31 11:15:03 · 578 阅读 · 0 评论 -
线性同余方程的求解 及 模板题
定义:ax≡c(modb)ax\equiv c\pmod bax≡c(modb)解的结构:求解ax≡c(modb)ax\equiv c\pmod bax≡c(modb),等价于求解ax+by=cax+by=cax+by=c,设d=gcd(a,b)d=\gcd(a,b)d=gcd(a,b)该方程有整数解的充分必要条件是d∣cd|cd∣c(即ccc被gcd(a,b)\gcd(a,...原创 2019-08-03 20:31:37 · 725 阅读 · 0 评论 -
欧几里得定理 及 拓展欧几里得 小结
欧几里得定理定义:gcd(a,b)=gcd(b,amod  b)\gcd(a,b)=\gcd(b,a\mod b)gcd(a,b)=gcd(b,amodb)应用:故得到 求解gcd的辗转相除法模板:int gcd(int a,int b){ return b?gcd(b,a%b):a;}int lcm(int...原创 2019-08-03 18:49:18 · 873 阅读 · 0 评论 -
主席树 —— ③动态区间第K小(树套树,带修改主席树)
动态区间第K小动态区间第K小,又称带修改主席树(动态主席树),对于初学真的不太友好。因为这个和静态区间第K小(静态主席树)数据结构都完全不同了。和求静态第K小一样,我们要得到[L, R]状态的线段树,才能进行二分得到第K小。静态主席树 是一个 可持久化线段树,每次利用 前缀和来计算[L, R]状态,但是前缀和就不便于进行修改操作了,那么对于可修改的区间求和,我们就要用到 树状数组/线段树。...原创 2019-07-29 10:51:12 · 1181 阅读 · 0 评论 -
数据结构——单调队列
定义:单调队列,即维护一个具有 单调性的队列,按照遍历顺序入队、出队,而且 入队的时候要维护单调性, 每个元素均只入队、出队 一次,相较于单调栈,单调队列可以 从两头出队,但 只能从队尾入队。特性:对于 递增/非降队列,队首元素为 最小值;对于 递减/非升队列,队首元素为 最大值。越先入队的值所在位置越靠前,即越靠近队首的值肯定越先入队(因为只能从队尾入队)实现:因...原创 2019-07-19 14:04:38 · 296 阅读 · 0 评论 -
线段树——区间最大子段和问题(SPOJ - GSS1)
问题描述:给定一段长度为nnn的序列a1,a2,…,ana_1,a_2,\dots,a_na1,a2,…,an(aaa有正亦有负),每次 询问[L,R][L,R][L,R](即aLa_LaL~aRa_RaR)范围内的最大字段和,并涉及 单点修改 操作。【线段树】 维护区间最大子段和:①定义:线段树一共要维护444个值,如下:(每个值的含义都是相对于该结点对应区间[l,r][...原创 2019-08-08 09:22:02 · 965 阅读 · 1 评论 -
主席树 —— ①可持久化线段树
可持久化线段树主席树,即 可持久化线段树。可持久化:可以找到每次修改时的线段树,即 保存了线段树各个历史版本 ,这样就可以快速查询到第 i 次修改前线段树的状态。核心思想:与历史版本的线段树共用部分结点。很明显每次新建一棵线段树带来的时空消耗是难以承受的,但是可以发现,每次单点修改时,只会变动logN个结点(即从根结点到对应叶结点的路径),所以剩下的结点都可以和前一个版本的线段树共用。(所...原创 2019-07-28 15:17:03 · 278 阅读 · 0 评论 -
中国剩余定理 及 拓展中国剩余定理模板
求解同余方程组:{x≡r1(modm1)x≡r2(modm2)⋯x≡rn(modmn)\left\{\begin{matrix}x\equiv r_1 \pmod {m_1}\\ x\equiv r_2 \pmod {m_2}\\ \cdots\\ x\equiv r_n \pmod {m_n}\\ \end{matrix}\right.⎩⎪⎪⎨⎪⎪⎧x≡r1(modm1)x≡r...原创 2019-08-26 20:07:22 · 244 阅读 · 0 评论 -
图论 —— 树的直径 及 其两种求法
定义:树的直径,即 树上最远的两点的距离(即 树上最大距离),若树的边权全为111,则树的直径即是 树上的最长链。通常有两种树的直径的求法,时间复杂度均为O(n)O(n)O(n)①树形DP求树的直径改方法只需遍历一次,即可求得树的直径大小,但无法求得直径的具体路径。选取任意结点为根遍历树,设 d[i]:d[i]:d[i]:表示结点iii为根的子树结点最远距离。则有:uuu为根的...原创 2019-08-21 21:07:26 · 1303 阅读 · 0 评论 -
数据结构 —— 树链剖分小结
定义:即轻重链剖分,通过轻重边剖分将树分为多条链,然后再通过数据结构来维护每一条链。主要用于解决 树上 对 点权 的 区间操作 (更新/查询) 问题。相关概念:重儿子:对于 一个 非叶结点,其所有子结点中 子树结点数最多 的 子结点(只选一个)轻儿子:对于 一个 非叶节点,其 除重结点以外 的 子结点重边:连接 非叶结点 和其 重儿子 的 边轻边:连接 非叶结点 和其 轻儿子 ...原创 2019-08-16 10:00:37 · 225 阅读 · 0 评论 -
图论 —— floyd算法(全源最短路问题 / 无向图找最小环)
floyd算法:对于一个含有nnn个结点的无负环图GGG(通常用邻接矩阵存储),floyd算法可以用于解决全源最短路问题,和查找无向图中最小环,时间复杂度O(n3)O(n^3)O(n3),①全源最短路问题:邻接矩阵g[i][j]g[i][j]g[i][j]:表示边i→ji\rarr ji→j的距离,INF表示i,ji,ji,j之间无边直接相连dist[i][j]dist[i][j]di...原创 2019-08-20 16:19:29 · 1263 阅读 · 0 评论 -
2019多校第九场 HDU6681 Rikka with Cake(欧拉图论定理,线段树)
链接:HDU6681 Rikka with Cake题意:给出一个笛卡尔坐标系中左下角坐标为(0,0)(0,0)(0,0),右上角坐标为(n,m)(n,m)(n,m)的矩形,有K  (≤105)K\;(\le 10^5)K(≤105)条射线,起点在矩形内部,其坐标为(xi,yi)(x_i,y_i)(xi,yi),方向为上/下/左/右(U/D/L/R)U/D/L/...原创 2019-08-20 14:47:09 · 190 阅读 · 0 评论 -
有向图 —— 拓扑排序小结
定义:对一个有向无环图( Directed Acyclic Graph 简称DAG )GGG进行拓扑排序,是将GGG中所有顶点排成一个线性序列,使得图中任意一对顶点uuu和vvv,若边<u,v>∈E(G)<u,v>∈E(G)<u,v>∈E(G),则uuu在线性序列中出现在vvv之前。应用:拓扑排序常用来 确定一个...原创 2019-08-14 10:17:45 · 420 阅读 · 0 评论 -
01字典树小结
简介010101字典树,就是将字典树中的字符aaa ~ zzz换为二进制的0/10/10/1,得以存储数的二进制形式。对于结点uuu,有代表下一位为000的左儿子:ch[u][0]ch[u][0]ch[u][0],代表下一位为111的右儿子:ch[u][1]ch[u][1]ch[u][1]而字典树的根(u=0u=0u=0)表示最高位+1+1+1位,故其代表0;字典树的叶结点vvv则表示最低位...原创 2019-08-09 15:24:27 · 293 阅读 · 0 评论 -
二分法求LIS并记录路径
二分法求LIS一般是二分维护一个数组d[len]d[len]d[len],lenlenlen表示最大长度,但是数组ddd中存储的并不是LIS(因为入的时候前后顺序被打乱),如果要得到LIS,还需记录路径。再创建一个数组pos[i]pos[i]pos[i],表示第...原创 2019-08-08 16:43:51 · 759 阅读 · 0 评论 -
辗转求分数中间值
已知正整数a,b,c,da,b,c,da,b,c,d,有:(均是最简分数形式)ab<xy<cd\frac{a}{b}\lt\frac{x}{y}\lt\frac{c}{d}ba<yx<dc要令xxx和yyy都尽可能的小,问x,yx,yx,y最小是多少?首先,因为xy\frac{x}{y}yx是被限定在区间内的,所以要令xxx小,就要yyy...原创 2019-08-06 15:37:07 · 385 阅读 · 0 评论 -
主席树 —— ②静态区间第K小
静态区间第K小给出一段长度序列 a[1]、a[2]、… 、a[N],每次询问 [L, R] 区间内第K小的数为?我们可以建立 权值线段树,线段树内存储 某个权值的出现次数。对于 [L, R] 区间(a[L] ~ a[R]),构建的线段树以下示例参考blog:https://www.cnblogs.com/LiuRunky/p/Sustainable_Segment_Tree.html...原创 2019-07-28 16:29:48 · 583 阅读 · 0 评论 -
数论 —— 线性基小结+模板
线性基线性基可以理解为原集合的一个子集,但是可以线性表示原集合中所有的元素。ACM中的线性基一般就用于求异或和的最值(任意选取元素使得异或和最大),线性基里集合的线性组合能表示出原序列的异或组合。关于线性基在线性代数中的定义和求解证明挺麻烦…就不管了 (因为懒 ) 。异或运算是按二进制位运算(可以理解为按位相加不进位),所以为了让线性基能够表示原序列,那么应当按位进行构建,同时线性基中的元...原创 2019-07-23 20:47:47 · 163 阅读 · 0 评论 -
数位DP——小结及模板
一、数位DP用于解决 范围 [L, R] 内满足某些条件的数有多少 的问题,所谓数位,就是指数的个位、十位、百位、千位…一般会将先将求ans [L, R] 转化为求 ans [0, R] - ans [0, L-1] ,从而问题就变为数位DP求解 ans [0, X]数位DP最重要的是状态的构建,而具体DP的过程则是利用DFS+记忆化搜索实现,这样更好理解并实现,而状态的构建则更像是状态的压...原创 2019-07-12 13:15:16 · 393 阅读 · 0 评论 -
Bellman-Ford算法、SPFA算法模板——含负边权单源最短路问题 及 负环判断问题
Bellman-Ford算法:核心思路: 源点d值设为0,其他d值设为INF。执行N-1次操作(N为结点数),每次遍历所有边来进行松弛操作。N-1次操作结束后,再遍历一次所有边,若还能继续松弛,说明有源点可达的负环。模板:struct edge{ int u; int v; int w;} a[maxm];int N,M; //N个结点,M条边int d[maxn]...原创 2019-02-27 20:08:36 · 324 阅读 · 0 评论 -
求LIS的两种方法:DP 与 二分法 ~~
LIS(Longest Increasing Subsequence):最长上升子序列这里分两种情况来看:子序列严格递增(即子序列中不能存在相等)子序列非降(即子序列中可以存在相等)对于序列:a[1] , a[2] , a[3] , … , a[N]一、动态规划(DP) 时间复杂度:O(N2)子序列严格递增:dp[i] = max{1 , dp[j]+1} ( j&amp;amp;amp;lt...原创 2019-02-17 12:44:44 · 1738 阅读 · 0 评论 -
SPFA以及其优化
SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。SPFA,要从Bellman-ford的优化说起。在n个点m条边的图中,Bellman-ford的复杂度是n*m,依次对每条边进行松弛操作,重复这个操作n-1次后则一定得到最短路,如果还能继续松弛,则有负环。这是因为最长的没有环路的路,也只不过是n个点n...转载 2019-01-31 11:59:00 · 292 阅读 · 0 评论 -
最小生成树(MST)—— Kruskal算法
Kruskal算法主要对边进行贪心,经过变换还可以求最大生成树,还可以记录树的具体路径。Kruskal算法基本思想:初始状态时隐去图中所有边,这样图中每个顶点都自成一个连通块。对所有边权从小到大排序。按边权从小到大测试所有边,如果当前测试边所连接的两个结点不在同一个连通块中,则把这条测试边加入最小生成树中( 合并两个连通块 );否则,将这条测试边舍弃。执行步骤2,直至最小生成树中的...原创 2019-02-09 14:16:45 · 684 阅读 · 0 评论 -
最小生成树(MST)—— Prim算法
prim算法基本思想:对 图G( V , E) 设置 集合S来存储已被访问的结点,然后执行N次以下操作(N为结点个数)每次从集合V-S(即未访问结点) 中选择与 集合S(已访问结点的集合) 最近的一个结点u,访问u并将其加入集合S,同时把 这条离集合S最近的边(u - S)d[u] 加入最小生成树中。以结点u作为接口(踏板),优化从u能到达的未访问结点v与集合S的最短距离。伪代码...原创 2019-02-09 11:12:30 · 678 阅读 · 0 评论 -
Dijkstra算法模板及其优先队列优化~~
Dijkstra算法:用于解决 非负路权 单源 最短路问题无优化的Dijkstra算法int N, G[maxn][maxn] = { 0 }; //N为结点数目(编号0 ~ N-1)int d[maxn], pre[maxn]; //G为邻接矩阵,G[u][v]=0表示 u、v无通路bool vis[maxn] = { false };void Dijkstra(i...原创 2019-02-08 12:27:26 · 1632 阅读 · 4 评论 -
DP背包问题的 恰好装满 问题 ~~
背包问题中有时候会限定要 恰好装满。现预定义一个无限大#define INF 一个足够大的数这里以恰好装满的01背包为例:求最大值:要求在恰好装满的情况下求最大值。那么要对dp数组进行如下初始化: int dp[maxn]; fill(dp,dp+maxn,-INF); dp[0]=0;那么最终若 dp[j] &amp;amp;amp;amp;amp;lt; 0,则说明容量为 j 的背包无法被恰好装满。为...原创 2019-02-21 13:50:13 · 3285 阅读 · 6 评论 -
初识DP-01背包问题及其空间优化
01背包是经典的DP问题,个人是看这位的blog看懂的:点这里~~~~~~感觉这个讲的十分详细,很好理解。借一个例题来示范吧(洛谷 P1049 装箱问题)题目描述:有一个箱子容量为 V(正整数,0 ≤ V ≤ 20000),同时有n个物品(0&lt; n ≤30),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式:1个整数...原创 2018-11-29 17:28:32 · 384 阅读 · 0 评论 -
DP背包问题模板:01背包 与 完全背包
01背包问题:有n件物品,每件物品的重量为w[i],价值为c[i]。现有一个容量为V的背包,问如何选取物品放入背包,使得背包内物品的总价值最大。其中每种物品只有1件。dp[i][j]:前 i 件物品装入容量为 j 的背包中得到的最大价值对第 i 件物品,有2种前状态:a. 选择第 i 件物品,则 dp[i][j] = dp[i-1][ j-w[i] ] + c[i]b. 不选择第 ...原创 2019-02-19 16:19:40 · 577 阅读 · 0 评论 -
[牛客竞赛] 小A的柱状图(单调栈模板题)
链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网题目描述柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的柱状图,它的每个矩形下端的宽度可以是不相同的一些整数,分别为a[i],每个矩形的高度是h[i],现在小A只想知道,在这个图形里面包含的最大矩形面积是多少。输入描述:一行一个整数N,表示长...原创 2019-04-13 19:51:23 · 377 阅读 · 0 评论 -
区间动态查询问题——线段树模板
一、定义线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。线段树的每一个结点都保存一条线段(即一个区间),对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。特性:时间复杂度:建...原创 2019-05-03 15:32:56 · 246 阅读 · 0 评论 -
洛谷 P1020 导弹拦截(LIS,Dilworth定理)
链接:P1020题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是 \le 50000≤50000的正整数),计算这套系...原创 2019-02-17 13:22:32 · 583 阅读 · 0 评论 -
求树上结点的两两距离和——DFS求解
对于一颗N个结点的树,其N-1条边有各自的边权(长度),求树上所有结点两两之间的距离和,即:∑i=1n−1∑j=i+1ndistance(i,j)\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}distance(i,j)i=1∑n−1j=i+1∑ndistance(i,j)分析:要求求 一棵N个结点的树 上 所有的任意两点之间的距离和;那么 任意一条边对距离和的贡...原创 2019-07-18 15:51:43 · 1596 阅读 · 0 评论 -
网络流模板 —— Dinic算法(弧优化),最小费用最大流
学了几天感觉对网络流算是入门了,稍稍整理一下,同时在学习网络流的过程中看到了三篇别人很不错的blog(如下)感谢 ~~网络流相关定义及原理:https://www.cnblogs.com/rmy020718/p/9546071.htmlDinic算法+弧优化:https://www.cnblogs.com/SYCstudio/p/7260613.html网络流常见建模方法:https://...原创 2019-07-06 09:48:11 · 850 阅读 · 1 评论 -
树的重心——DFS求解
定义:树的重心也叫树的质心。对于一棵树n个节点的无根树,找到一个点,使得把树变成以该点为根的有根树时,最大子树的结点数最小。换句话说,删除这个点后最大连通块(一定是树)的结点数最小。性质:树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个距离和,他们的距离和一样。把两棵树通过一条边相连,新的树的重心在原来两棵树重心的连线上。一棵树添加或者删除一个节点,树的重心最多只移...原创 2019-07-15 15:28:19 · 1144 阅读 · 1 评论 -
J Prime Game(数学,思维,拆分素因子)
题意:分析:因为是相乘,所以乘得结果的素因子即是原序列各元素的素因子,那么对于任意不同的素因子,则需要求得其在所有的 fac(i, j)——对应 [i, j] 中出现的次数,或者说给最终结果贡献了多少。以样例2为例,对于素因子 '2’包括素因子’2’ 的数6, 4, 8, 12,其对应的位置下标分别为1, 5, 9, 10对于第1个数 ‘6’(位置下标为1):贡献的区间有:[1...原创 2019-07-05 16:49:10 · 767 阅读 · 0 评论