A. GTM
显然每个点的贡献是独立的,考虑当一个点存在标记的时候会影响到哪些点,容易发现前面速度大于他和后面速度小于他的都会打上标记。进一步讨论可以发现,速度在一个区间内的点都会打上标记。
所以可以处理出来每个点影响的速度区间,然后直接dp似乎并不可做。
然后可以发现,任意两个区间不可能完全包含,互相包含的两个区间至少有一个端点是相同的。所以直接dp就行了。
B. 字符串游戏
考虑将整个转移的过程写成一个矩阵,最上面是T,最下面是S。
在T上从后向前考虑,那么需要给每个连续字符区间的左端点找到一条路径,满足不和之前任意一条路径相交。
贪心的做法是每次尽量往下走。
那么考虑来维护当前点走到的这条折线。容易发现,一条线的折点数就是答案。
之后进行简单的分类讨论即可。
假如当前和后一个点走到的终点不一样, 那么可以发现其实就是新增了一个折点,并且其他折线整体偏移了1,用一个变量维护即可。
否则简单维护。
C. ACE
考虑转化一下题意,也就是限定了若干点对不能相邻,求排列数。
考虑容斥,钦定若干点对必然相邻,这个的方案数可以通过dp预处理出来,然后用生成函数多项式快速幂就可以简单的计算出来方案数。
于是直接套个二项式反演上去就没了。