1205. 组合子逻辑

1205. 组合子逻辑

暂无测试数据。

题目描述

组合子逻辑是 Moses Schönfinkel 和 Haskell Curry发明的一种符号系统,
用于消除数理逻辑中对于变量的需要。
本题考察一种与真实世界的组合子演算略有差别的组合子系统。
一个组合子项是下列形式之一:

 P
 (E1 E2)

其中 \(P\) 表示一个基本函数,
\(E1\) 以及 \(E2\) 表示一个组合子项(可以相同)。
不满足以上形式的表达式均非组合子项。

我们将一个组合子项E的参数个数 \(np(E)\) 如下:
np(P)=基本函数P的参数个数;
np((E1 E2))=np(E1)-1

本题中,
我们用一个正整数同时表示一个基本函数,
以及该基本函数的参数个数。

对于一个组合子项 \(E\),
如果它和它包含的所有组合子项的参数个数 \(np\) 均为正整数,
那么我们称这个 \(E\) 为范式。

我们经常将组合子项简化表示:
如果一个组合子项E含有连续子序列(…((E1 E2)E3)…En)(其中\(n \geq 3\)),
其中 \(Ek\) 表示组合子项(可以是简化表示的),
那么将该部分替换为 (E1 E2 E3 … En),其他部分不变,
得到表达式 E 的一个简化表示。
一个组合子项可以被简化表示多次。

给定一个基本函数序列,
问至少需要添加多少对括号,
才能使得该表达式成为一个范式的简化表示(即满足范式的性质);
如果无论怎样添加括号,
均不能得到范式的简化表示,
输出-1。

输入

第一行,包含一个正整数 \(T\),表示有 \(T\) 次询问。
接下来 \(2T\) 行。
第 \(2k\) 行有一个一个整数,表示第 \(k\) 次询问的序列中基本函数的个数。
第 \(2k+1\) 行有个正整数,其中第 \(i\) 个整数表示序列中第 \(i\) 个基本函数。

输出

输出 \(T\) 行,
每行一个整数,表示对应询问的输出结果。

样例输入

2
5
3 2 1 3 2
5
1 1 1 1 1

样例输出

3
-1

数据范围限制

说明

限制

每个测试点时限:1秒
内存限制:128MB

来源

CTSC2013

信息

ID
1204
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者