
模板
jesHrz
这个作者很懒,什么都没留下…
展开
-
扩展欧几里德
扩展欧几里得 求解不定方程 ax+by=gcd(a, b) 的整数解对于方程 ax+by=c, 如果 gcd(a, b)|c, 则有解, 解为 ax+by=gcd(a, b) 的解乘以 c/gcd(a, b); 否则无解long long exgcd(long long a, long long b, long long& x, long long &y){ i...原创 2018-08-21 12:50:00 · 131 阅读 · 0 评论 -
BZOJ-2286 虚树+树形dp
题目链接题意一棵有n个节点的无向树,根节点为1,告诉你k个关键节点,现在要割断一些边使得这k个点与根节点不连通,求割掉的边的最小边权和。思路记录dis[v]表示点1到点v的路径中最小的边权。如果u是关键节点,dp[u] = dis[u],否则dp[u] += min(dis[v], dp[v])使用虚树优化。虚树仅仅记录了关键节点和他们的lca代码#include <bits...原创 2019-04-23 20:07:54 · 171 阅读 · 0 评论 -
POJ - 2689 区间筛素数(模板)
题目链接题意给定区间[l, r],长度小于1e6,l和r小于1e9,问这个区间中相邻两个素数差值的最大值和最小值。如果只有一个素数或者没有素数则输出There are no adjacent primes.思路模板题因为每个合数x都有一个小于x\sqrt{x}x的因子,所以只要筛出[2,r][2, \sqrt{r}][2,r]之间的素数,然后枚举素数p,把这个区间中p的倍数全部筛掉即...原创 2019-03-06 08:19:28 · 315 阅读 · 0 评论 -
计算几何 模板
#include &lt;cmath&gt;#include &lt;iostream&gt;#include &lt;vector&gt;typedef double db;const db eps = 1e-9;const db pi = acos(-1);// 判断符号inline int sign(db a) { return a &lt; -eps ? -1 : a &原创 2019-02-27 20:19:41 · 197 阅读 · 0 评论 -
字符串匹配 之 KMP 算法
作为NOIP选手竟然是第一次接触KMP算法,我是个辣鸡。。参考文章链接: https://www.cnblogs.com/c-cloud/p/3224788.html从长度为n的字符串str中查找是否包含长度为m的字符串ptr最容易想到的就是遍历str,如果str的第i个字符与ptr第一个字符匹配则再去匹配ptr中剩余的字符,如果匹配失败,就回溯继续匹配str的第i+1个字符。这样时间复...原创 2017-11-11 11:28:00 · 118 阅读 · 0 评论 -
最短路 模板
堆优化的Dijkstra NlogN 邻接表#include &lt;utility&gt;#include &lt;queue&gt;typedef std::pair&lt;int, int&gt; P; //first为点的编号, second为边的权值const int N = 100005;int dis[N];vector&lt;P&gt;e[N];原创 2019-02-27 18:21:41 · 230 阅读 · 0 评论 -
C++快速读入
namespace IO{ inline char nc() { static char buf[100000], *p1 = buf, *p2 = buf; return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1+...原创 2018-08-05 12:20:00 · 1015 阅读 · 0 评论 -
线段树 + 树状数组 + ST表 模板
线段树区间修改+区间求和 logNconst int N = 1e5 + 5;int a[N];namespace SEG{ struct tag { long long sum; long long lazy; } c[N << 2]; void pushDown(int k, int l, int r)...原创 2018-08-07 15:21:00 · 260 阅读 · 0 评论 -
LCA倍增 模板
LCA倍增 最近公共祖先构造 NlogN 查询 ogN先调用pre()构造对数数组 再调用dfs(root, 0, 0)查询深度 再调用work()构造跳表最后调用lca(u, v)查询在有根树中节点u和v的最近公共祖先const int N = 10005;struct edge { int to, next; } e[N << 1];int n, head[...原创 2018-08-08 13:56:00 · 136 阅读 · 0 评论 -
网络流 模板
Dinic+当前弧优化 O(n^2m)链式前向星的下标要从偶数开始,head初始化为-1const int N = 105;struct edge { int to, next, flow; }e[N*N*2];int cnt, head[N];namespace MaxFlow{ int cur[N], depth[N]; int dfs(int u, int ...原创 2018-08-11 15:04:00 · 114 阅读 · 0 评论 -
组合数 模板
Lucas定理 mod小于10^5namespace Lucas{ inline long long qpow(long long a, long long x, long long mod) { long long res = 1; while (x) { if (x & 1) res = ...原创 2018-08-20 16:27:00 · 121 阅读 · 0 评论 -
Gym - 100889H Hitting Points 计算几何+三分+二分
题目链接Hitting Points题意按逆时针顺序给你二维平面上严格凸包的n个点,编号0到n-1, 有q次询问, 每次询问确定一个编号为idx的基础点, 以idx和(idx+1)%n构成的向量为x轴, 在(k,0)这个点上有一条垂直于x轴的线绕(k,0)这个点逆时针旋转, 问第一次碰到的点的编号是多少. 如果碰到两个点就输出两个答案.做法考虑落到每一个点的时候有多少点在线的上方, 这...原创 2019-07-27 10:41:24 · 195 阅读 · 0 评论