字符串求方案数
CF 1084 C The Fair Nut and String 字符串求满足要求的子序列个数
求一个都是a的子序列, 且在原串里, 每两个a中间有一个b, 问有多少个这样的子序列.
首先. a和b之外的字符是没有意义的. 相连的b也是没有意义的, 相当于只有一个. 只需要用b把a分割成多个子段,
每个子段取1个a/不取, 所以答案就是(连乘)(每个段长+1)-1.
CF 1096 B Substring Removal 去掉一个子串使得剩下的只有同一个字符, 求方案数.
不要考虑去掉哪个子串, 而是考虑剩下的字符串, 肯定是前缀/后缀/前缀+后缀, 分类讨论即可
贪心好难.
CF 1093 C Mishka and the Last Exam 给出b数组, b[i]=a[i]+a[n-i+1], 求满足条件的a数组.
用b[i-1]算完之前的答案后, 会对b[i]的划分a[i]的最小值和a[n-i+1]的最大值有所限制.
先让a[n-i+1]贪心到限制下的最大值, 根据a[i]再加以调整. 如果无论如何都不能满足, 就是无解.
图/树上瞎搞
CF 1087 D Minimum Diameter Tree
树上分配边的总权值s, 使最长路最短.
官方题解证明了为什么是2*s/l, l为叶子的个数.
知道奇数深度的点到根的距离, 求每个点的权值, 使得总点权和最小.
官方题解证明了为什么偶数的点直接取合理的最大值即是最优解.
CF 1093 D Beautiful Graph 图上求染色的方案数
每个点可以放1/2/3, 要求相邻的两个点的和是奇数, 问染色的方案数.
两个数和是奇数, 那么一个是1/3, 另一个是2. 那么其实就是将这个连通块中的点分成了A和B两部分.如果A的点染2的话, B就可以染1/3, 这样方案数就是2^|B|, 反之亦然. 所以总方案数就是2^|A|+2^|B|. 此外, 如果图上有奇数个点构成的环, 或者说一个点在已经染为A组, 又要被分到B组, 那么就出现了矛盾, 这样整个图就没有合法的方案了.