上一页 1 2 3 4 5 6 7 8 9 ··· 20 下一页
摘要: 注意这题不是公共子序列, 子串和子序列的区别在于子序列可以不连续而子串必须连续, 题目连接:http://poj.org/problem?id=2217, 我们可以将两个子串合并到一起, 中间使用$符号隔开, 然后找到最大的lcp即可, 注意对于最大的lcp[i], sa[i], sa[i+1](即 阅读全文
posted @ 2016-03-28 17:18 xing-xing 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题意是给你n个数字组成的序列将序列切成三段, 然后将三段逆序之后字典序最小, 问你该怎么切,保证序列中第一个数最大, 我们可以找到两个切点然后翻转即可, 第一个切点可以将整个序列翻转之后找出最小的后缀即可, 对于第二个假设我们将ABCD序列中AB CD分别翻转得到BADC字典序最小, 那么我们可以构 阅读全文
posted @ 2016-03-27 23:12 xing-xing 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 这道题就是给你两个串s1, s2让你求出s1 s2的最长相同前缀和后缀, 我们直接将s1 s2连接到一起然后处理一下next数组即可, 注意答案应该是min(len(s1), len(s2) , next[len]), 代码如下: 阅读全文
posted @ 2016-03-25 21:22 xing-xing 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 这道题的意思是给你一个有向图边的信息, 求出最少需要几条边就可以使这个图的拓扑图唯一, 二分答案然后check一下就行了, 代码如下: 阅读全文
posted @ 2016-03-23 11:15 xing-xing 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 这道题的意思是给你一串01序列, 0代表空房子, 1代表非空的房子, 农夫约翰和他的K个牛要住进空房子里面,i房子和j房子的距离是|j-i| 问农夫约翰和他的最远的牛的最小值是多少? 我们可以枚举牛的起点, 算出终点然后二分农夫约翰的位置, 代码如下: 阅读全文
posted @ 2016-03-23 11:13 xing-xing 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 这个题的意思是给你一个自然数序列1-n, 然后让你交换其中的一些数使得新序列的逆序对个数最大, 直接推公式即可, 代码如下: 阅读全文
posted @ 2016-03-23 10:04 xing-xing 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 这个题的意思是给你一串数字序列, 和一个数m, 然后你选一个最长的序列使得这个序列的lcm小于等于m, 由于m<=10^6, 因此我们可以定义dp[i]为序列中倍数为i的元素个数, 然后倒着推一遍即可, 代码如下: 阅读全文
posted @ 2016-03-22 16:06 xing-xing 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 这个题的意思是给你一些字符串, 按照一定的顺序重组这些字符串使得重组后的串的字典序最小, 考虑两个串的位置, 我们只需要按照a+b或者b+a中字典序较小的排列即可,代码如下: 阅读全文
posted @ 2016-03-22 11:48 xing-xing 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 这道题的意思是给你两个数A, B, s0 = A, s1 = B, si = |si-1 - si-2|, 让你求出里面有几个不同的数, 首先我们可以确定对于数y和x,y一定能写成kx+b的形式,在数列的生成过程中,会出现kx+b、x、(k-1)x+b、(k-2)x+b、x、...、2x+b、x、x 阅读全文
posted @ 2016-03-21 21:17 xing-xing 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 这个题的意思是树的所有连通量的个数之和, 我们定义g[i]为以i为根的子数的个数, f[i]为以i为根的所有连通分量元素个数之和, 那么f[u] = f[u]*(g[v]+1) + f[v]*g[u]; g[u] = g[u]*(g[v]+1); 然后在回溯的时候计算一下即可, 代码如下: 阅读全文
posted @ 2016-03-21 16:33 xing-xing 阅读(106) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 20 下一页