有个 维的空间,并且每一维的坐标 都满足 并且 为整数。
这个空间有 个部落,每个部落都坐落在这片空间中的一个点上,可以用坐标 来表示。
有些部落可能在在同一个点上面。
定义两个点的距离为它们的曼哈顿距离,即每一维坐标差的绝对值的和。
比如对于点 和 ,它们之间的距离为 。
现在对 之间的每一个数字 ,统计有多少对部落之间的距离为 。
注意,一对部落是有序的,即部落 和部落 为不同的两对。
Constraints
,
Solution
观察数据范围可得 和坐标范围都很小,考虑状压 dp 。
令 表示当前已经考虑到第 维,到达 这个状态(将坐标压成四进制),当前距离为 的方案数。
转移时枚举上一维的状态和距离以及当前维的坐标,直接转移即可。
利用滚动数组节省空间,时间复杂度 。
Code
1 |
|