题目名称 | 2045. [CodeChef KNGHTMOV] 骑士移动 |
---|---|
输入输出 | knightmov.in/out |
难度等级 | ★★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 20 |
题目来源 | cstdio 于2015-09-26加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:2, 提交:3, 通过率:66.67% | ||||
cstdio | 100 | 3.654 s | 58.63 MiB | C++ |
y0rkl1u | 100 | 4.046 s | 35.60 MiB | C++ |
y0rkl1u | 90 | 4.024 s | 37.47 MiB | C++ |
关于 骑士移动 的近10条评论(全部评论) | ||||
---|---|---|---|---|
CCF的题库众筹,我来续一道
数据我出的,也是醉了…… 非常不靠谱……有bug也可能AC(不过原题就是这,标程有bug我会乱讲?) 题解翻译:http://blog.csdn.net/wmdcstdio/article/details/48676173 | ||||
回复 @Skyo :
已改,谢谢指正 | ||||
或者(u+Bx, u+By)。。。。真的是u么
Skyo
2015-09-26 21:02
1楼
|
考虑一张无限大的方格棋盘。我们有一个“骑士”,它必须从(0,0)格开始,按照如下规则,移动至(X,Y)格:每一步,它只能从(u,v)格移动至(u+Ax,v+Ay)或者(u+Bx,v+By)。注意,该规则可能不同于国际象棋中骑士的移动规则。
此外,棋盘上有K个障碍格,骑士不能进入这些格子。
你的任务是计算骑士有多少种到达指定位置的方案。我们认为两种方案不同,当且仅当它们的步数不同,或者存在某个i使得两种方案中,骑士在第i步到达的格子不同。注意,骑士在到达(X,Y)格后还可能继续移动。
第1行1个整数T,代表测试数据组数。每组数据格式如下:
第1行3个整数X,Y,K。
第2行4个整数Ax,Ay,Bx,By。
第3行K对整数,每对都是一个障碍格的坐标。如果K=0,则这一行不存在。
对每组数据,输出移动方案数模1000000007(10^9+7)的值。如果有无穷多种方案,输出-1.
3
3 3 0
1 2 2 1
9 9 2
1 2 2 1
1 2 6 6
1 1 0
0 0 0 0
2
4
0
在前两个数据中,骑士的移动方式相当于国际象棋中的“骑士”,但只有两个方向。在第一个数据中,有两种方案:(0,0)->(1,2)->(3,3)和(0,0)->(2,1)->(3,3).
在第三个数据中,骑士无法移动,因此永远无法到达终点。
所有坐标的绝对值不超过500
(0,0)不是障碍格
(X,Y)不是障碍格
1<=T<=5
对于40%的数据,0<=K<=5
对于100%的数据,0<=K<=15