题解
公平划分
设这n
个数的异或值为 X
,集合 B
的异或值为 Y
相当于要满足 X xor Y=Y
,于是可得X=0
于是只需要判断下读入的 n
个数的异或值是否为 0
,如果是 0
输出2^n-2
,否则输出 0
配对
考虑状态压缩dp,令f[S][i]
表示配对了前 i-1
个男生,用的女生的集合为 S
的方案数,直接转移即可。
字符串问题
考虑第二种操作每次肯定能加多长就加多长,于是只要维护串 S
的子序列自动机,每次贪心跳就行了。
公共山峰
定义f[i][j][type]
表示考虑了x[1..i]
和y[1..j]
,且x[i]
和y[j]
配对,当前山峰的类型是 type
的情况的最长公共山峰长度。
朴素的转移是枚举下一个 k
是啥,然后进行转移,时间复杂度:O(n^3)
但是我们可以令g[i][j][type]=Max_{k=1}^{i}f[k][j]
,然后只要考虑k=i+1
就行了
时间复杂度:O(n^2)
最后一题题解没看懂,谁来和我详细讲一下