模板自用
ordinarv
努力才是人生的常态
展开
-
线段树
模板原创 2019-11-18 23:39:58 · 180 阅读 · 0 评论 -
树链剖分模板
//test 洛谷模板题 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> piir; const int maxn = 1e5+5; int n,m,r,mod; ll wt[maxn],w[maxn]; struct node{ i...原创 2019-11-18 23:39:26 · 186 阅读 · 0 评论 -
树链剖分模板
测试题目P3384 【模板】树链剖分 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> piir; const int maxn = 1e5+5; int n,m,r,mod; ll wt[maxn],w[maxn];//点权 struct...原创 2019-11-15 12:34:13 · 152 阅读 · 0 评论 -
点分治
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 1e5+5; /* sz[x] 表示以x为根的子树的size使多少 son[x]表示x的儿子中size最大的是 rt 是我们要找的重心 all 当前子...原创 2019-10-10 22:27:15 · 103 阅读 · 0 评论 -
__int128
void scan(__int128 &x) { x = 0; int f = 1; char ch; if((ch = getchar()) == '-') f = -f; else x = x*10 + ch-'0'; while((ch = getchar()) >= '0' && ch <= '9') ...原创 2019-10-05 23:19:49 · 146 阅读 · 0 评论 -
Dinic模板
#include<bits/stdc++.h> #define mk make_pair using namespace std; typedef long long ll; const double PI = acos(-1.0); const double eps = 1.0e-8; const int INF = 0x3f3f3f3f; const int maxn = 1...原创 2019-09-06 22:04:34 · 95 阅读 · 0 评论 -
HDU-4857逃生
逃生 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命。但是逃命的通道很窄,大家只能排成一行。 现在有n个人,从1标号到n。同时有一些奇怪的约束条件,每个都形如:a必须在b之前。 同时,社会是不平等的,这些人有的穷有的富。1号最富,2号第二富,以此类推。有钱人就贿赂负责人,所以他们有一...原创 2019-02-17 17:58:37 · 208 阅读 · 0 评论 -
后缀数组(Suffix Array)
前言 SA是一种解决多模板匹配问题的算法。大致就是将后缀处理出来然后按照字典序排个序。时间主要浪费在排序上。 sa数组sa[i]表示rk为i的后缀的开始位置。 rk数组rk[i]表示以i位置开始的后缀的rank为多少。 基数排序 先排个位,然后十位依次往下,稳定算法。 模板 const int N = 1e6 + 5; // 开二倍吧 int sa[N], rk[N], Height...原创 2019-08-24 17:29:42 · 249 阅读 · 0 评论 -
树状数组
树状数组是一个查询和修改复杂度都为log(n)的数据结构, 单点修改、区间询问 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int MAX_N=32005; const int maxn=15010; int n,tre[MAX_N]; ...原创 2018-07-21 20:46:52 · 98 阅读 · 0 评论 -
HDU-1535Invitation Cards(链式向前星+dijkstra堆优化)
HDU-1874畅通工程续 题目链接 板子 #include<iostream> #include<cstring> #include<queue> #include<utility> #define mk make_pair using namespace std; const int maxn = 1e3+5; const int INF...原创 2019-04-04 14:14:42 · 170 阅读 · 0 评论 -
快速幂、快速乘法(mod)
快速幂 由于*的优先级高于%所以不用加括号,但是+优先级却低于% 原理 ,11的二进制是1011,So 我们将其转化为。 &1就是取该数二进制的最后一位。 typedef long long ll; ll q_pow(ll x,ll y){ ll ans=1; while(y){ if(y&1) ans*=x;//判断n的二进制是否为1 x*=x...原创 2018-08-06 16:12:48 · 1124 阅读 · 0 评论 -
输入挂
一 inline ll read(){ char c=getchar();ll f=1,x=0; while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')x=x*10+(c-'0'),c=getchar(); return x*f; } ...原创 2018-12-07 10:36:19 · 184 阅读 · 0 评论