07 2022 档案

摘要:数论学习笔记 整除性 \(def_0\):\(a\) 整除$b$指,若$a,b$为整数且$a \ne 0$ 存在整数$c$ 使得$b = ac$。称$a$是$b$的因子,$b$是$a$的倍数 记作$a|b$ 。如$13|182,-5|10...$ 对于$a,b,c\in\Z$ 有以下几个结论 若$b 阅读全文
posted @ 2022-07-28 14:11 Erfu 阅读(120) 评论(0) 推荐(0)
摘要:网络流 网络指$(Flow Network)$有向图$G= (V,E)$ 每条边都有权值$(x,y)\in E$都有一个给定的值称为$c(x,y)$,若$(x,y) \notin E$则$c(x,y) = 0$,特别的有:$S \in V$和$T \in V(S \ne T)$,称为源点和汇点。 $ 阅读全文
posted @ 2022-07-26 20:56 Erfu 阅读(129) 评论(0) 推荐(0)
摘要:Johnson Johnson算法是一种Donald B. Johnson在1977年发布的:在边加权有向图中找到所有顶点对之间最短路径的算法。 jonhnson允许某些边权重为负数,但不能是负环。 通过使用Bellman-Ford 算法来计算输入图的转换,以消除所有负权重,从而允许在转换后的图上使 阅读全文
posted @ 2022-07-26 12:22 Erfu 阅读(396) 评论(0) 推荐(0)
摘要:摘抄自 #include <bits/stdc++.h> using namespace std; #define debug(x) cout << #x << "=" << x << endl; const int N = 1e4 + 5; int n, m, cn, col[N]; int a[ 阅读全文
posted @ 2022-07-24 12:57 Erfu 阅读(27) 评论(0) 推荐(0)
摘要:7-23洛谷做题记录 P1359 租用游艇 DP求或最短路 #include <bits/stdc++.h> using namespace std; int f[210],i,j,k,n; int main() { cin >> n; for(int i = 1 ; i <= n ; i ++ ) 阅读全文
posted @ 2022-07-23 17:40 Erfu 阅读(101) 评论(0) 推荐(0)
摘要:左偏树学习笔记 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int fa[N],ls[N],rs[N],dist[N],val[N],id[N]; bool del[N]; int n,m,cnt; int 阅读全文
posted @ 2022-07-23 16:47 Erfu 阅读(38) 评论(0) 推荐(0)
摘要:【模板】欧拉路径 求有向图字典序最小的欧拉路径。 如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。 如果一个回路是欧拉路径,则称为欧拉回路(Euler circuit)。 简单的来地讲,就是一笔画问题。 欧拉图的判定 最多只有一个顶点的出度与入度差为1 。 最多 阅读全文
posted @ 2022-07-21 13:18 Erfu 阅读(299) 评论(0) 推荐(0)
摘要:【模板】有理数取余 题目描述 给出一个有理数 $c=\frac{a}{b}$,求 $c \bmod 19260817$ 的值。 这个值被定义为 $bx\equiv a\pmod{19260817}$ 的解。 有理数取余 $$\frac{a}{b} \mod p = a \times b^{-1}$$ 阅读全文
posted @ 2022-07-19 12:00 Erfu 阅读(65) 评论(0) 推荐(0)
摘要:Treap Treap(树堆)是一种 弱平衡 的 二叉搜索树。它同时符合二叉搜索树和堆的性质,名字也因此为 tree(树)和 heap(堆)的组合。 -oiwiki 二叉搜索树的特点是:左节点比父点大,右节点比父小。 堆的特点是 朴素二叉搜索树的问题。在给朴素搜索树插入一个新节点时,我们需要从这个搜 阅读全文
posted @ 2022-07-18 19:40 Erfu 阅读(34) 评论(0) 推荐(0)
摘要:Tarjan Robert E. Tarjan(罗伯特·塔扬,1948~),生于美国加州波莫纳,计算机科学家。 Tarjan 发明了很多算法和数据结构。不少他发明的算法都以他的名字命名,以至于有时会让人混淆几种不同的算法。比如求各种连通分量的 Tarjan 算法,求 LCA(Lowest Commo 阅读全文
posted @ 2022-07-18 16:52 Erfu 阅读(144) 评论(0) 推荐(0)
摘要:【模板】差分约束算法 题目描述 给出一组包含 $m$ 个不等式,有 $n$ 个未知数的形如: $$ \begin{cases} x_{c_1}-x_{c'1}\leq y_1 \x{c_2}-x_{c'2} \leq y_2 \ \cdots\ x{c_m} - x_{c'_m}\leq y_m\e 阅读全文
posted @ 2022-07-18 11:55 Erfu 阅读(43) 评论(0) 推荐(0)
摘要:【模板】负环 题目描述 给定一个 $n$ 个点的有向图,请求出图中是否存在从顶点 $1$ 出发能到达的负环。 负环的定义是:一条边权之和为负数的回路。 本题单测试点有多组测试数据。 输入的第一行是一个整数 $T$,表示测试数据的组数。对于每组数据的格式如下: 第一行有两个整数,分别表示图的点数 $n 阅读全文
posted @ 2022-07-18 11:04 Erfu 阅读(60) 评论(0) 推荐(0)
摘要:康托展开 题目描述 求 $1\sim N$ 的一个给定全排列在所有 $1\sim N$ 全排列中的排名。结果对 $998244353$ 取模。 设全排列$A = [3,2,5,4,1]$ 第1位3,比$3$小的数有$2,1$。$2 \times 5!$。 第2位2,比二小的数为$1$,已经被处理过了 阅读全文
posted @ 2022-07-17 18:30 Erfu 阅读(40) 评论(0) 推荐(0)
摘要:给定 $n$ 个正整数 $a_i$ ,求它们在模 $p$ 意义下的乘法逆元。 由于输出太多不好,所以将会给定常数 $k$,你要输出的答案为: $$\sum\limits_{i=1}^n\frac{k^i}{a_i}$$ 答案对 $p$ 取模。 逆元 已知求逆元的方法有快速幂$a^{-1} = pow 阅读全文
posted @ 2022-07-17 17:31 Erfu 阅读(46) 评论(0) 推荐(0)
摘要:#include <bits/stdc++.h> using namespace std; int gcd(int x,int y){ return y?gcd(y,x%y):x; } int main() { int n; cin >> n; for(int i = 1,x,ans = 0; i 阅读全文
posted @ 2022-07-17 16:31 Erfu 阅读(26) 评论(0) 推荐(0)
摘要:LCA最近公共祖先 对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u和v的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先。-百度百科 先DFS求出每个点的深度,在通过倍增向上爬。$O(n\log{n})$预处理,$O(\log n)$查询 #in 阅读全文
posted @ 2022-07-17 13:38 Erfu 阅读(44) 评论(0) 推荐(0)
摘要:起因 最近要写LCA然后忘记了ST表这么写QWQ ST表是什么,ST基于倍增和二进制划分动态规划可以在$O(nlogn)$预处理下$O(1)$回答问题 用于解决可重复问题,如$RMQ$问题 模板题 预处理 设$f[i][j]$为$f[i][i + 2^j +1]$的最大值,即从$i$开始的$2^j$ 阅读全文
posted @ 2022-07-17 11:46 Erfu 阅读(119) 评论(0) 推荐(0)
摘要:本文整理自《算法竞赛进阶指南》IO.wiki 线段树一种用来维护区间信息的通用数据结构 线段树可以在 $O(log _n)$ 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。 线段树的建树 通过递归将值划分为大于1的若干个区间,把数列划分为树形结构,通过 阅读全文
posted @ 2022-07-15 15:47 Erfu 阅读(59) 评论(0) 推荐(0)
摘要:题目地址 标准完全背包 $$f[i] = max(f[i],f[i - v[i]] + w[i])$$ 思路见注释: #include <iostream> #include <cstring> using namespace std; const int N = 10000,M = 45; int 阅读全文
posted @ 2022-07-15 12:18 Erfu 阅读(49) 评论(0) 推荐(0)
摘要:题目地址 [USACO2.2]集合 Subset Sums 题目描述 对于从 $1\sim n$ 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果 $n=3$,对于 ${1,2,3}$ 能划分成两个子集合,每个子集合的所有数字和是相等的: ${3}$ 和 ${1,2 阅读全文
posted @ 2022-07-14 18:07 Erfu 阅读(88) 评论(0) 推荐(0)
摘要:题目地址 一道分组背包但是要改输入方式 #include <iostream> #include <cstring> using namespace std; const int N = 1001; int m,n; int f[N],v[N],w[N],b[N]; int g[350][350]; 阅读全文
posted @ 2022-07-14 16:58 Erfu 阅读(30) 评论(0) 推荐(0)
摘要:题目地址 题目大意:求$n$的错位排序数 有全排列$1\sim n,\left { 1,2,3,\dots ,n\right }$对于$a[i]\ne i$ 我们称为错位排列 有递推式 $$D_n = (n-1)(D_{n-1} + D_{n-2})$$ 证明: 设有$n$的全排列$\left{1, 阅读全文
posted @ 2022-07-13 13:30 Erfu 阅读(64) 评论(0) 推荐(0)
摘要:组合数1 给定 n 组询问,每组询问给定两个整数 a,b,请你输出 $C_a^{b}\bmod(10^9+7)$ 的值 数据范围 $$ 1≤n≤10000 $$ $$ 1≤b≤a≤2000 $$ ~~上过小学的应该都知道~~ $$ C_a^{b} = \frac{a\times (a - 1) \d 阅读全文
posted @ 2022-07-12 22:22 Erfu 阅读(25) 评论(0) 推荐(0)
摘要:容斥原理 韦恩图,对于3个圆 $$ \begin{array}{l} S_{ABC} = \ +S_1 + S_2 + S_3\ -S_1\cap S_2 -S_2\cap S_3 - S_3\cap S_1\ +S_1 \cap S_2 \cap S_3 \end{array} $$ 对于2个圆 阅读全文
posted @ 2022-07-12 22:21 Erfu 阅读(78) 评论(0) 推荐(0)
摘要:01 背包 有 $N$ 件物品和一个容量为 $M$ 的背包。第 $i$ 件物品的重量是 $W_i$,价值是 $D_i$。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 设DP状态为$f_{i,j}$表示在只能放前$i$个物品,容量为$j$的价值情况 考虑已经放了$i-1 阅读全文
posted @ 2022-07-12 22:19 Erfu 阅读(19) 评论(0) 推荐(0)
摘要:hash表 hash表 存储方式 开放寻址法 拉链法 字符串hash 离散化实际上就是一种特殊的哈希方式【单调递增】 拉链法 如果有一个数是冲突的,用一条链将他们栓起来,像邻接表一样 void insert(int x) { int k =((x % N) + N) % N; e[idx] = x; 阅读全文
posted @ 2022-07-12 22:16 Erfu 阅读(30) 评论(0) 推荐(0)