摘要:
设$f[i][j][k]$表示前$i$个物品买了$j$个,消耗$k$个钻石,最少花多少钱,可以通过简单的DP求出。 枚举拥有的钻石数以及最多能购买的物品数的下界,那么钱数的下界是定值。 将$n$个箱子折半搜索,按钻石数分组并排序,枚举左半边每种方案,在右半边双指针求出总概率即可。 时间复杂度$O(n 阅读全文
摘要:
首先预处理出$f[i][j][k]$表示长度为$i$的序列,第一个位置是$j$,最后一个位置是$k$时合法的方案数。 从后往前枚举LCP以及那个位置应该改成什么。 用线段树维护区间内最左最右的已经确定的位置,以及区间内的合法方案数。 合并的时候只需要将左右儿子的答案乘起来,然后再乘以左儿子最右到右儿 阅读全文
摘要:
首先预处理出$f[i][j]$表示第$i$位是字符$j$的字符串集合。 考虑枚举答案$n$,那么模式串中模$n$相同的字符都要按顺序在同一行出现。 设$g[i][j]$表示第$i$列开始出现模$n$为$j$的那些字符是否有可能,可以通过bitset取交实现。 然后枚举模式串出现的列$x$进行贪心匹配 阅读全文