![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
德鸭
时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时,不知道有多少人在冥思苦想,在为算法废寝忘食,不知道有多少人在狂热地拍着代码,不知道又有多少提交一遍又一遍地刷新着OJ的status页面……
没有谁生来就是神牛,而千里之行,始于足下!
展开
-
最小生成树
这一篇也是帮助我记模板的文章呢1 Kruskal 并查集只与边有关,用于稀疏图。struct edge{ int begin,end,len;//起点 终点 长度}xhd[maxn];bool cmp(struct edge a, struct edge b){ return a.len<b.len;}void makeset()//初始化{ for原创 2017-02-16 17:10:10 · 203 阅读 · 0 评论 -
八数码与IDA*问题 HDU1043&&POJ1077
HDU1043&&POJ1077题意:将八数码还原成原位做法(参照各种神牛牪犇)1.判断是否有解,原位时八数码的逆序对一定是0,细心的人就会发现每次移动的逆序对是偶数次变换的,所以只用判断初始情况的逆序对是否为偶数即可2.强力剪枝:1.用H最优估计剩余步数(曼哈顿距离) 2.限制深度deep,每次加一 3.判断与上一步是否反向3.IDA* 每次限制层数加一,逐层搜索。原创 2017-07-09 21:27:26 · 231 阅读 · 0 评论 -
强联通
include #include#include#include#include#include#includeusing namespace std;const int maxn=20100;vector g[maxn];stack s;int dfn[maxn],low[maxn],scc[maxn];int vis[maxn];int d_cnt=0,s_cn原创 2017-07-18 12:29:17 · 187 阅读 · 0 评论 -
强联通注意点
重边的判断模式void tarjan(int u,int pre){ low[u] = dfn[u] = ++d_cnt; mys.push(u); int flag=0; for(int i=head[u]; i!=-1;i=edge[i].next) { int v=edge[i].to; if(!dfn[v])原创 2017-07-18 12:33:21 · 151 阅读 · 0 评论 -
2017 暑假艾教集训 day7 (树链剖分模板)
HDU 3966树链剖分模板题#include using namespace std;const int maxn= 50010;int n,m,q;int c[maxn];int head[maxn],cnt=0;struct node{ int to,next;}edge[100005*2];void add(int u,int v){ edge[c原创 2017-08-08 09:05:49 · 262 阅读 · 0 评论 -
2017 暑假艾教集训 day10 AC自动机+马拉车+后缀数组 +kmp
https://vjudge.net/contest/177933#overviewH HDU3068做法:马拉车模板#include using namespace std;const int maxn= 110015;char s[maxn];char str[maxn*2];int dp[maxn*2];int mlc(){ int n=strlen(s+原创 2017-08-10 23:16:18 · 422 阅读 · 0 评论 -
欧拉函数+莫比乌斯函数 模板
求单个数的欧拉函数ll getoula(ll n){ if(n==1) return 0; ll ans=n; for(int i=2;i<=(int)sqrt(n+0.5);++i) { if(n%i==0) { ans = ans * (i-1)/i; while(n%i==0原创 2017-08-05 00:03:51 · 272 阅读 · 0 评论 -
模板 BSGS
大佬的手写Hash。飞快ll p,b,n;class HASH{public: ll a[100005],inv[100005],mod; HASH() { memset(a,-1,sizeof(a)); mod=100003; } ll Find(ll x) { ll idx=x%mod;原创 2017-08-05 00:05:43 · 351 阅读 · 0 评论 -
大数的质数检验以及求最小质因子
#include #include #include #include #include #include using namespace std;typedef long long ll;ll random(ll n){ return ((double)rand()/RAND_MAX*n+0.5);}ll powmuilt(ll a,ll b,ll mod){原创 2017-08-05 00:07:26 · 1036 阅读 · 0 评论 -
合数的质因数分解 + 递归求等比数列前n项和
质因数分解const int maxn=10000;bool book[maxn+10];int prim[maxn+10],pnum=0;void getprim(){ memset(book,0,sizeof(book)); pnum=0; book[1]=book[0]=1; for(int i=2;i<=maxn;++i) {原创 2017-08-05 00:10:53 · 438 阅读 · 0 评论 -
2017 暑假艾教集训 day12 网络流(最大流 最小割)!
模板using namespace std;int n,m;const int maxn=1005;struct node{ int to,next,cap;}edge[maxn<<2];int head[maxn],cnt;void add(int u,int v,int w){ edge[cnt].to=v; edge[cnt].next=head[u];原创 2017-08-13 00:01:26 · 217 阅读 · 0 评论 -
复习艾教
Day 1 乱搞Day 2 状压DP + 状压 BFSDay 3 线性DP + 区间DPDay 4 素数筛 + 最大公约数 + 分解质因数 + 同余运算 + 快速幂 + 中国剩余定理 + 费马小定理 + 积性函数 miller-rabin 函数 + pollard-rho 分解质因素 +二次剩余 + 原根 + (扩展)离散对数 + 莫比乌斯反演Da原创 2017-08-13 22:17:00 · 273 阅读 · 0 评论 -
割边
#include #include #include #include #include #include using namespace std;const int maxn=100020;vector g[maxn];int n;int low[maxn],dfn[maxn];int d_cnt=0;int num=0;struct node{ int u,原创 2017-07-17 10:13:02 · 413 阅读 · 0 评论 -
割点
#include #include #include #include #include #include #include using namespace std;const int maxn=110;int n;vector g[110];int son=0,d_cnt=0;int cut[110];int low[110],dfn[110],vis[110];vo原创 2017-07-17 10:12:17 · 161 阅读 · 0 评论 -
生产树计数
#include #include #include #include #include #define mod 1000000000using namespace std;typedef long long ll;typedef long long ll;char map[120][120];int num[120][120];int c[120][120];int n,原创 2017-07-16 21:07:44 · 200 阅读 · 0 评论 -
最短路模板。
纯粹是害怕自己忘掉记一遍。1 Floyd计算多源最短路问题。void floyd(){ for(int i=1;i<=n;++i) //扫一遍中间点 { for(int j=1;j<=n;++j)//扫一遍起点 { for(int k=1;k<=k;++k)//扫一遍所有终点 {原创 2017-02-16 16:41:10 · 252 阅读 · 0 评论 -
rmq模板
来自kuangbin模板#include #define N 1010 #define mem(a,x) memset(a,x,sizeof a) using namespace std; #define INF 0x3f3f3f3f const double eps = 1e-8; typedef long long ll; const int MAXN = 5转载 2017-05-16 08:21:09 · 210 阅读 · 0 评论 -
LCA
#include #include#include#include#includeusing namespace std;const int maxn=40010;struct node{ int to,next,w;}edge[maxn<<1];int head[maxn],cnt;void addedge(int u,int v,int we){ ed原创 2017-06-06 21:03:05 · 177 阅读 · 0 评论 -
rmq plus
#include #include using namespace std; #define N 50010 int maxl[N][16], minl[N][16]; int n, m, a[N]; int min(int a, int b) { if (a>b) return b; return a; } int max(i原创 2017-06-06 20:52:40 · 181 阅读 · 0 评论 -
安利 lca
http://www.cnblogs.com/JVxie/p/4854719.html转载 2017-06-06 22:10:48 · 274 阅读 · 0 评论 -
线段树:扫描线讲解
http://www.cnblogs.com/scau20110726/archive/2013/04/12/3016765.html转载 2017-07-14 10:30:58 · 419 阅读 · 0 评论 -
有向图—朱刘算法模板
#include #include #include #include #include using namespace std;typedef double type;const int maxn=205;const double inf=1.0*0x3f3f3f3f;struct point{ double x, y;}p[maxn];struct node{原创 2017-07-14 21:15:29 · 219 阅读 · 0 评论 -
判断点是否在线段上
原创 2017-07-16 13:12:38 · 3836 阅读 · 0 评论 -
割点
http://www.cnblogs.com/en-heng/p/4002658.html原创 2017-07-16 19:25:25 · 159 阅读 · 0 评论 -
次小生成树
#include #include #include #include const int inf=0x3f3f3f3f;using namespace std;int map[110][110];int pre[110];bool use[110][110];int maxcost[110][110];int dis[110];bool vis[110];int n,m;原创 2017-07-16 21:01:26 · 117 阅读 · 0 评论 -
朱刘算法
#include #include #include #include #include using namespace std;typedef double type;const int maxn=205;const double inf=1.0*0x3f3f3f3f;struct point{ double x, y;}p[maxn];struct node{原创 2017-07-16 21:03:14 · 280 阅读 · 0 评论 -
树剖模板
void dfs1(int u,int pre,int step){ dep[u]=step; fa[u]=pre; num[u]=1; for(int i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].to; if(v!=pre) { v原创 2017-09-28 20:00:48 · 215 阅读 · 0 评论