ZUFEOJ
Home
ProblemSet
Source/Category
Contest
Status
Ranklist
F.A.Qs
Login
Register
6740: 延时操控
内存限制:512 MB
时间限制:4 S
题面:Markdown
评测方式:文本比较
上传者:
提交:1
通过:1
提交
提交记录
统计
Web Board
题目描述
给定一张 n 行 n 列的网格地图,其中 '#' 表示障碍,剩下的字符表示空地。地图上有恰好一名己方角色 'PP' 和敌方角色 'EE'。 你需要帮助小Q操控己方角色去击败敌方角色成功通关游戏。在每一回合中,你需要键入恰好一个字符以表示操作指令,分为以下四种: 'LL': 从 (x,y) 移动至 x,y−1)。 'RR': 从 (x,y) 移动至 (x,y+1)。 'UU': 从(x,y) 移动至 (x−1,y)。 'DD': 从 ((x,y) 移动至 (x+1,y)。 如果目的地是障碍或者不在地图内,那么本次移动将会失败。己方角色可以与敌方角色重叠,也可以穿透对方。一旦移动失败,移动方将扣除 1 点生命值,并在这一回合待在原地。由于小Q选的是最高难度,因此己方没有任何容错率,而敌方有hp 点生命值。敌方不会自主移动,只会复读己方k 回合之前的指令,你需要善用该机制来''延时操控''敌方以获得胜利。 游戏即将从第1回合开始,一共执行m 个回合;第i 回合的执行逻辑如下: 1、键入第 i 回合的操作指令ci。 2、尝试按照指令ci 移动己方角色,若移动失败则游戏立即结束。 3、(若i≤k 则忽略本条)尝试按照指令ci−k 移动敌方角色,若移动失败则敌方角色扣除1点生命值,若生命值为0 则游戏立即通关。 请写一个程序,统计有多少种可能的操作序列使得你可以通关游戏。两个操作序列被认为不同当且仅当长度不同或者某一回合的指令不同。请注意:如果第 m 回合仍然没有将敌方的生命值归零,则这样的方案不满足条件。
输入格式
第一行包含一个正整数 T (1≤T≤100),表示测试数据的组数。 每组数据第一行包含四个整数ℎ,n,m,k,hp (2≤n≤50,1≤m≤50,0≤k
20。
输出格式
Output 对于每组数据输出一行一个整数,即能通关的操作序列数量,由于答案可能很大,请对 1e9+7 取模输出。
输入样例
复制
2 2 3 0 2 .# PE 5 5 2 1 ..... ...P. ..... .E... .....
输出样例
复制
1 124
数据范围与提示
对于第一组样例,满足条件的操作序列只有一组''UD''。
分类标签
24杭电多校第四场