初一看,sb题,上去一个并查集,很快啊,返回一个MLE,定睛一看,系统开的内存很小,但是这个算法复杂度又是这么正确 因此考虑优化内存,这样用滚动数组优化即可 #include<bits/stdc++.h> using namespace std; typedef long long ll; type ...
分类:
其他好文 时间:
2020-12-10 11:39:56
阅读次数:
13
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在 ...
分类:
其他好文 时间:
2020-12-04 11:41:44
阅读次数:
13
一、理论 并查集的定义: 并查集是一种树型的数据结构,用于处理一些不交集的合并和查询问题。一般用数组实现。 Find:确定元素属于哪一个子集,它可以被用来确定两个元素是否属于同一个子集。 Union:将两个子集合并成同一个集合。 并查集的优化: 优化1: 降低rank,提高查询效率。合并时要考虑ra ...
分类:
其他好文 时间:
2020-12-04 11:19:39
阅读次数:
6
struct UFS { stack<pair<int*, int> > stk; int fa[maxn], rnk[maxn]; inline void init(int n) { for (int i = 0; i <= n; ++i) fa[i] = i, rnk[i] = 0; } inl ...
分类:
其他好文 时间:
2020-12-03 12:16:10
阅读次数:
7
#include<iostream> #include<string> using namespace std; void getNext(string s, int *nex) { nex[0] = -1; int i = 0, j = -1; int len = s.length(); whil ...
分类:
其他好文 时间:
2020-12-01 12:22:41
阅读次数:
7
//将圆弧看成一段段的直线段,每个单元时间为dt //每一段路径长为 v1dt 和 v2dt //对于v2来说,存在径向速度vx(向外) 和 切向速度vy(绕圆) (vx^2 + vy^2 = v2^2) //又v1/R = w(角速度)= vy/r (r是运动过程中离圆心的距离)r属于[0, R] ...
分类:
其他好文 时间:
2020-11-20 11:47:20
阅读次数:
4
今天讲讲 Union-Find 算法,也就是常说的并查集算法,主要是解决图论中「动态连通性」问题的。名词很高端,其实特别好理解,等会解释,另外这个算法的应用都非常有趣。 说起这个 Union-Find,应该算是我的「启蒙算法」了,因为《算法4》的开头就介绍了这款算法,可是把我秀翻了,感觉好精妙啊!后 ...
分类:
编程语言 时间:
2020-11-20 11:25:40
阅读次数:
5
地址:https://www.acwing.com/problem/content/839/ 只是记录个板子,不做解析。 #include<cstdio> #include<cstring> #include<vector> #include<algorithm> #include<iostream ...
题意 $T$组数据$(n,m)$ 令$f(n)=\sum\limits_{d|n}|\mu(d)|$ 求$\sum\limits_^m f(ni)$ \(T\le 10^4,n,m\le 10^7\) 做法 显然$f(n)$是积性函数 则$f(ni)=\frac{f(n)f(i)}{f((n,i)) ...
分类:
其他好文 时间:
2020-11-11 16:07:42
阅读次数:
5
#include<iostream> #include<cstring> #include<cmath> using namespace std; char map[8][8]; int n, m, t; int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; bool ...
分类:
其他好文 时间:
2020-11-08 17:14:10
阅读次数:
17