上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要: 应该是machine 和POJ3783 Balls类型相似。 现在上界为i元,猜错次数最多为j时,开始猜测为k元,有两种情况: 1 猜中:(i - k + 1) * dp[i - k][j] 2 猜不中 k * dp[k - 1][j - 1] 两种情况的均值即为第一次猜测为k时的期望,1 <= k 阅读全文
posted @ 2016-08-04 12:48 vwirtveurit 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 当初合肥区域赛的题(现场赛改了数据范围就暴力过了),可惜当初后缀数组算法的名字都没听过,现在重做下。 i从1到n - 1,每次枚举rank[i]附近的排名,并记录当起点小于i时的LCP(rank[i], d)的最大值,或是在LCP不变时更新起点。 加油吧! fighting!!! 阅读全文
posted @ 2016-08-04 11:06 vwirtveurit 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 引用罗穗骞论文中的话: 将n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求后缀数组。然后二分答案,用和例3 同样的方法将后缀分成若干组,判断每组的后缀是否出现在不小于k 个的原串中。这个做法的时间复杂度为O(nlogn)。 阅读全文
posted @ 2016-08-03 17:25 vwirtveurit 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 引用罗穗骞论文中的话: 先将n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求后缀数组。然后二分答案,再将后缀分组。判断的时候,要看是否有一组后缀在每个原来的字符串中至少出现两次,并且在每个原来的字符串中,后缀的起始位置的最大值与最小值之差是否不小于当前答案(判断能否做到不重叠,如 阅读全文
posted @ 2016-08-03 17:17 vwirtveurit 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 一共6种情况,a < b且Aa < Ab, c < d 且Ac > Ad,这两种情况数量相乘,再减去a = c, a = d, b = c, b = d这四种情况,使用树状数组维护,le[i]表示i左边比他小的数数量,le1[i]表示i左边比他大的数数量,ri[i]表示i右边比他小的数数量,ri1[ 阅读全文
posted @ 2016-08-03 11:39 vwirtveurit 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 借用罗穗骞论文中的讲解: 计算A 的所有后缀和B 的所有后缀之间的最长公共前缀的长度,把最长公共前缀长度不小于k 的部分全部加起来。先将两个字符串连起来,中间用一个没有出现过的字符隔开。按height 值分组后,接下来的工作便是快速的统计每组中后缀之间的最长公共前缀之和。扫描一遍,每遇到一个B 的后 阅读全文
posted @ 2016-08-02 21:40 vwirtveurit 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 这题可以用后缀数组,KMP方法做 后缀数组做法开始想不出来,看的题解,方法是枚举串长len的约数k,看lcp(suffix(0), suffix(k))的长度是否为n- k ,若为真则len / k即为结果。 若lcp(suffix(0), suffix(k))的长度为n- k,则将串每k位分成一段 阅读全文
posted @ 2016-08-02 10:16 vwirtveurit 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 一个长度为n的序列,删除任意长度为l的连续子序列后,求剩下的序列的最长公共子序列。 先求出以第i个元素为开始的LIS的长度,再一次循环,对所要求的结果更新 } 阅读全文
posted @ 2016-07-26 21:04 vwirtveurit 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 枚举,每次增加点,删除点 } 阅读全文
posted @ 2016-07-26 17:56 vwirtveurit 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 先做拓扑排序,再bfs处理 } 阅读全文
posted @ 2016-07-25 15:15 vwirtveurit 阅读(226) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 下一页