上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 70 下一页
摘要: Minimal Segment Cover 嗯嗯嗯。。 打倍增的时候两个for写反了查了半天bug。。。 我们先把没用的线段去掉, 然后对每个线段都找到和它接触的r最大的作为下一个, 然后打倍增就好了。 阅读全文
posted @ 2019-06-06 01:05 NotNight 阅读(412) 评论(0) 推荐(0) 编辑
摘要: Ultimate Weirdness of an Array 写不出来, 日常好菜啊。。 考虑枚举GCD, 算出一共有多少个对 f(l, r) <= GCD, 我们用fuc[ i ] 表示的是在 l = i 这个位置开始, 最小的合法的 R, 可以发现这个函数随 i 单调不下降, 枚举GCD 的时候 阅读全文
posted @ 2019-06-05 12:46 NotNight 阅读(150) 评论(0) 推荐(0) 编辑
摘要: Jeff and Removing Periods 题目转换一下就变成询问区间里面有多少个不同数字, 和区间里面有没有等差数列的相同数字。 离线之后可能分别用树状数组和线段树维护, 线段树维护数字等差数列能延续到的最右端。 阅读全文
posted @ 2019-06-05 00:28 NotNight 阅读(129) 评论(0) 推荐(0) 编辑
摘要: Ehab and the Expected GCD Problem 首先我们能推出最优的开始一定是2 ^ n 或者 3 * 2 ^ n 的形式, 对于每一种形式我们将所有数字分类, 从后往前用组合数算出答案。 阅读全文
posted @ 2019-06-04 19:02 NotNight 阅读(166) 评论(0) 推荐(0) 编辑
摘要: Legen... 我们能很容易写出在AC自动机上的dp, dp[ k ][ i ][ j ]表示走了 k 步从 i 走到 j 的最大值。 k 很大我们考虑矩阵优化, 直接搞就好啦。 不知道为什么在本机上M * M * M * M **** * M 打多了就会卡死不知道为什么。。。 阅读全文
posted @ 2019-05-31 23:03 NotNight 阅读(134) 评论(0) 推荐(0) 编辑
摘要: Best Edge Weight 我们先找出一棵最小生成树, 对于非树边来说, 答案就是两点路径上的最大值 - 1, 这个直接倍增就能处理。 对于树边来说, 就是非树边的路径经过这条边的最小值 - 1, 这个可以用并查集压缩路径 或者 更压st表一样的方式更新。 感觉就是没想到先扣出来一个最小生成树 阅读全文
posted @ 2019-05-31 18:30 NotNight 阅读(157) 评论(0) 推荐(0) 编辑
摘要: Ann and Half-Palindrome 我居然写了个后缀排序。。 其实暴力把所有合法串丢进字典树里面就行了。 阅读全文
posted @ 2019-05-30 12:07 NotNight 阅读(101) 评论(0) 推荐(0) 编辑
摘要: Erasing Substrings 感觉这种写法想不到啊。。。 dp[ i ][ j ] 表示选了 i 个, 删了的情况为 j 是否为字典序最小的串。 因为如果dp[ i ][ j ] 的字典序比 dp[ i ][ k ]的字典序小, dp[ i ][ k ] 就没有用了。 还需要sos dp 去 阅读全文
posted @ 2019-05-29 00:39 NotNight 阅读(106) 评论(0) 推荐(0) 编辑
摘要: Crisp String 显然我们只要知道每个状态合不合法我们就能解决这个问题。 两两枚举相邻的字符, 去找不合法状态。 阅读全文
posted @ 2019-05-28 16:53 NotNight 阅读(192) 评论(0) 推荐(0) 编辑
摘要: Bear and Destroying Subtrees 我们先考虑没有修改的到从根开始的最长期望深度。 dp[ i ][ j ] 表示 i 这棵子树所有的边有一半概率存在的情况下, 最长深度为 j 的概率。 我们只用考虑50层就够了, 因为概率随长度比边长成指数级减少。 这样的话,处理出一个 dp 阅读全文
posted @ 2019-05-28 13:45 NotNight 阅读(122) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 70 下一页