
模板
SwustLpf
长得帅~~~
展开
-
邻接表O(1)删除节点
文章目录邻接表建图删除节点代码我才知道链表有个O(1)O(1)O(1)的删除方法,而我们建图中常用的就是邻接表得哇邻接表建图比如我们要建这样一个单向图插入元素的过程是这样的,比如把⑤节点插入进去删除节点以前我就以为删除节点要从头结点开始找,找到之后才删除,这个方法的复杂度就是线性的然后今天才知道阔以O(1)O(1)O(1)删除,就是把后面的节点直接覆盖上去比如这里以删除③节点为...原创 2019-09-29 14:06:51 · 1290 阅读 · 0 评论 -
poj 2891 同余方程
像这种 X%8=7X%8=7X\%8=7 X%11=9X%11=9X\%11=9 求XXX等于多少?阔以写成: X=8k1+7X=8k1+7X=8k_1+7 X=11k2+9X=11k2+9X=11k_2+9 所以:8k1+7=11k2+98k1+7=11k2+98k_1+7=11k_2+9 即:8k1−11k2=28k1−11k2=28k_1-11k_2=2 这个式子我们就阔...原创 2018-06-12 16:41:21 · 351 阅读 · 0 评论 -
51nod 1023 石子归并 V3
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1023&judgeId=542658叫做:GarsiaWachs算法 就是加入有a,b,ca,b,ca,b,c三个先合并左边两个的代价是2a+ab+c2a+ab+c2a+ab+c,而先合并右边两个的代价是a+2b+2ca+2b+2ca+2b+2c,所以只用看a...原创 2018-05-26 11:29:17 · 305 阅读 · 0 评论 -
判断点是否在三角形内
https://www.nowcoder.com/acm/contest/118/C#include"bits/stdc++.h"using namespace std;struct Point{ double x,y; Point (){} Point(double x,double y):x(x),y(y){}};struct Vector{ P...原创 2018-05-15 20:17:35 · 337 阅读 · 0 评论 -
树状数组逆序数
#include"bits/stdc++.h"using namespace std;const int maxn=5e5+5;int tree[maxn],a[maxn],ori[maxn];int N;void Add(int pos,int v){ for(int i=pos;i<=N;i+=i&-i)tree[i]+=v;}int getsum(int...原创 2018-05-15 20:14:50 · 248 阅读 · 0 评论 -
LCS
O(n^2): 跟背包一样,这种信息全部记录下来的好处就是阔以回溯#include"cstring"#include"algorithm"#include"iostream"using namespace std;const int maxn=1e3+5;int dp[maxn][maxn];int vis[maxn][maxn];string s1,s2;void trac..原创 2018-05-21 13:41:51 · 173 阅读 · 0 评论 -
最长上升子序列(LIS)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1134&amp;judgeId=529543/*input:85 1 6 8 2 4 5 10output:5*/#include"bits/stdc++.h"using namespace std;const int maxn=1e5+5;int ...原创 2018-05-07 13:25:33 · 204 阅读 · 0 评论 -
对拍程序
原来还有这个好东西,感谢这位博主的分享~ https://blog.youkuaiyun.com/wlx65003/article/details/51149196一下是.bat文件,记下来以后好用:duipa_single.batrand.exe > in.txtmy.exe < in.txtstd.exe < in.txtmy.exe < in.txt >...原创 2018-05-06 20:50:54 · 590 阅读 · 0 评论 -
求组合数(费马小定理)
#include"iostream"using namespace std;const int maxn=1e3+5;const int MOD=1e9+7;int inv[maxn];//阶乘的逆元int fac[maxn];//阶乘long long ksm(long long a,long long b,long long mod){ long long res=1,b...原创 2018-05-04 16:48:36 · 836 阅读 · 1 评论 -
语法小技巧
1.可更改小数位数2.cout小数位数3.整数位数不够补04 mt199371.可更改小数位数void f(){ double a=sqrt(5); int r=4; while(cin>>r) printf("%.*f\n",r,a);}2.cout小数位数void f(){ ...原创 2018-05-04 13:01:10 · 253 阅读 · 0 评论 -
素数线性筛
#include"bits/stdc++.h"#include"iostream"using namespace std;const int maxn=1e6+5;vector &lt;int&gt;prime;bool vis[maxn];short mu[maxn];void Init(int NN){ memset(vis,1,sizeof(vis)); fo...原创 2018-07-16 15:08:00 · 207 阅读 · 0 评论 -
高级数论知识
1.范德蒙恒等式2.伯努利数求自然数幂的和1.范德蒙恒等式这位童鞋写得非常好~ Ckn+m=∑i=0kCinCk−imCn+mk=∑i=0kCniCmk−iC_{n+m}^k=\sum_{i=0}^kC_n^iC_m^{k-i} 甲班 nnn 个人,乙班 mmm 个人,从中选出 kkk 个人 甲班选 iii 个人,乙班选 mmm 个人,不同的 kkk 加起来...原创 2018-07-15 20:30:29 · 778 阅读 · 0 评论 -
莫比乌斯反演模板
做莫比乌斯的题所需要的代码:#include"bits/stdc++.h"#define C(n,m) ((long long)fac[(n)]*inv[(m)]%MOD*inv[(n)-(m)]%MOD)using namespace std;const int maxn=3e5+5;const int MOD=1e9+7;char mu[maxn];int sum[maxn...原创 2018-07-21 10:41:57 · 213 阅读 · 0 评论 -
【双向BFS模板】
文章目录原题链接:原题链接:https://ac.nowcoder.com/acm/contest/549/G是个裸的双向BFS的题,看到一份比较好的代码,我以前好像都是写的两个BFS的,而他这个写在一起了,而且更好得体现了一层一层的搜索的思想比如原来做题的时候就遇到过,因为我是 输出调试法来debug的,所以原来打印坐标的时候不知道这个点是在第几步搜出来的,其实搜完一层后,新加的就是下一...原创 2019-04-13 16:51:57 · 1050 阅读 · 0 评论 -
UVA-11297-Census 二维线段树单点修改【模板】
文章目录题目链接:题目链接:https://cn.vjudge.net/problem/UVA-11297这道题暴力阔以过原来我以前寒假集训的时候写的是个假的线段树T_T,只有一维是用了线段树,另一维是暴力,原来我一直都没学习到真正的二维线段树,原来上下建的线段树的每一段都要新建个左右的线段树#include"bits/stdc++.h"using namespace std;typ...原创 2018-12-01 11:52:52 · 261 阅读 · 0 评论 -
hdu2586 How far away【模板】求
文章目录题目链接:在线算法题目链接:题意:给一棵树,求节点u到v的最短距离弄一个dep[]数组,dep[u]表示u节点到根节点的深度,然后找到u和v节点的lcadis[u]表示到根节点的距离,答案就是dis[u]+dis[v]-dis[lca]*2在线算法求出dfs序,然后u的dfs序到v的dfs序中深度最小的那个就是lca,用RMQ来维护据说这道题数据很水,今天重新写的时候,我RM...原创 2018-11-29 16:44:54 · 184 阅读 · 0 评论 -
主席树求区间[L,R]内小于等于x的个数【模板】
文章目录题目链接:hdu4417题目链接:hdu 4417 Super Mario牛客小白月赛9 Ehdu4417/*主席树求[L,R]内小于等于x的个数*/#include"bits/stdc++.h"using namespace std;typedef long long LL;const int maxn=2e6+5;int Ls[maxn],Rs[maxn],tree...原创 2018-11-23 12:31:45 · 1298 阅读 · 0 评论 -
树链剖分【专题】
文章目录bzoj 1036 洛谷P2590 code[vs] 2460 树的统计洛谷 P3178 树上操作bzoj 1036 洛谷P2590 code[vs] 2460 树的统计code[vs] 2460洛谷P2590bzoj 1036好像bzoj上的数据比较多这道题注意可能是负数,因此求最大值的时候要初始化为-inf//#include"bits/stdc++.h"#include...原创 2018-11-19 16:08:57 · 215 阅读 · 0 评论 -
线性基【模板】
文章目录题目链接:题目链接:①:洛谷P3812②:牛客练习赛26D参考博客:https://www.cnblogs.com/olinr/p/9477787.html这位童鞋写得很好~求异或最大值#include"bits/stdc++.h"using namespace std;typedef long long LL;const int maxn=1e5+5;const i...原创 2018-11-04 14:39:00 · 210 阅读 · 0 评论 -
通用模板
数学组合数各种线性筛图论邻接表数学组合数#include"bits/stdc++.h"#define out(x) cout<<#x<<"="<<x#define C(n,m) (m>n?0:(long long)fac[(n)]*invf[(m)]%MOD*invf[(n)-(m)]%MOD)usin...原创 2018-08-29 20:03:37 · 203 阅读 · 0 评论 -
好用的库函数
1.快速求二进制中1的个数2.快速找到无序数列中第K小的数,并且把比他小的放左边,大的放右边3.rope1.快速求二进制中1的个数__builtin_popcount(x)__builtin_popcount(x)\_\_builtin\_popcount(x)2.快速找到无序数列中第K小的数,并且把比他小的放左边,大的放右边nth_element(a+1,a+1+...原创 2018-08-13 21:24:57 · 275 阅读 · 0 评论 -
splay库函数
splay竟然还有库函数。。。 真好~问题:给一个 NNN 表示 NNN 个数 1到N1到N1到N ,给一个 KKK 表示 KKK 次操作,然后 LLL,lenlenlen表示从L开始L开始L开始长度为lenlenlen 这么多个数移动到最前面,问KKK次操作后,数列什么样子?N=1e5,K<=1e5N=1e5,K<=1e5N=1e5,K800800800 多msmsms,但...原创 2018-07-26 15:13:47 · 192 阅读 · 0 评论 -
c/c++矩阵重载乘法快速幂输入输出
#include"iostream"using namespace std;const int MOD=1e9+7;struct Matrix{ int a[2][2]; Matrix () { for(int i=0;i&lt;2;i++) for(int j=0;j&lt;2;j++)a[i][j]=0; } Ma...原创 2018-05-01 21:47:54 · 1861 阅读 · 0 评论 -
求垂足坐标(计算几何)
/*(x1,y1),(x2,y2)是直线*/#include"iostream"#include"iomanip"using namespace std;struct Point{ double x,y; Point(){} Point(double x,double y):x(x),y(y){}};struct Line{ double A,...原创 2018-05-01 21:13:33 · 6034 阅读 · 0 评论 -
Lucas
#include"iostream"using namespace std;const int MOD=1e9+7;typedef long long LL;const int maxn=25;int N,K;LL mul(LL a,LL b,LL mod){ double x=a; LL res=a*b-(LL)(x*b/mod)*mod; return (...原创 2018-03-17 15:32:23 · 461 阅读 · 0 评论 -
莫比乌斯函数线性筛
#include"iostream"#include"vector"#include"string.h"using namespace std;const int maxn=1e5;bool PP[maxn+10];vector<int> prime;int mu[maxn+10];//int Moblus(int n)//{// if(n==1)return 1...原创 2018-03-10 23:07:41 · 475 阅读 · 0 评论 -
AC自动机
#include"iostream"#include"string.h"#include"queue"#include"string.h" #include"cstdio"using namespace std;struct node{ node *next[26]; int sum; node *fail; char c; node() ...原创 2018-03-10 23:06:19 · 229 阅读 · 0 评论 -
RMQ-ST
#include"iostream"using namespace std;const int maxn=1e6+5;struct AAA{ int mx,mi;};AAA a[maxn][20];int N,M;void RMQ_ST(){ for(int k=1;(1<<k)<=N;k++) { for(int i=1...原创 2018-03-10 23:04:22 · 240 阅读 · 0 评论 -
FFT
#include"iostream"#include"string.h"#include"math.h"using namespace std;const double pi=acos(-1);struct complex{ double r,i; complex(double r=0,double i=0) { this->r=r; ...原创 2018-03-10 23:02:51 · 344 阅读 · 0 评论 -
SG函数
#include"iostream"#include"string.h"using namespace std;const int maxn=1e3;int f[maxn],SG[maxn],S[maxn];void getSG(int N,int fN){ for(int i=1;i<=N;i++) { memset(S,0,sizeof(S))...原创 2018-03-10 22:59:32 · 303 阅读 · 0 评论 -
欧拉函数线性筛
#include"iostream"#include"vector"#include"string.h"using namespace std;bool vis[10000];int phi[10000];vector<int>prime;void PHI(int maxn){ memset(vis,1,sizeof(vis)); phi[1]=1; ...原创 2018-03-10 22:57:22 · 283 阅读 · 0 评论 -
费马小定理求组合数
#include"iostream"using namespace std;const int MOD=999101;long long f(int n){ long long ans=1; for(int i=2;i<=n;i++) { ans*=i; ans%=MOD; } return ans;}lon...原创 2018-03-10 22:26:19 · 704 阅读 · 0 评论 -
模乘
#include"iostream"using namespace std;long long mul1(long long a,long long b,long long mod){ long double x; long long c; long long r; if (a >= mod) a %= mod; if (b >= mod) b %=...原创 2018-03-10 22:19:54 · 1393 阅读 · 0 评论 -
树的直径
方法一:求每个点的最长和次长#include"iostream"#include"vector"using namespace std;const int maxn=1e5+5;vector<int>E[maxn];int dp[maxn][2];int res;void dfs(int u,int pre){ dp[u][0]=dp[u][1]=0;...原创 2018-03-18 10:12:56 · 257 阅读 · 0 评论 -
#1069 : 最近公共祖先·三(LCA在线)
#include"iostream"#include"string.h"#include"vector"#include"map"using namespace std;const int maxn=1e5+5;int N,M,tot,cnt;int dp[maxn][32];int First[maxn],a[maxn],dep[maxn];in原创 2018-03-18 10:21:58 · 318 阅读 · 0 评论 -
(LCA离线)poj1330 M - Nearest Common Ancestors
#include"iostream"#include"string.h"using namespace std;const int maxn=1e4+5;int N;struct Edge{ int t,next;};Edge E[maxn<<1];int head[maxn];int tot;void AddEdge(int aa,int bb){ ...原创 2018-03-18 10:25:02 · 195 阅读 · 0 评论 -
51nod 1212 无向图最小生成树
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1212/*Prim*/#include"iostream"#include"algorithm"#include"queue"#include"cstring"using namespace std;const int maxn=1e3+5;int h...原创 2018-05-01 19:14:27 · 155 阅读 · 0 评论 -
背包问题
一.01背包① 01背包(1.0)② 01背包(2.0)③ 01背包(3.0)关于初值:二.完全背包② 完全背包(2.0)③ 完全背包(3.0)三.多重背包① 多重背包(1.0)② 多重背包(2.0)③ 多重背包(3.0)四.大01背包关于初值② 大01背包(2.0)③ 大01背包(3.0)五.背包变形题目:一.01背包...原创 2018-04-12 18:45:52 · 3174 阅读 · 4 评论 -
01分数规划
题目一般是这样的:有N个物品,每个物品重c[i],价值v[i],从中选K个,求∑v[i]∗use[i]∑c[i]∗use[i]∑v[i]∗use[i]∑c[i]∗use[i]\frac{\sum v[i]*use[i]}{\sum c[i]*use[i]}最大 其中use[i]是0 或 1,表示选或不选这件物品设最终答案为 resresres 即: res=∑v[i]∗use[i]∑c[...原创 2018-04-05 18:01:19 · 187 阅读 · 0 评论 -
exgcd
int exgcd(int a,int b,int &x,int &y){ if(b==0) { x=1,y=0; return a; } else { int d=exgcd(b,a%b,y,x); y-=a/b*x; return d; }}原创 2018-04-17 20:31:21 · 590 阅读 · 0 评论