1008: 狗·猫·狮子
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:4
解决:1
题目描述
鲁迅养了N只宠物,种类仅有狗、猫、狮子三种,这N只宠物排成了一条线。
猫和狗并不喜欢彼此,但狮子却和它们相处得很好。
为了安宁,鲁迅决定重新排列宠物,使得狗和猫不挨在一起。
每次移动,鲁迅都可以将一只宠物移动到线上的其他位置。
鲁迅想知道重新排列宠物所需的最少移动次数。
为了保证数据多样性,每个数据点均有多组数据。
输入
第一行一个整数T,表示该数据点含有的数据组数。
对于每组数据:
第一行一个整数N,表示宠物数量。
第二行N个整数,表示宠物的初始排列,0表示猫,1表示狗,2表示狮子。
对于每组数据:
第一行一个整数N,表示宠物数量。
第二行N个整数,表示宠物的初始排列,0表示猫,1表示狗,2表示狮子。
输出
共T行,每行一个整数,表示对于每组数据的最少移动次数,如果无法达到目标则输出-1。
样例输入 复制
2
5
0 1 0 1 2
9
0 0 0 1 1 2 0 0 2
样例输出 复制
2
1
提示
【样例说明】
对于样例1:
对于第一组数据:
将两只狗移动到末尾
对于第二组数据:
将第二只狮子移动到第一只狗之前
【数据范围】
1<=T<=500
1<=N<=5000
单个数据点中所有N的总和不超过5000
对于样例1:
对于第一组数据:
将两只狗移动到末尾
对于第二组数据:
将第二只狮子移动到第一只狗之前
【数据范围】
1<=T<=500
1<=N<=5000
单个数据点中所有N的总和不超过5000