随笔分类 -  ACM_算法模版

摘要://接口:Gauss();解存在x数组中。equ,var分别表示方程个数和变量的个数,(因为是变量 的个数不算常数的个数)要赋值。a就是行列式,其中常数是在方程右侧的符号。 int const maxn = 2000; const double eps=1e-10; double a[maxn][m 阅读全文
posted @ 2016-10-31 16:30 __560 阅读(419) 评论(0) 推荐(0)
摘要:就用spoj1812的代码做模版吧。。。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a)) using namespace std; typede 阅读全文
posted @ 2016-05-04 00:27 __560 阅读(536) 评论(0) 推荐(0)
摘要:如果不算pre指针的话后缀自动机就是一个DAG,这是它能很方便地进行dp的前提。 而pre指针返回什么呢,返回的就是上一个的前缀包含改结点所代表子串的那个后缀,和AC自动机上的fail指针很像,都是为了匹配。我目前学得不深,看不出和AC自动机的fail指针有什么区别,用起来也几乎一样。 相比于字典树 阅读全文
posted @ 2016-05-04 00:26 __560 阅读(834) 评论(0) 推荐(0)
摘要:每次合并两个同余模方程,然后用exgcd解即可。 ll LCM(ll a,ll b) { return a/__gcd(a,b)*b; } void exgcd(ll a,ll b,ll &d,ll &x,ll &y) { if(b==0){ x=1;y=0;d=a; return; } exgcd 阅读全文
posted @ 2016-04-18 12:24 __560 阅读(619) 评论(0) 推荐(0)
摘要:len[u]表示结点u所表示的回文串长度,cnt[u]表示结点u所表示的回文串出现次数,num[u]表示结点u的后缀回文串个数(包括自己)。 由于一个字符串本质不同的回文串最多不超过n个,所以空间开n+2即可,算上每个结点的26个Next指针,空间复杂度o(26*n)。时间复杂度o(n)。 stru 阅读全文
posted @ 2016-04-07 00:36 __560 阅读(365) 评论(0) 推荐(0)
摘要:/// D-MST struct Edge { int u,v,w; };Edge e[maxn];int en; int in[25100]; int pre[25100],ID[25100],vis[25100]; /// D-MST 点的标号必须是0~N-1,不能改为0~N或1~N int D 阅读全文
posted @ 2016-04-05 12:10 __560 阅读(328) 评论(0) 推荐(0)
摘要:double F(double x) { } /// simpson求定积分 double simpson(double a,double b,double tk,double ta,double tb) { double c=a+(b-a)/2; return (F(a)+4*F(c)+F(b)) 阅读全文
posted @ 2016-03-28 15:04 __560 阅读(597) 评论(0) 推荐(0)
摘要:如果写二维线段树区间RMQ,不能单点更新的话,那么和咸鱼有什么区别。 所以弄了一个下午,终于把更新弄出来了。。。 这个是这样的,既然是单点更新,一定会更新到最底层,因此先更新到第一维的最底层,在到第二维一直更新到那个点,然后由那个点一直分两个方向更新上来。 这样的话就不要把第二维弄成结构体了,因为要 阅读全文
posted @ 2016-03-05 18:30 __560 阅读(329) 评论(0) 推荐(0)
摘要:如果是小数的话不要用EPS,直接循环上1000次。。。 这里是整数,需要注意三分的过程是取不到端点值的,所以需要一开始特判端点,而一开始特判端点又会在l>r时出错,所以也需要特判l>r的情况。 ll bin3(int l,int r) { if(l>r) return -INF; ll res=ma 阅读全文
posted @ 2016-03-04 17:34 __560 阅读(980) 评论(0) 推荐(1)
摘要:LCT维护边权势把每条边都当成一个点赋予点权,原来的点当然也保留,如果求和点权赋为0,求max点权赋为-INF,如果都要求,那就弄两三个点权。 需要注意的是,LCT的link操作必须换根,如果不把x设为根而直接pre[x]=y的话,结果并不是连接x和y而是连接x的splay的根和y。在弹飞绵羊的题中 阅读全文
posted @ 2016-03-02 13:31 __560 阅读(298) 评论(0) 推荐(0)
摘要:1500: [NOI2005]维修数列 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 10482 Solved: 3234[Submit][Status][Discuss] Description Input 输入的第1 行包含两个数N 和M(M ≤20 阅读全文
posted @ 2016-02-22 18:14 __560 阅读(279) 评论(0) 推荐(0)
摘要:割点: int n; vector<int> G[maxn]; int pre[maxn],low[maxn]; int dfs_clock; bool iscut[maxn]; void init() { MS0(pre);MS0(iscut); dfs_clock=0; } int dfs(in 阅读全文
posted @ 2016-02-16 14:35 __560 阅读(286) 评论(0) 推荐(0)
摘要:struct Edge { int from,to,cap,flow; }; struct Dinic { int n,m,s,t; vector<Edge> edges; vector<int> G[maxn]; bool vis[maxn]; int d[maxn]; int cur[maxn] 阅读全文
posted @ 2016-02-15 16:45 __560 阅读(238) 评论(0) 推荐(0)
摘要:支持多重边,按字典序输出。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a)) using namespace std; typedef long 阅读全文
posted @ 2016-02-13 16:10 __560 阅读(436) 评论(0) 推荐(0)
摘要:网上找的模版实在是用不惯。。无奈自己写了一个。。。 下面是系数矩阵n*n,增广矩阵n*(n+1)。 最后结果为 z[i]= y[i]/x[i] ,即 x[i] * z[i] =y[i] .矩阵如下 x1 z1 y1 x1 z1 y1 x2 * z2 = y2 或 0 * z2 = 0 x3 z3 = 阅读全文
posted @ 2016-02-12 19:48 __560 阅读(220) 评论(0) 推荐(0)
摘要:用可持久化线段树维护可持久化并查集。 调了一下午,改为按秩合并就过了。。。 没路径压缩的: #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a)) us 阅读全文
posted @ 2016-02-04 19:26 __560 阅读(294) 评论(0) 推荐(0)
摘要:poj2104 求区间第k大 可持久化线段树 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #define REP(i,a,b) for(int i=a;i<=b 阅读全文
posted @ 2016-02-04 17:43 __560 阅读(277) 评论(0) 推荐(0)
摘要:#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1000100; const int INF=1e9+10; /// 18位素数:154590409516822759 /// 19位素 阅读全文
posted @ 2016-02-02 02:38 __560 阅读(208) 评论(0) 推荐(0)
摘要:struct Edge { int from,to,cap,flow,cost; }; struct MCMF { int n,m,s,t; vector<Edge> edges; vector<int> G[maxn]; int inq[maxn]; int d[maxn]; int p[maxn 阅读全文
posted @ 2016-01-31 17:16 __560 阅读(283) 评论(0) 推荐(0)
摘要:树链剖分 模版#include#define lson l,m,rt G[maxn];int dep[maxn],son[maxn],fa[maxn],siz[maxn];int top[maxn];int id[maxn];int num;int val[maxn];struct Tree{ ... 阅读全文
posted @ 2015-09-01 23:25 __560 阅读(264) 评论(0) 推荐(0)