分拆与合并
题目描述
给定一个由 n 个正整数组成的数组 a。对每个 1≤i≤n,把 ai 拆成两个正整数 b2i−1,b2i,满足
b2i−1+b2i=ai.
然后,把 b 中每一段连续相等的数合并成一个数。请最小化合并后数组的长度。
输入格式
第一行一个整数 T,表示测试数据组数。
每组数据第一行一个整数 n,第二行 n 个整数 a1,a2,…,an。
输出格式
对每组数据输出一行一个整数,表示合并后数组长度的最小值。
样例输入 1
3
3
6 8 2
1
4
3
5 6 6
样例输出 1
3
1
2
数据范围
对所有数据,1≤T≤5×105,1≤n≤5×105,2≤ai≤109,且单个输入文件中 ∑n≤5×105。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
20 |
n≤7,ai≤10,且 ∑n≤28 |
| 2 |
40 |
n≤200,ai≤200,且 ∑n≤600 |
| 3 |
无特殊限制 |
题目来源:Codeforces 1416E。