
算法模版
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 · 189 阅读 · 0 评论 -
hihocoder #1049 : 后序遍历 (已知先序遍历和中序遍历求后序遍历)
参考了一下网上菊苣写的递归实现二叉树的遍历。#include #include #include #include #include #include #include #include #include #include using namespace std;const int N = 1const int inf =原创 2016-09-30 20:59:26 · 441 阅读 · 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 · 628 阅读 · 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 · 570 阅读 · 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 · 1061 阅读 · 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 · 531 阅读 · 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 · 637 阅读 · 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 · 411 阅读 · 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 · 367 阅读 · 0 评论 -
lca 在线模板讲解
参考 http://blog.youkuaiyun.com/y990041769/article/details/40887469 首先搞清楚离线和在线做法的区别。 在线的做法是处理每一次询问,得出答案。 在线用到了st+dfs 这个模板是从大佬那里copy过来的,加上自己的理解,姑且算是原创吧。#include <iostream>#include <cstdio>#include <cstrin原创 2017-10-18 15:52:20 · 287 阅读 · 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 · 307 阅读 · 0 评论 -
poj 1511 spfa 模板题
Invitation CardsTime Limit: 8000MS Memory Limit: 262144KTotal Submissions: 26478 Accepted: 8790DescriptionIn the age of television, not many people attend theater原创 2017-02-25 11:33:18 · 641 阅读 · 0 评论 -
hihocoder #1043 : 完全背包
一维数组方法一:#include #include #include #include #include #define LL long longusing namespace std;const int inf = 0x3f3f3f3f;const int N = 625;int dp[100005];int mai原创 2016-09-27 21:40:55 · 359 阅读 · 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 · 451 阅读 · 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 · 449 阅读 · 0 评论 -
51nod 1242 斐波那契数列的第N项
http://blog.youkuaiyun.com/diaolingle/article/details/51388585按照上面的程序在编译器上跑一下, 自己可以试着输出中间的值。这里举一个刚刚做的例子 poj 2503 Babelfish Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 41268 Accepted: 1756原创 2016-10-20 21:36:48 · 271 阅读 · 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 · 565 阅读 · 0 评论 -
poj 1789 Truck History 最小生成树模板题
Truck HistoryTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 26871 Accepted: 10440DescriptionAdvanced Cargo Movement, Ltd. uses trucks of different ty原创 2017-03-04 11:43:49 · 295 阅读 · 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 · 244 阅读 · 0 评论