传统题 1000ms 256MiB

国际象棋

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

经典的"八皇后"问题研究的是在国际象棋棋盘上放置8个互不攻击的皇后。本题将其扩展为在N×M的棋盘上放置K个互不攻击的马的问题。

问题描述

给定一个N行M列的棋盘,计算放置K个马且它们互不攻击的方案数。由于结果可能很大,请输出答案对10^9+7取模的结果。

马的攻击范围

位于坐标(x,y)的马可以攻击以下8个位置:

  • (x+1, y+2)
  • (x+1, y-2)
  • (x-1, y+2)
  • (x-1, y-2)
  • (x+2, y+1)
  • (x+2, y-1)
  • (x-2, y+1)
  • (x-2, y-1)

输入格式

输入包含三个用空格分隔的整数:

N M K

分别表示棋盘的行数、列数和要放置的马的数量。

输出格式

输出一个整数,表示方案数对10^9+7取模的结果。

数据范围

测试用例类别 数据范围
5%的测试用例 K=1
10%的测试用例 K=2
N=1
20%的测试用例 N,M≤6,K≤5
25%的测试用例 N≤3,M≤20,K≤12
全部测试用例 1≤N≤6,1≤M≤100,1≤K≤20

输入输出样例

样例1

输入:

1 2 1

输出:

2

解释:在1×2的棋盘上放置1个马有2种方式。

样例2

输入:

4 4 3

输出:

276

样例3

输入:

3 20 12

输出:

914051446

算法提示

  1. 考虑使用状态压缩动态规划
  2. 需要记录前两行的放置状态
  3. 注意处理大数取模运算
  4. 时间复杂度优化是关键

注意事项

  • 马的位置不能互相攻击
  • 结果需要对10^9+7取模
  • 棋盘行列编号从1开始

题目来源:第十二届蓝桥杯省赛第二场C++ A组/B组

中心团队A班 状态压缩DP

未参加
状态
已结束
规则
IOI
题目
10
开始于
2025-5-10 14:15
结束于
2025-5-18 22:15
持续时间
200 小时
主持人
参赛人数
35