摘要: 树状数组 lowbit : 求最低位的 $1$ 以及后面的 $0$ 所组成的十进制数 #include<iostream> #include<cstdio> #include<cstring> #include<math.h> #include<algorithm> #define ll long 阅读全文
posted @ 2020-12-04 18:59 雾隐 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 最近公共祖先 1.暴力 将点按照父子关系依次向上查询,知道两个点发生重合 # include <stdio.h> # include <string.h> # define N 40010 # define M 2*N using namespace std; int Next[M],head[N] 阅读全文
posted @ 2020-12-04 11:25 雾隐 阅读(116) 评论(0) 推荐(1) 编辑
摘要: 并查集 并查集朴素实现: inline ll find(ll x) { if(fa[x]==x) return x; return find(fa[x]); } 路径压缩 inline ll find(ll x) { if(fa[x]==x) return x; return fa[x]=find( 阅读全文
posted @ 2020-12-04 11:16 雾隐 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 最小生成树 kruskal 运用贪心的思想,每次将边权最小且两端点均未被标记的点加入,并将点标记,重复执行直到有 \(n-1\) 条边已选 #include<iostream> #include<cstdio> #include<math.h> #include<cstring> #include< 阅读全文
posted @ 2020-12-04 10:59 雾隐 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 最短路径树 Define 最短路径树即为由一个给定的点出发,到每一个点的最短路径所构成的一棵树 求法 在图中设置一个根节点,进行一遍 dijkstra ,在过程中就可以处理出它的一棵最短路径树 例题 黑暗城堡 本题只需求得所用的最短路径树的数量即可 code #include<iostream> # 阅读全文
posted @ 2020-12-04 10:48 雾隐 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 最长上升子序列 1. \(O(n^2)\) 考虑以 i 为结尾的最长上升子序列的长度即可 #include<iostream> using namespace std; int i,j,n,a[100],b[100],max; int main() { cin>>n; for(i=0;i<n;i++ 阅读全文
posted @ 2020-12-04 09:45 雾隐 阅读(192) 评论(0) 推荐(0) 编辑