摘要:
题意:有两个长度分别为p+1和q+1的序列,每个序列中的各个元素互不相同,且都是1~n2之间的整数,两个序列的第一个元素都是1,问A和B的最长公共子序列的长度分析:由于在同一个序列中元素互不相同,可以转化LCS问题为LIS问题,使用了“置换的思想”,有点类似于“离散化”,然后用stl的lower_bound函数实现log级别的查找,使得整个复杂度为nlogn代码:View Code 1 #include <stdio.h> 2 #include <iostream> 3 #include <algorithm> 4 #include <string.h 阅读全文
posted @ 2013-02-14 12:44
ChrisZZ
阅读(188)
评论(0)
推荐(0)
摘要:
题意:n个人报数,编号从1到n,第一次报m的人出列,以后每数k个数删除一次,问最后出列的人在最开始的时候编号是多少分析:约瑟环问题的变形,链表的方法不行,会tle。其实原题可以认为是第一次删除编号m,然后处理一个规模为n-1的子问题考虑这样一个问题:n个人(编号0~(n-1)),从0开始报数,报到m-1的退出,剩下的人继续从0开始报数。求胜利者的编号。我们知道第一个人(编号一定是(m-1)%n) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始): k k+1 k+2 ... n-2,n-1,0,1,2,... k-2 并且从k开始报0。 现在我们把他们的编号... 阅读全文
posted @ 2013-02-14 12:08
ChrisZZ
阅读(172)
评论(0)
推荐(0)

浙公网安备 33010602011771号