摘要: 原题链接 考察: 并查集基础 和前面suspects差不多的题目,就是将计算集合内人数换成计算集合个数,用数组标记集合的编号即可 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace st 阅读全文
posted @ 2021-01-03 10:45 acmloser 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:并查集基础 在读入学生团体的时候,没必要用数组存储,直接将他们并入树中即可,注意:当我们计算人数的时候,已经在一个集合中的人不能重复计算 当时看y总犯了这个错误,结果自己写又错了233 1 #include <iostream> 2 #include <cstdio> 3 using 阅读全文
posted @ 2021-01-03 10:14 acmloser 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:并查集基础 思路: 只有维修后的电脑才是有用的,因此我们用数组来标记维修后的电脑,当它们能连通需要以下条件: x电脑和y电脑都是维修后的 x电脑与y电脑距离的平方小于d*d 如果距离大于d*d,那么它们之间存在中介点,且中介点也被维修过 1 #include <iostream> 2 阅读全文
posted @ 2021-01-03 09:15 acmloser 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 原题链接 并查集模板题 当两个点互相可达,我们称它们连通.本题判断连通点的个数,就是判断同一集合下点的个数,一棵树下子节点各不同,因此用数组sizes记录下标为根节点的点的个数 1 #include <iostream> 2 using namespace std; 3 const int N = 阅读全文
posted @ 2021-01-03 07:59 acmloser 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 原题链接 Trie+位运算+前缀和思想+后缀和思想 错误思路: 如果枚举两个端点,结果还是会TLE,就算先预处理每个sum[i]对应异或的最大值,排序,考虑到最坏情况结果时间复杂度还是会到10的10次方,因此此解不可行 正确思路: 本道题要求两个区间内的异或最大值,我们可以用一个数组ans[i]记录 阅读全文
posted @ 2021-01-02 19:41 acmloser 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 原题链接 Trie+位运算 和前面差不多的题,但是注意一下i、j、k都是不同的,在找异或最大值的时候要把i、j从树上删除,枚举完后再加回来 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace 阅读全文
posted @ 2021-01-02 19:25 acmloser 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 原题链接 Trie+位运算 和前面题一样标记下删除的路径即可 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 const int N = 200010; 6 int idx 阅读全文
posted @ 2021-01-02 19:23 acmloser 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 原题链接 想在vj上做来着..结果vj半天登不上去... 错误思路: 暴力枚举TLE 错误思路2: 用cnt数组标记用了的数字,但注意如果我们只标记叶子结点,那么就会陷入死循环,因为每次都要走到底才能知道是否能用 正确思路: 用cnt数组标记当前结点的子节点的个数,因为可能存在重复数字,所以不能简单 阅读全文
posted @ 2021-01-02 11:03 acmloser 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:Trie+位运算 错误思路1: 枚举端点异或,这样肯定TLE 错误思路2: 利用前缀和思想,区间[i,j]内异或 = sum[i-1]^sum[j],将所有sum值插入树中枚举一个点,另一个利用之前的sum xor的思想,但是这样是错的,我们要取sum的下标,但数据量大的时候存在相同 阅读全文
posted @ 2021-01-02 09:01 acmloser 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 原题链接 Trie+位运算 错误思路: 枚举数组里每一个数与询问的数异或,利用桶排序求最小值.时间复杂度O(n^2),TLE 正确思路: 想AC本题首先要明确几个性质: x^y^z = x^(y^z) 0~n位二进制数与n位二进制数异或的结果仍然在0~n位二进制数内,且不存在不同数取相同值的结果 3 阅读全文
posted @ 2021-01-01 22:31 acmloser 阅读(108) 评论(0) 推荐(0) 编辑