题目描述

小 D 特别喜欢玩游戏。这一天,他在玩一款填数游戏。

这个填数游戏的棋盘是一个n×m的矩形表格。玩家需要在表格的每个格子中填入 一个数字(数字 0或者数字 1),填数时需要满足一些限制。

下面我们来具体描述这些限制。

为了方便描述,我们先给出一些定义:

  • 我们用每个格子的行列坐标来表示一个格子,即(行坐标,列坐标)。(注意: 行列坐标均从 00 开始编号)

  • 合法路径 P:一条路径是合法的当且仅当:

    1. 这条路径从矩形表格的左上角的格子(0,0)出发,到矩形的右下角格子 (n−1,m−1)结束;
    2. 在这条路径中,每次只能从当前的格子移动到右边与它相邻的格子,或者 从当前格子移动到下面与它相邻的格子。
      例如:在下面这个矩形中,只有两条路径是合法的,它们分别是P1​: (0,0) → (0,1) → 1,1)和P2​:(0,0) → (1,0) → (1,1)。

对于一条合法的路径 P,我们可以用一个字符串w(P)来表示,该字符串的长度为n+m−2,其中只包含字符“R”或者字符“D”, 第 i 个字符记录了路径P 中第 i 步的移动 方法,“ R”表示移动到当前格子右边与它相邻的格子,“ D”表示移动到当前格子下面 与它相邻的格子。例如,上图中对于路径P1​,有 =w(P1​)= "RDRD";而对于另一条路径P_2P2​, 有w(P_2) =w(P2​)= "DR"。

同时,将每条合法路径 P 经过的每个格子上填入的数字依次连接后,会得到一个长 度为n+m−1的 01 字符串,记为 s(P)。例如,如果我们在格子(0,0)和(1,0)上填入数字 0,在格子(0,1)和(1,1)上填入数字 1(见上图红色数字)。那么对于路径P1​,我们可以得 到 s(P1​)= "011",对于路径P2​,有s(P2​)= "001"。

游戏要求小 D 找到一种填数字0、1 的方法,使得对于两条路径P1​, P2​,如果w(P1​)>w(P2​),那么必须s(P1​)≤s(P2​)。我们说字符串 a 比字符串 b 小,当且仅当字符串 a 的字典序小于字符串 b 的字典序,字典序的定义详见第一题。但是仅仅是找一种方法无法满 足小 D 的好奇心,小 D 更想知道这个游戏有多少种玩法,也就是说,有多少种填数字 的方法满足游戏的要求?

小 D 能力有限,希望你帮助他解决这个问题,即有多少种填 0、1 的方法能满足题目要求。由于答案可能很大,你需要输出答案对10^9+7取模的结果。

输入格式

输入文件共一行,包含两个正整数 n,m,由一个空格分隔,表示矩形的大小。其 中 n 表示矩形表格的行数,m 表示矩形表格的列数。

输出格式

输出共一行,包含一个正整数,表示有多少种填 00、11 的方法能满足游戏的要求。 注意:输出答案对 10^9+7 取模的结果。

输入输出样例

输入 #1

2 2

输出 #1

12

输入 #2

3 3

输出 #2

112

输入 #3

5 5

输出 #3

7136

说明/提示

【样例解释】

【数据规模与约定】

思路

洛谷巨佬

代码:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;const int Mod=1e9+7;long long n,m;long long ksm(long long a,long long b) {long long r=1;for(; b; a=a*a%Mod,b/=2)if(b&1)r=r*a%Mod;return r;
}int main () {scanf("%lld%lld",&n,&m);if(n>m)swap(m,n);if(n==1)printf("%lld\n",ksm(2,m));else if(n==2)printf("%lld\n",4*ksm(3,m-1)%Mod);else if(n==3)printf("%lld\n",112*ksm(3,m-3)%Mod);else {if(m==n)printf("%lld\n",(83*ksm(8,n)%Mod+5*ksm(2,n+7)%Mod)*190104168%Mod);elseprintf("%lld\n",(83*ksm(8,n)%Mod+ksm(2,n+8))*ksm(3,m-n-1)%Mod*570312504%Mod);}return 0;
}

  

转载于:https://www.cnblogs.com/mysh/p/11357866.html

P5023 填数游戏相关推荐

  1. 2018D2T2 P5023 填数游戏

    P5023 填数游戏 https://www.luogu.com.cn/problem/P5023 解题参考: https://www.acwing.com/activity/content/code ...

  2. 【NOIP2018】DAY2T2——填数游戏(轮廓线状压的dp?搜索打表)

    描述 小 D 特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个n × m的矩形表格.玩家需要在表格的每个格子中填入一个数字(数字 0 或者数字 1),填数时需要满足一些限制. 下 ...

  3. 枚举算法5——填数游戏

    填数游戏,如图所示每个汉字代表一个数字,不同的汉字代表数字不同,要求填写这些汉字代表的数字. [分析] 从图中可以看出,共有5个汉字,每个汉字是数字0~9中的一个.显然"北"和&q ...

  4. 1908: 【18NOIP提高组】填数游戏

    [题目描述] 小 D 特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个n×mn×m的矩形表格.玩家需要在表格的每个格子中填入一个数字(数字 00 或者数字 11),填数时需要满足 ...

  5. 170713 逆向-填数游戏

    1625-5 王子昂 总结<2017年7月13日> [连续第284天总结] A. CISCN 结合WP再战RE B. 这么久之后完整的wp终于出来了,回过头再做一遍之前的re 首先是最早放 ...

  6. 【NOIP 2018 提高组】填数游戏

    传送门 problem 小 D 特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个 n×mn \times mn×m 的矩形表格.玩家需要在表格的每个格子中填入一个数字(数字 00 ...

  7. 【NOIP2018】D2T2 填数游戏

    @填数游戏@ @题目描述@ @题解@ @代码@ @end@ @题目描述@ 小 D 特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个 n×m 的矩形表格.玩家需要在表格的每个格子中 ...

  8. 【NOIP2018提高组D2T2】填数游戏

    前言--2020.10.17 下面的公式推导似乎有些出锅,具体情况就看图想想. Description 小D特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个n*m的矩形表格.玩家 ...

  9. 啊哈添柴挑战Java1581. 填数游戏(入门版)

    啊哈添柴--挑战 1581. 填数游戏(入门版) /*** @author yinglongwu*/ //1581. 填数游戏(入门版) public class Main {public stati ...

最新文章

  1. python【数据结构与算法】二分模板
  2. JS原型继承和类式继承
  3. 如何让文本框中只能输入手机号码
  4. 6 步搭建数据平台—从指标体系到相关技术 | 周四话数据
  5. python免杀技术---复现+改进----1
  6. Matplotlib - 柱状图、直方图、条形图 bar() barh() 所有用法详解
  7. Go语言并发编程简介
  8. 动态主机配置协议DHCP
  9. Java1.5并发包下阻塞队列的生产者与消费者功能简单实现
  10. php 最小二乘法,XPS复杂谱图的非线性最小二乘法拟合(NLLSF)操作指南
  11. 2017国二c语言考试试卷,2017备考计算机二级C语言真题试卷
  12. go import导入包详解
  13. GeForce Experience 安装时乱码解决
  14. 记录一次 AGP 调研过程中的思考,我从一个事故搞出了一个故事!
  15. android中的m、mm、mmm、make指令
  16. 整型和字符串相互转换
  17. Oracle 数据库备份脚本
  18. 什么是DevOps模式
  19. 电脑族科学护眼五常识
  20. java实现身份证号校验

热门文章

  1. 常用纸张及特性,印刷常用规格尺寸
  2. eHIDS 一款基于eBPF的HIDS开源工具
  3. 计算机开机其他用户,Win8.1系统下取消开机显示“其他用户”的方法
  4. 下载:简体中文版Live Messenger 8.1 Beta
  5. 深度学习热点|超直观无公式图解Contrastive Predictive Coding从脸盲说起
  6. DOS批处理简明高级教程
  7. python关于二手房的课程论文_用Python对二手房信息数据清洗及简单分析
  8. 我的Lenovo ThinkPad R60e 键盘按键失灵!
  9. 动态内存的申请和非动态内存的申请_深圳罗湖“限制非深户申请公办学位”惹争议,官方权威回应来了...
  10. Leetcode广度优先搜索笔记2 腐烂的橘子