Codeforces Round #748 Changing Brackets 题解 (Java/C++)

题解 首先,根据题意,我们可以知道括号的方向完全不影响结果。那么很自然的,我们只需要考虑不同类型括号的奇偶性。 于是我们注意到,如果两个相邻的方括号之间有奇数个圆括号(反过来也一样),那么至少需要1个圆括号改成方括号。…

Codeforces Round #748 Red-Black Number 题解 (Java/C++)

题解 一个很明显的dp问题。 不难想到有这样几个状态:1、 前i个数字;2、|r-l|;3、除以A的余数;4、除以B的余数。于是我们就有这样的dp定义:dp[i][diff][x][y]表示前i个数,红色比黑色多diff个(不取绝对值),除以A余x,除以B余y时是否可能。…

Codeforces Round #746 Bakry and Partitioning 题解 (Java/C++)

题解 首先,如果每个部分的XOR都相同(设为X),那么所有节点的XOR要么是X要么是0。 我们先考虑所有节点的XOR是0的情况。这种情况显然是YES,因为我们只需要选择任意一个叶子节点,然后让这个叶子节点独立成一个部分即可。…