HyperKnight

作者:毛啸

关键词:枚举 排序

题目简述

移动方式的定义是假如你当前在,那么你将移动到,给定,你的移动方式有八种。如果你从当前格子进行某个移动之后仍然在棋盘内,那么这个移动方式就被称为合法的。

给定一个的棋盘,以及一个0到8之间的数,求恰好有种合法移动方式的格子数。

一种常见的思考方式

我们经常会遇到一类问题,给你一个非常大的集合,问你有多少个元素满足某个条件。

那么,一个常见的思考方式是,我们可以把集合用一些子集划分,并且子集的数量不多,并且 每个子集中的元素要么同时满足条件,要么同时不满足

算法

那么本题可以怎么划分呢?我们注意到,某种移动方式是否合法,可以表示成一系列关于坐标的不等式,而不等式的解总是,其中,或者,其中

于是,我们就按照这些值划分轴和轴,对于每一个轴的区间和轴的区间,它们所对应的矩形区域对应的合法移动方式种类是一样的,我们只需要检查移动方式的数量是否等于,如果等于,就将答案加上矩形区域的大小即可。

时空复杂度均为

易错点

注意答案要用64位整形存储,注意整形溢出问题。

注意以及不要打反。

results matching ""

    No results matching ""