「517模拟赛1」ABC难题

「517模拟赛1」ABC难题

Tips: 模数是 \(10^8+7\)

不妨令序列总长为 \(n\) ,包含 \(m\) 种不同的数字

发现存在 \(ABC\) 的子序列只需要满足最左边的 \(A\) 和最右边的 \(C\) 之间有一个 \(B\)

由于可能出现多个 \(ABC\) ,考虑计算不存在 \(ABC\) 的情况

那么可以枚举最左边的 \(A\) 和最右边的 \(C\) 分别为 \(X,Y\) ,那么需要不存在 \(ABC\) ,并且枚举的 \(X,Y\) 合法 的充要条件是

\([1,X-1]\) 中不存在 \(A\)\([X+1,Y-1]\) 中不存在 \(B\)\([Y+1,n]\) 中不存在 \(C\)

这三个限制,每一个限制会让一种颜色能够选择的字母数量-1

那么枚举 \(X\) ,扫描每一个 \(Y\) (注意不一定满足 \(X< Y\) ),同时记录每个数字是否出现在 \([1,X-1],[X+1,Y-1],[Y+1,n]\)

在每次扫描时改变限制,同步统计出受到 \(0,1,2,3\) 个限制的数字的个数,然后答案就是 \((3-i)^k\) 之积

然而这样还不够,因为可能根本不存在 \(A,C\) ,不存在 \(A\) 或者 \(C\) 的答案为 \(2^m\) ,同时不存在 \(A,C\) 的答案为 \(1^m\) ,容斥一下即可