摘要:
首先求出区间前$k$大数中奇数的个数和偶数的个数。 如果都是偶数,那么答案就是前$k$大数的和。 否则,要么去掉最小的偶数,加上最大的奇数,要么去掉最小的奇数,加上最大的偶数。 主席树维护即可。 时间复杂度$O((n+m)\log n)$。 #include<cstdio> #include<alg 阅读全文
posted @ 2016-02-19 21:49
Claris
阅读(450)
评论(0)
推荐(0)
摘要:
记忆化搜索,设$f[i][j]$表示符号$i$一开始kmp指针为$j$,中间匹配了多少次,$g[i][j]$则表示匹配结束后kmp指针的位置。 时间复杂度$O(nl^2)$。 #include<cstdio> #include<cstring> const int N=26,M=105,P=1000 阅读全文
posted @ 2016-02-19 20:43
Claris
阅读(610)
评论(0)
推荐(0)
摘要:
因为是一个排列,所以可以用$n$位二进制数来表示$O(n\log n)$求LIS时的单调栈。 首先通过$O(n^22^n)$的预处理,求出每种LIS状态后面新加一个数之后的状态。 设$f[i][j]$表示已选数字集合为$i$,LIS状态为$j$的方案数。 转移时枚举不在$i$里的数$t$,如果$t$ 阅读全文
posted @ 2016-02-19 18:52
Claris
阅读(1816)
评论(0)
推荐(2)