
模板
文章平均质量分 72
yamiedie_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(模板)Fib循环节
#include #include #include #include #include using namespace std; #define LL long long const int M = 2; struct mat { LL a[M][M]; }; mat A, I = {1, 0, 0, 1}; mat multi(mat a, mat b, LL mod) {原创 2014-10-13 23:18:36 · 574 阅读 · 0 评论 -
(模板)treap
struct node { int ch[2], r, v, s, cnt; node() {} node(int v):v(v) { ch[0] = ch[1] = 0, r = rand(), s = 1; cnt = 1; } }p[mxn*20]; int sz; int creat(int v) { ++ sz; p[sz] = node(v); return sz原创 2014-10-13 23:14:39 · 593 阅读 · 0 评论 -
(模板)米勒罗宾素数测试
LL prime[6] = {2, 3, 5, 233, 331}; LL qpow(LL a, LL n, LL mod) { LL ret = 1; while(n) { if(n & 1) ret = ret * a % mod; a = a * a % mod; n >>= 1; } return ret; } bool Miller_Rabin(LL p) { if原创 2014-10-13 23:20:39 · 5999 阅读 · 0 评论 -
(模板)java文件读写与保留小数
import java.io.*; import java.util.*; import java.math.*; import java.text.*; public class Main { public static void main(String args[]) throws IOException { Scanner cin = new Scanner(new F原创 2015-08-30 15:21:32 · 725 阅读 · 0 评论 -
(模板)最大权闭合图
最大权闭合图: 在一个有向点带权图中,点权为w[],选取一些点构成集合,记为V,且集合中的出边(即集合中的点的向外连出的弧), 所指向的终点(弧头)也在V中,则我们称V为闭合图。 最大权闭合图即在所有闭合图中,集合中点的权值之和最大的V,我们称V为最大权闭合图。 解法: 添加源点S和汇点T,对每个权值为正的点u,连边(S,u),流量为w[u], 对权值为负的点u,连边(u,T),流量为原创 2015-08-30 15:04:27 · 416 阅读 · 0 评论 -
(模板)FFT
const double Pi = acos(-1.0); struct complex { double r, i; complex(double r = 0, double i = 0):r(r), i(i) {} complex operator + (const complex &ot) const { return complex(r + ot.原创 2015-09-22 13:13:12 · 669 阅读 · 0 评论 -
(模板)NTT
//const LL P = 50000000001507329LL; //190734863287 * 2 ^ 18 + 1 常数巨大 //const int P = 1004535809LL; //479 * 2 ^ 21 + 1 const int P = 1004535809; // 119 * 2 ^ 23 + 1 const int G = 3; int a[N], b[N]; in原创 2015-09-22 13:15:28 · 1328 阅读 · 0 评论 -
预处理伯努利数(多项式求逆)
伯努利数定义: 递推式: 将e^t展开得到: 然后就可以利用多项式逆元求出伯努利数了。。 多项式逆元就是给定一个n次多项式A(x),求另一个多项式B(x),满足 其中mod x^n表示多项式除以x^n剩余的多项式,这里可以看成做卷积之后去掉大于等于n次的项。 假设已经求得B(x)满足: 要求另一个B'(x)满足: 详情见: Inverse Element of Pol原创 2015-09-22 23:02:23 · 3003 阅读 · 0 评论 -
(模板)多项式乘法对任意数取模
// 多项式乘法 系数对MOD=1000000007取模, 常数巨大,慎用 // 只要选的K个素数乘积大于MOD*MOD*N,理论上MOD可以任取。 #define MOD 1000000007 #define K 3 const int m[K] = {1004535809, 998244353, 104857601}; #define G 3 int qpow(int x, int k,原创 2015-11-02 23:28:17 · 2825 阅读 · 0 评论 -
单纯形模板
#include #include #include #include #include #include using namespace std; #define N 1002 #define M 1020 #define inf 0x3f3f3f3f #define eps 1e-8 struct SIMPLEX { // AX <= B // minimize C^T原创 2016-04-05 19:54:18 · 689 阅读 · 0 评论 -
hdu 1533 Going Home (zkw + spfa和slf优化)
#include #include #include #include #include #include #include using namespace std; #define N 1002 #define M 500020 #define inf 0x3f3f3f3f #define eps 1e-8 #define inf 0x3f3f3f3f int n; in原创 2016-04-07 14:46:52 · 585 阅读 · 0 评论 -
(模板)最小树形图
/* 朱刘算法, 复杂度O(VE), 源点不能到达其他点返回-1; */ int n, m; int A[M], B[M], C[M]; int in[N], pre[N], id[N], vis[N]; int DMST(int s, int n) { int ret = 0; while(1) { for(int i = 1; i <= n; ++i) in原创 2015-08-30 13:40:14 · 445 阅读 · 0 评论 -
hdu 4010 Query on The Trees (lct模板)
#include #include #include #include using namespace std; #define mxn 300020 #define mxe 600020 #define inf 0x3f3f3f3f int fst[mxn], nxt[mxe], to[mxe], e; int tot, pre[mxn], ch[mxn][2], key[mxn];原创 2015-04-09 14:26:47 · 492 阅读 · 0 评论 -
(模板) dinic
#define mxn 100020 #define mxe 200020 #define inf 0x3f3f3f3f struct edge { int u, v, cap, flow, nxt; void set(int _u, int _v, int _cap, int _flow, int _nxt) { u = _u, v = _v, cap = _cap, flow = _原创 2014-10-14 00:01:07 · 647 阅读 · 0 评论 -
(模板)后缀数组(lcp和rmq)
char s[mxn]; int sa[mxn], t[mxn], t2[mxn], c[mxn], f[mxn][20], ft[mxn]; int Rank[mxn], height[mxn]; void get_sa(int m, int n) { //n = strlen(s) + 1; int i, *x = t, *y = t2; for(i = 0; i < m; ++i) c原创 2014-10-13 23:09:49 · 706 阅读 · 0 评论 -
(模板)AC自动机
struct trie { int ch[mxnode][26], lst[mxnode], cnt[mxnode], f[mxnode], sz; int creat() { memset(ch[sz], -1, sizeof(ch[sz])); cnt[sz] = 0; return sz++; } void init() { sz = 0, creat(); }原创 2014-10-13 23:09:24 · 531 阅读 · 0 评论 -
(模板)c++ 大数(正数加减乘除)
char ip[mxn]; struct bign { int len, dig[mxn]; bign() { len = 0, dig[0] = 0; } bool input() { if(scanf("%s", ip) == EOF) return 0; if(strcmp(ip, "0") == 0)原创 2014-10-13 23:06:07 · 976 阅读 · 0 评论 -
(模板)JAVA 大数的使用
import java.util.*; import java.math.*; public class Main { public static void main(String args[]) { int a = 102; BigInteger x = BigInteger.valueOf(a); Scanner cin = new Scanner(System.in);原创 2014-10-13 23:06:01 · 588 阅读 · 0 评论 -
(模板)广义fib循环节
// f(n) = a * f(n - 1) + b * f(n - 2); // f(1) = c, f(2) = d // 可忽略 // 求f(n)mod p循环节长度 //c = a * a + 4b是模p的二次剩余时,枚举n = p - 1的因子 // 否则 枚举n=(p+1)(p-1)的因子 // 这里 p = 1000000007 #include #include #in原创 2014-10-13 23:19:10 · 816 阅读 · 0 评论 -
(模板)KMP
char t[mxn], s[mxn]; //t模板串,下标0开始 int f[mxn], n; void get_f() { f[0] = f[1] = 0; for(int i = 1; t[i]; ++i) { int j = f[i]; while(j && t[i] != t[j]) j = f[j]; f[i+1] = t[i] == t[j]? j + 1: 0;原创 2014-10-13 23:08:54 · 475 阅读 · 0 评论 -
(模板)dlx 精确覆盖和重复覆盖
精确覆盖 #define mxn 1120 #define N 1000200 int n, m, t, size; int U[N], D[N], L[N], R[N], C[N], Row[N]; int H[mxn], S[mxn]; void init(int n, int m) { for(int i = 0; i <= m; ++i) { S[i] = 0, D[i] =原创 2014-10-15 11:26:05 · 1194 阅读 · 0 评论 -
(模板)isap
struct edge { int u, v, cap, flow, nxt; void set(int _u, int _v, int _cap, int _flow, int _nxt) { u = _u, v = _v, cap = _cap, flow = _flow, nxt = _nxt; } }; struct isap { int n, s, t, fst[mxn],原创 2014-10-14 20:46:36 · 524 阅读 · 0 评论 -
(模板)逆元
int exgcd(int a, int b, int &x, int &y) { int d = a; if(b != 0) { d = exgcd(b, a % b, y, x); y -= a / b * x; } else x = 1, y = 0; return d; } int mod_inverse(int a, int m) { int x, y; exgcd原创 2014-10-14 21:45:45 · 687 阅读 · 0 评论 -
(模板) MCMF SPFA
struct edge { int u, v, cap, flow, cost, nxt; void set(int _u, int _v, int _cap, int _flow, int _cost, int _nxt) { u = _u, v = _v, cap = _cap, flow = _flow, cost = _cost, nxt = _nxt; } }; struct原创 2014-10-14 21:34:27 · 1208 阅读 · 0 评论 -
(模板) NTT long long 版
const LL P = 50000000001507329LL; //190734863287 * 2 ^ 18 + 1 //const int P = 1004535809LL; //479 * 2 ^ 21 + 1 //const int P = 1004535809; // 119 * 2 ^ 23 + 1 const int G = 3; LL a[N], b[N]; LL wn[25原创 2015-09-22 13:34:36 · 1888 阅读 · 0 评论