摘要: 需要按照DFS来init,不能用BFS。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <algorithm> 5 using namespace std; 6 const int MAXN = 2000 阅读全文
posted @ 2020-01-20 14:01 IAT14 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 首先线性基是什么呢。我们考虑我们有n个数。子集数量为2^n个。我们将每个子集内的数全部异或起来。得到一个值。但是我们考虑这些值内会可能存在重复的,太多了。不便于运算。所以我们考虑,能不能除去重复的。 我们假定n个数都是&lt;10^9。我们考虑使用一个30*30的矩阵。其中其中第一行,存一个最高位1 阅读全文
posted @ 2020-01-20 08:41 IAT14 阅读(144) 评论(0) 推荐(0) 编辑
摘要: bitset大概就是让你轻松建立一个很长的二进制数来存东西,并提供了快捷的操作和优美的常数。 #include <bitset> bitset <32> b;32为长度 需要引用头文件,定义一个bitset。 stl的东西,所以从0开始。 支持左右移。 支持下标访问修改。 b.any() b中是否存 阅读全文
posted @ 2020-01-20 08:38 IAT14 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 数据不是很大,我们可以通过莫队算法来很轻易的解决这个问题。注意不要搞混n,m变量。 按照一定顺序来进行操作询问,使得重复操作尽可能的少。我们考虑从一个已经得出的[l,r]的答案,转移到[a,b]的答案就是两个点的曼哈顿距离。可以使用最小曼哈顿距离生成树来解决。但是代码量过大。我们有更简单的解决策略。 阅读全文
posted @ 2020-01-20 08:34 IAT14 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 直接树链剖分就可以啦。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <algorithm> 5 using namespace std; 6 const int MAXN = 110000; 7 typ 阅读全文
posted @ 2020-01-20 08:29 IAT14 阅读(152) 评论(0) 推荐(0) 编辑