摘要: 题意 给定n个非负整数A[1], A[2], ……, A[n]。 对于每对(i, j)满足1 ⇐ i < j ⇐ n,得到一个新的数A[i] xor A[j],这样共有n*(n-1)/2个新的数。求这些数(不包含A[i])中前k小的数。 思路 一看到异或,就想到可能要用trie树来处理。 层数越深, 阅读全文
posted @ 2020-08-13 22:29 limil 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题意 给定一个N个元素的数组,求任意两个不重叠的连续区间的异或和之和的最大值。 思路 先预处理出异或前缀和,然后用trie树维护预处理出每个位置到左端点的最大的区间异或和。反方向也处理一遍。最后枚举中间的分割位置即可。 #include <bits/stdc++.h> #define endl '\ 阅读全文
posted @ 2020-08-13 22:06 limil 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 题意 给你一个字符集合,你从其中找出一些字符串出来. 希望你找出来的这些字符串的最长公共前缀*字符串的总个数最大化. 思路 先建好trie树,然后dfs预处理每个子树下单词个数,同时计算最大值即可。 但是因为数据很大,字符可能的种类很多,要用tr树要用邻接表实现。实测vector也不行。 #incl 阅读全文
posted @ 2020-08-13 21:51 limil 阅读(129) 评论(0) 推荐(0) 编辑