#HK4967. 「POI2015 R2」项链分割 Necklace partition
「POI2015 R2」项链分割 Necklace partition
题目描述
题目译自 XXII Olimpiada Informatyczna — II etap Podział naszyjnika
我们有一条由 个珠子组成的项链,每颗珠子属于 种类型之一。珠子编号为 到 , 号珠子与 和 号珠子相邻(若存在),且 号和 号珠子也相邻。我们希望用两刀将项链切成两个非空部分,确保每种类型的珠子只出现在其中一部分(即若某部分含类型 的珠子,另一部分不得含类型 )。请计算有多少种切割方式,以及两部分长度差的最小值。
输入格式
第一行包含两个整数 ,分别表示项链长度和珠子类型数。珠子类型编号为 到 。
第二行包含 个整数 , 表示 号珠子的类型。保证每种类型至少出现一次。
输出格式
输出一行,包含两个整数,第一个表示可行的切割方式数(保证至少有一种方式),第二个表示两部分长度差的最小值。
9 5
2 5 3 2 2 4 1 1 3
4 3
有四种可行分割:较短部分可包含珠子 、、 或 。最后一种情况下,长度差为 ,是最优解。
附加样例
- ,短项链,仅两种可行分割;
- ,每颗珠子类型不同,所有分割均有效;
- ,项链形式为 。
数据范围与提示
对于 的数据,。