#650. 逆序图着色(Hard)
逆序图着色(Hard)
题目描述
这是该题的困难版本(Hard 版)。不同版本的区别在于本版本中 。
序列 被称为 good(良好)的,当且仅当存在对每个下标 进行红/蓝着色的方式,使得对任意满足 且 的一对下标 ,它们的颜色恰好不同。
现在给定序列 ,请计算序列的 good 子序列的个数(包括空子序列)。由于答案可能非常大,请对 取模后输出答案。
说明:序列 是序列 的子序列,当且仅当 可以通过删除序列 的若干(可能为 或全部)元素并保持相对顺序得到。
输入格式
第一行包含一个整数 ,表示测试用例的数量()。
每个测试用例包含两行:
- 第一行包含整数 ,表示序列长度()。
- 第二行包含 个整数 ()。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出一行,包含一个整数:序列的 good 子序列个数(对 取模)。
样例输入
4
4
4 2 3 1
7
7 6 1 2 3 3 2
5
1 1 1 1 1
11
7 2 1 9 7 3 4 1 3 5 3
样例输出
13
73
32
619
说明
样例解释
- 在第一个样例中,不是 good 的子序列有 、 和 ,总共有 个子序列,因此答案为 。
- 在第三个样例中,由于所有元素相等,任意子序列都是 good。