#P3158. Kickdown
Kickdown
本题没有可用的提交语言。
题目描述
一家全球领先汽车公司的研究实验室接到订单,需要设计一种特殊的变速机构,以实现高效的降挡操作(切换至更低挡位)。经过数月研究,工程师发现最优方案需要使用齿和槽非均匀分布的特殊齿轮,并计算出了齿轮的最佳齿廓。现在他们需要通过实验验证这一发现。
实验的第一阶段使用平面齿形截面(而非圆形齿轮)。长度为 n
的截面由 n
个单元组成,每个单元要么是高度为 h
的槽(用 1
表示),要么是高度为 2h
的齿(用 2
表示)。实验需要两个截面:一个模拟主动齿轮(齿在底部,即下方截面),另一个模拟从动齿轮(齿在顶部,即上方截面)。
实验室有一块宽度为
3h
的长条形昂贵合金材料,其长度足够同时切割出两个啮合的截面。这两个截面形状不规则,但可以通过沿长度方向相对移动(平移)来实现啮合。工程师希望尽可能少地使用材料,因此需要计算同时切割两个截面所需的最小条形材料长度。
输入格式
- 输入包含两行字符串,分别描述主动截面(下方)和从动截面(上方)。
- 第一行对应主动截面(齿在底部),第二行对应从动截面(齿在顶部)。
- 每个字符表示一个单元:
1
代表槽(高度h
),2
代表齿(高度2h
)。 - 字符串非空,长度不超过
100
。两个截面不可翻转或旋转,只能沿长度方向平移。
输出格式
- 输出一个整数,表示同时切割两个截面所需的最小条形材料长度。
输入输出样例
输入数据 1 | 输入数据 2 | 输入数据 3 |
---|---|---|
2112112112 2212112 |
12121212 21212121 |
2211221122 21212 |
输出数据 1:10 | 输出数据 2:8 | 输出数据 3:15 |
题目来源
Northeastern Europe 2006
关键分析
- 两个截面需沿长度方向平移对齐,使得任意位置的上下单元不会重叠(即下方的齿
2
和上方的齿2
不能在同一位置,否则会导致高度超过3h
)。 - 目标是找到所有合法的平移方式(即两个截面的重叠部分中不存在上下均为
2
的情况),并计算所需的最小总长度(两个截面覆盖的范围)。 - 需枚举所有可能的相对位移,检查每种位移下的重叠部分是否合法,最终取最小总长度。