/ Vijos / 讨论 / 月赛 /

[b][color=blue]Vijos11月份月赛简要题解[/b][/color]

第K大(P1788):

求一个序列的第k大元素,只需要排序即可。复杂度为O(nlogn)。但是实际上这道题有还一种经典的期望O(n)做法。这种做法基于快排的思想。我们知道快排每次会选择一个元素,然后将小于它的元素放于左侧,大于它的元素放于右侧,然后分别递归进行。由于我们可以判断出第k大的元素在左侧还是右侧,所以我们只需要递归一侧就行。这样复杂度就降至了期望O(n+n/2+n/4+n/8..)≈O(2*n)≈O(n)。

string(P1789): 

这道题目的实现相对简单,主要考察选手的分析能力。

我们将分以下几种情况来分析:

1、K=1,显然答案为m^n。

2、K>N,不存在长度为K的子串,所以无论如何都满足条件,答案为m^n。

3、K=N,即字符串本身为回文串,我们有一半的字符可以任意安排,答案为m^((n+1)/2)。

4、1

1 条评论

  • @ 2013-02-16 08:25:42

    拓扑编号(P1790)除了堆优化还需要哪些优化?大数据TLE

  • 1