A 题:
题目保证一定有解,就可以考虑用 $ 2 $ 和 $ 3 $ 来凑出这个数 $ n $
如果 $ n $ 是偶数,我们用 $ n / 2 $ 个 $ 2 $ 来凑出 $ n $ 即可
如果 $ n $ 是奇数,就用 $ n / 2 - 1 $ 个 $ 2 $ 和 $ 1 $ 个 $ 3 $ 凑出 $ n $ 即可
所以只需输出 $ n / 2 $
B 题:
如果一个字符串重排后一定是回文串,说明这个字符串只有 $ 1 $ 种字符
如果有两种不同字符,就可以把一个放在开头,一个放在结尾,这样形成的一定不是回文串
一个简单一点的写法是 $ sort $ 一下这个字符串,判断回文
C 题:
贪心的想,我们如果要使整个序列非降,那么前面的数字要尽量小,后面的数字要尽量大
首先 $ a[1] = 0,a[n] = b[1] $,然后贪心的扫过去,在满足条件的情况下使得前面的数字尽量小,后面的数字尽量大即可
D 题:
发现每条边的两个端点的数字的奇偶性一定不同
所以我们我们只要做一次 $ bfs $ 染色并判断是否能完成染色即可
假设黑点有 $ a $ 个,白点有 $ b $ 个
如果黑点是奇数,方案数是 $ 2^a $ 种,如果白点是奇数,方案数是 $ 2^b $ 种,总方案数是 $ 2^a + 2^b $ 种
然后发现整个图不一定联通
所以我们对每个联通块做一次 $ bfs $ 染色,然后把答案相乘即可
注意不能用 memset,不然 $ T $ 组数据每次 memset 一次肯定凉
E 题:
用 $ pa[i] $ 表示 $ i $ 这个数在第一个排列中出现的位置,$ pb[i] $ 表示 $ i $ 这个数在第二个排列中出现的位置
假设查询区间为 $ l1,r1,l2,r2 $
如果 $ i $ 这个点对答案造成了贡献,那么 $ l1 \le pa[i] \le r1 $ && $ l2 \le pb[i] \le r2 $