密码锁
农夫约翰的奶牛们总是偷偷的逃出他的农场,去外面为非作歹。
农夫约翰为了防止它们私自逃离农场,购买了一个密码锁,以此阻止奶牛们打开农场大门。
约翰知道他的奶牛们都非常聪明,因此他想要确保它们不能通过简单的尝试一些密码组合,就轻易的将锁打开。
锁具上有三个密码拨盘,每个拨盘上的数字为 $1…N$,其中 $1$ 和 $N$ 相邻(因为拨盘是圆形的)。
一共有两种可以打开密码锁的数字组合,一组是约翰设置的密码组合,一组是制造商设置的密码组合。
这种锁具有一定的容错性,只要三个表盘上的数字与任意一组正确密码组合的对应位置数字相距两个位置以内,锁均会打开。
例如,假设约翰设置的密码组合是 $(1,2,3)$,制造商设置的密码组合是 $(4,5,6)$。
此时我们输入组合 $(1,3,5)$ 就可以将锁打开,因为这与约翰设置的密码接近,输入组合 $(2,4,8)$ 也可以将锁打开,因为这与制造商设置的密码接近。
但是,如果我们输入组合 $(1,5,6)$ 就不能将锁打开,因为它和两个密码都不接近。
现在给定你两个设置好的密码,请你判断一共有多少种密码组合可以将锁打开。
注意,密码组合是有序的,因此 $(1,2,3)$ 和 $(3,2,1)$ 是两种不同的组合。
输入格式
第一行包含整数 $N$。
第二行包含三个整数,表示约翰设置的密码组合。
第三行包含三个整数,表示制造商设置的密码组合。
输出格式
输出一个整数,表示可以打开锁的密码组合数量。
数据范围
$1 \le N \le 100$
输入样例:
50
1 2 3
5 6 7
输出样例:
249
记录保存
农夫约翰一直在详细记录奶牛进入牛棚挤奶的情况。
每小时会有一组三头牛进入牛棚产奶,约翰会记录它们的名字。
例如,在 $5$ 小时内,他可能会记录下如下列表,每行对应进入牛棚的一组牛:
BESSIE ELSIE MATILDA
FRAN BESSIE INGRID
BESSIE ELSIE MATILDA
MATILDA INGRID FRAN
ELSIE BESSIE MATILDA
约翰发现同一组奶牛可能会多次出现在他记录的名单中,在上面的例子中,BESSIE ELSIE MATILDA
这个组合出现了 $3$ 次(尽管约翰不一定每次都按同样的顺序记录它们的名字),
请帮助约翰计算进入牛棚次数最多的一组牛的进入次数。
输入格式
第一行包含整数 $N$。
接下来 $N$ 行,每行都包含一组三头牛的名字,每个名字都是一个长度在 $1 \sim 10$ 之间的由大写字母构成的字符串。
输出格式
输出进入牛棚次数最多的一组牛的进入次数。
数据范围
$1 \le N \le 1000$
输入样例:
5
BESSIE ELSIE MATILDA
FRAN BESSIE INGRID
BESSIE ELSIE MATILDA
MATILDA INGRID FRAN
ELSIE BESSIE MATILDA
输出样例:
3
滑雪场设计
农夫约翰的农场上有 $N$ 个山峰,每座山的高度都是整数。
在冬天,约翰经常在这些山上举办滑雪训练营。
不幸的是,从明年开始,国家将实行一个关于滑雪场的新税法。
如果滑雪场的最高峰与最低峰的高度差大于17,国家就要收税。
为了避免纳税,约翰决定对这些山峰的高度进行修整。
已知,增加或减少一座山峰 $x$ 单位的高度,需要花费 $x^2$ 的金钱。
约翰只愿意改变整数单位的高度,且每座山峰只能修改一次。
请问,约翰最少需要花费多少钱,才能够使得最高峰与最低峰的高度差不大于17。
输入格式
第一行包含整数 $N$。
接下来 $N$ 行,每行包含一个整数,表示一座山的高度。
输出格式
输出一个整数,表示最少花费的金钱。
数据范围
$1 \le N \le 1000$,
数据保证,每座山的初始高度都在 $0 \sim 100$ 之间。
输入样例:
5
20
4
1
24
21
输出样例:
18
样例解释
最佳方案为,将高度为 $1$ 的山峰,增加 $3$ 个单位高度,将高度为 $24$ 的山峰,减少 $3$ 个单位高度。
镜子田地
农夫约翰在屋子外面放了一些旧镜子,他的奶牛们像往常一样调皮地偷走了它们!
奶牛们将镜子放置在了一个矩形田地中,该田地可被划分为 $N \times M$ 个方格区域。
在每个方格区域中,奶牛在其某对对角之间放置一个双面镜,因此,共有两种放法,一种为 /
放置(镜子连接方格左下角和右上角),另一种为 \
放置(镜子连接方格左上角和右下角)。
一天晚上,奶牛贝茜将激光发射器带到了该田地中。
她站在田地外面,沿着田地的行或列水平或垂直照射光束,使光束反射一定数量的镜子。
由于镜子都是沿对角线摆放,因此经反射镜反射的水平光束最终将垂直传播,反之亦然。
贝茜想知道从田地之外射入的水平或垂直光束最多可以在田地中被反射多少次。
给定镜子田地的布局,请帮助贝茜计算这个数字。
输入格式
第一行包含 $N$ 和 $M$。
接下来 $N$ 行,每行包含 $M$ 个 /
或 \
字符,表示田地中镜子的具体摆放方式。
输出格式
输出田地之外的水平或垂直光束能够被反射的最大次数。
如果可以无限反射,则输出 $-1$。
数据范围
$1 \le N,M \le 1000$
输入样例:
3 3
/\\
\\\
/\/
输出样例:
3
样例解释
贝茜可以从上向下沿中间列上方发射激光。
共可以反射 $3$ 次。
重新排列奶牛
农夫约翰的 $N$ 头奶牛排成一排,编号 $1 \sim N$。
它们的排序可以由一个数组 $A$ 来描述,其中 $A(i)$ 是位于位置 $i$ 的奶牛的编号。
约翰希望将它们重新排列为一个不同的顺序。
新顺序用数组 $B$ 来描述,其中 $B(i)$ 是位于位置 $i$ 的奶牛的编号。
假设奶牛开始时的顺序为:
A = 5 1 4 2 3
并假设约翰希望它们重新排列为:
B = 2 5 3 1 4
为了从 $A$ 顺序重新排列为 $B$ 顺序,奶牛们进行了许多“循环”移位。
所谓循环移位,是指挑选排列中的若干头奶牛分在一组,组中奶牛进行循环移动位置,即第一头奶牛移动至第二头奶牛的位置,第二头奶牛移动至第三头奶牛的位置,…,最后一头奶牛移动至第一头奶牛的位置。
如上例中,将 $5,1,2$ 号奶牛分在一组进行循环移位,移动过后,$5$ 号奶牛移动至位置 $2$,$1$ 号奶牛移动至位置 $4$,$2$ 号奶牛移动至位置 $1$;将 $4,3$ 号奶牛分在另一组进行循环移位,移动过后,$4$ 号奶牛位于位置 $5$,$3$ 号奶牛位于位置 $3$;最终完成重新排列。
每头奶牛都恰好参与一组循环移位,除非其在 $A,B$ 中的位置没有变化。
请计算奶牛们完成重新排列,共需多少组循环移位,最长的一组循环移位的长度是多少。
输入格式
第一行包含整数 $N$。
接下来 $N$ 行包含 $A(i)$。
再接下来 $N$ 行包含 $B(i)$。
输出格式
输出循环移位的组数,以及最长的一组循环移位的长度。
如果不存在循环移位,则第二个数输出 $-1$。
数据范围
$1 \le N \le 100$,
$1 \le A(i),B(i) \le N$
输入样例:
5
5
1
4
2
3
2
5
3
1
4
输出样例:
2 3
里程表
约翰的奶牛正在公路上旅行。
他们汽车上的里程表显示的是整数里程值。
旅途开始时里程表显示的里程值为 $X$,旅途结束时里程表显示的里程值为 $Y$。
每当里程表显示“有趣的”数字(包括开始和结束时显示的数字)时,奶牛们就会发出愉快的叫声。
如果一个数除去前导零以外的所有数字中,除了一个数字不同以外,其他所有数字都是相同的,那么这个数就是“有趣的”。
例如,$33323$ 和 $110$ 是有趣的,而 $9779$ 和 $55555$ 不是有趣的。
请帮助约翰计算奶牛们在旅途中发出叫声的次数。
输入格式
共一行,包含两个整数 $X$ 和 $Y$。
输出格式
输出奶牛们在旅途中发出叫声的次数。
数据范围
$100 \le X \le Y \le 10^{16}$
输入样例:
110 133
输出样例:
13
样例解释
$110 \sim 133$ 之间的所有数字中,有趣数字为:$110, 112, 113, 114, 115, 116,
117, 118, 119, 121, 122, 131, 133$。