上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 17 下一页
摘要: 题意 给定一个N个元素的数组,求任意两个不重叠的连续区间的异或和之和的最大值。 思路 先预处理出异或前缀和,然后用trie树维护预处理出每个位置到左端点的最大的区间异或和。反方向也处理一遍。最后枚举中间的分割位置即可。 #include <bits/stdc++.h> #define endl '\ 阅读全文
posted @ 2020-08-13 22:06 limil 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 题意 给你一个字符集合,你从其中找出一些字符串出来. 希望你找出来的这些字符串的最长公共前缀*字符串的总个数最大化. 思路 先建好trie树,然后dfs预处理每个子树下单词个数,同时计算最大值即可。 但是因为数据很大,字符可能的种类很多,要用tr树要用邻接表实现。实测vector也不行。 #incl 阅读全文
posted @ 2020-08-13 21:51 limil 阅读(124) 评论(0) 推荐(0) 编辑
摘要: A - All with Pairs (AC自动机+kmp) 题意 定义$f(s, t)$为字符串s的前缀和t的后缀的最长公共长度。给定n个字符串$s_1,s_2,...,s_n$,\(\sum_{i=1}^{n}{\sum_{j=1}^{n}{f(s_i, s_j)^2}}(\mod 998244 阅读全文
posted @ 2020-08-04 21:37 limil 阅读(69) 评论(0) 推荐(0) 编辑
摘要: A - B-Suffix Array (后缀排序) 题意 字符串函数$B(t_1t_2...t_k) = b_1b_2...b_k$满足: 如果存在$j<i$,\(t_j=t_i\),\(b_i=min_{1 \le j < i,t_j=t_i}\{i-j\}\), 否则,\(b_i=0\) 求字符 阅读全文
posted @ 2020-08-04 21:35 limil 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 介绍 后缀数组就是字符串的每个后缀的排序。 主要有两个sa和rk两个数组,sa[i]代表第i大的后缀的位置,rk[i]代表位置i的后缀的排位。满足rk[sa[i]] = sa[rk[i]] = i 实现 有很多求后缀数组的方法,其中一种是倍增法。 先给字符串每一位排序,然后倍增排序。假设当前倍增长度 阅读全文
posted @ 2020-07-16 19:23 limil 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 介绍 非常快地找到凸函数的极值点。 实现&原理 与二分法类似,三分算法先把区间分为长度相等的三段,那么l与r之间就有两个点,分别是:ll=l+(r-l)/3=(2l+r)/3和 rr=r-(r-l)/3=(l+2r)/3。 也可以二分再二分,即mid = (l+r) / 2,mmid = (mid 阅读全文
posted @ 2020-07-07 13:57 limil 阅读(181) 评论(0) 推荐(0) 编辑
摘要: Description 思路 cf题解中合法的x的处于一段连续区间不太明白。在知道这个前提下,将E1的代码改成二分即可。 有空再补回来。 #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #incl 阅读全文
posted @ 2020-07-04 17:48 limil 阅读(189) 评论(0) 推荐(0) 编辑
摘要: Description 思路 看了cf的题解,没想到这么的简单巧妙,tql 如果一个棋子在(x, y),那么它到k列的最小纵坐标i = y + abs(x - k)。所以就可以统计第k列的每一行有将多少枚棋子。 假设有r×m的棋盘,设f(j)为第k列、第j行及以上(j<=r)将有多少枚棋子。那么棋盘 阅读全文
posted @ 2020-06-28 19:02 limil 阅读(406) 评论(0) 推荐(0) 编辑
摘要: Description 这是一道模板题。 您需要写一种数据结构(可参考题目标题),来维护一个序列,其中需要提供以下操作: 翻转一个区间,例如原有序序列是 5 4 3 2 1,翻转区间是 [2,4] 的话,结果是 5 2 3 4 1。 思路 这题体现了无旋treap的区间操作。 注意不能按照关键值来排 阅读全文
posted @ 2020-06-27 13:23 limil 阅读(106) 评论(0) 推荐(0) 编辑
摘要: Description 这是一道模板题。 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 x 数; 删除 x 数(若有多个相同的数,因只删除一个); 查询 x 数的排名(若有多个相同的数,因输出最小的排名); 查询排名为 x 的数; 求 x 的前趋(前趋定义为小于 阅读全文
posted @ 2020-06-27 13:12 limil 阅读(150) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 17 下一页