算法模版
zzuli-dk
这个作者很懒,什么都没留下…
展开
-
LCA 倍增模板
f[i][j] 记录一个节点i的第j个的父节点 depth[i] 表示节点i 的深度 无向图 记录两个方向的边 重深度更深的节点开始寻找和另一个节点相同深度的节点 然后同时往上找父亲节点 此时的父亲节点就是最小公共祖先。 #include <iostream> #include <cstring> #include <cstdio> using namespace std; const int MAXN = 1005; int head[MAXN]; int depth[原创 2020-09-21 16:59:47 · 164 阅读 · 0 评论 -
hihocoder #1049 : 后序遍历 (已知先序遍历和中序遍历求后序遍历)
参考了一下网上菊苣写的递归实现二叉树的遍历。 #include #include #include #include #include #include #include #include #include #include using namespace std; const int N = 1 const int inf =原创 2016-09-30 20:59:26 · 421 阅读 · 0 评论 -
线性筛选素数
#include #include using namespace std; const int n=200000; int prime[n]= {0},num_prime=0; int main() { int a[n]= {1,1},i,j; for(i=2; i { if(!a[i])转载 2016-09-20 18:47:38 · 606 阅读 · 0 评论 -
扩展欧几里德模板及讲解
形如ax+by=m,求二元一次不等式的一组特解。m = gcd(a, b);推导:ax+by = gcd(a, b); —– 1 bx + (a%b)y = gcd(b, a%b); —–2由于a%b = a - a/b*b; bx + (a - a / b * b)y = gcd(b, a%b) ; ——3 从一式得二式的推导过程为 根据等效定理: 1式 <=>3式 bx =b原创 2016-10-06 14:42:08 · 542 阅读 · 0 评论 -
ACM数论 板子
#include<bits/stdc++.h> using namespace std; const int MAXN= 100005; const int mod = 1e9+7; typedef long long LL; LL c[1005][1005]; LL mu[MAXN]; LL euler[MAXN]; int mu[MAXN]; void Mubius()//莫比乌斯...原创 2017-07-31 13:56:34 · 1032 阅读 · 0 评论 -
light oj 1198 贪心算法或KM算法
题目大意: 你有一支队伍要和另一支队伍打比赛,由N个人组成, 每个人都有他自己的能力点数,能力点数大则赢。贪心算法类似于田忌赛马。 #include<cstdio> #include <iostream> #include<cstring> #include <algorithm> using namespace std; const int N = 100; int cmp(int a, int原创 2017-08-26 11:02:53 · 486 阅读 · 0 评论 -
hdu 3549 网络流 模板题
Flow ProblemTime Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 15036 Accepted Submission(s): 7092Problem Description Network flow is a well-kn原创 2017-04-15 10:42:12 · 616 阅读 · 0 评论 -
hdu 6185 Covering 求递推式的板子
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <map> #include <set> #include <cassert> using namespace std; #define rep(i,a,n) f原创 2017-08-31 12:57:13 · 393 阅读 · 0 评论 -
RMQ算法模板
RMQ算法(POJ3264)适用于对数据的多次查询 { void RMQ(int n) { for(int j=1;(1j)n;j++) { for(int i = 1; i +(1j)-1n;i++) { dp1[i][j]=min(dp1[i][j-1],dp1[i+(1j-1))][j-1]);原创 2016-09-20 09:09:18 · 356 阅读 · 0 评论 -
lca 在线模板讲解
参考 http://blog.csdn.net/y990041769/article/details/40887469 首先搞清楚离线和在线做法的区别。 在线的做法是处理每一次询问,得出答案。 在线用到了st+dfs 这个模板是从大佬那里copy过来的,加上自己的理解,姑且算是原创吧。#include <iostream> #include <cstdio> #include <cstrin原创 2017-10-18 15:52:20 · 269 阅读 · 0 评论 -
hdu 1116 线段树或树状数组(基础题)
题意: made in china 接下来,直接。。贴 #include #include #include #include #include #include #include using namespace std; const int inf =0x3f3f3f3f; typedef long long LL; const int N = 1005; int a原创 2016-09-19 21:46:01 · 292 阅读 · 0 评论 -
poj 1511 spfa 模板题
Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 26478 Accepted: 8790 Description In the age of television, not many people attend theater原创 2017-02-25 11:33:18 · 618 阅读 · 0 评论 -
hihocoder #1043 : 完全背包
一维数组方法一: #include #include #include #include #include #define LL long long using namespace std; const int inf = 0x3f3f3f3f; const int N = 625; int dp[100005]; int mai原创 2016-09-27 21:40:55 · 340 阅读 · 0 评论 -
最短路算法模版
最短路 dijkstra算法 void dis() { int i, j, min , v; int dist[N]; bool visit[N]; for(i=1; in; i++) { visit[i]=0; dist[i]=map[1][i]; } for(i=1; in; i++)原创 2016-07-29 13:29:57 · 417 阅读 · 0 评论 -
树状数组 模板
void uptree(int i,int val) { while (i { tree[i]+=val; i+=i&-i; } } int sum(int i) { int s=0; while (i>0) { s+=tree[i]; i-=i&-i原创 2016-10-07 14:15:12 · 433 阅读 · 0 评论 -
51nod 1242 斐波那契数列的第N项
http://blog.csdn.net/diaolingle/article/details/51388585按照上面的程序在编译器上跑一下, 自己可以试着输出中间的值。这里举一个刚刚做的例子 poj 2503 Babelfish Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 41268 Accepted: 1756原创 2016-10-20 21:36:48 · 259 阅读 · 0 评论 -
并查集算法模板
并查集 int findx(int x) { return bin[x]==x?x:findx(bin[x]);//查找根节点,判断是否在同一个集合 } void join(int a, int b)//合并两个点 { int x, y; x = findx(a); y = findx(b); if原创 2016-09-20 09:13:04 · 539 阅读 · 0 评论 -
poj 1789 Truck History 最小生成树模板题
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 26871 Accepted: 10440 Description Advanced Cargo Movement, Ltd. uses trucks of different ty原创 2017-03-04 11:43:49 · 280 阅读 · 0 评论 -
二分匹配模板
二分匹配(hdu 2063过山车) { bool find(int x) { int j; for(j=1;jn;j++) { if(G[x][j]==true&&vis[j]==false) { vis[j]=1; if(girl[j]==0||find(girl[j原创 2016-09-20 09:08:16 · 232 阅读 · 0 评论