Link
Solution
两行对应相等的情况总共有种,那就枚举这种情况,用Hash统计。
每次边查询边插入。
要求恰好为,用容斥。注意到公共序列长度为一对序列对答案的贡献是,所以容斥的时候要乘上。
对数组的Hash可以仿照字符串Hash,而因为这道题是枚举出种情况的,所以不需要考虑没有被选中的位,可以直接跳过去。即序列的两个状态和算出来的Hash值可以是相等的,不会有影响的。这样可以让Hash值存储更多有用信息。
Tips
暴力枚举,一次答案只会增加1,所以复杂度肯定不会比答案更优。--lct1999
而暴力的优化策略常常把信息分类地存在数据结构里,让答案每次增加一类的总数。(我太弱了这么显然的东西还要记下来。。)
Code
1 | //Code by Lucida |