本题使用标准输入、标准输出,无需读写题面中提到的文件。
题目描述
注意:我们建议使用 Python 以外的语言来在本题中获得满分。 Farmer John 的 ()头奶牛站成一排,第 头在队首,第 头在队尾。FJ 的奶牛还分为许多不同的品种。他用从 到 的整数表示每一种品种。从队首数起第 头奶牛的品种为 ()。
FJ 要带奶牛去当地的牛医院体检。然而,牛兽医非常挑剔,只会对队列中的第 头奶牛进行体检,当且仅当它的品种为 ()。
FJ 很懒,不想完全重排奶牛。他将恰好执行一次如下操作。
选择两个整数 和 ,满足 。将队列中第 头到第 头(含)之间的奶牛顺序反转。
FJ 想衡量这种方法的效果。对于每个 ,请帮助 FJ 求出有多少个不同的操作()能使得恰好有 头奶牛被体检。若两个操作()与()满足 或 ,则它们被认为是不同的。
输入格式
第一行包含一个整数 。 第二行包含 。 第三行包含 。
输出格式
输出 行,其中第 行包含使得恰好有 头奶牛被体检的不同操作()的数量。
3
1 3 2
3 2 1
3
3
0
0
3
1 2 3
1 2 3
0
3
0
3
7
1 3 2 2 1 3 2
3 2 2 1 2 3 1
0
6
14
6
2
0
0
0
提示
如果 FJ 选择()、()或(),则不会有奶牛被体检。注意,这些操作不会改变任何奶牛的位置。 下面的操作会使得有 1 头奶牛被体检。 :FJ 反转第 1 头与第 2 头奶牛的顺序,因此新队列中各头奶牛的品种为 。第 1 头奶牛会被体检。 :FJ 反转第 2 头与第 3 头奶牛的顺序,因此新队列中各头奶牛的品种为 。第 2 头奶牛会被体检。 :FJ 反转第 1、2、3 头奶牛的顺序,因此新队列中各头奶牛的品种为 。第 3 头奶牛会被体检。
使得有 头奶牛被体检的三种可能操作是()、()以及()。
使得有 头奶牛被体检的两种可能操作是()和()。
SCORING: Inputs 4-6: Inputs 7-13: 无额外限制 题目作者:Chongtian Ma 和 Haokai Ma
来源
USACO|2025|Bronze