题目描述 Description
邪教喜欢在各种各样空间内跳。
现在,邪教来到了一个二维平面。在这个平面内,如果邪教当前跳到了(x,y),那么他下一步可以选择跳到以下4个点:(x-1,y), (x+1,y), (x,y-1), (x,y+1)。
而每当邪教到达一个点,他需要耗费一些体力,假设到达(x,y)需要耗费的体力用C(x,y)表示。
对于C(x,y),有以下几个性质:
1、若x=0或者y=0,则C(x,y)=1。
2、若x>0且y>0,则C(x,y)=C(x,y-1)+C(x-1,y)。
3、若x<0且y<0,则C(x,y)=无穷大。
现在,邪教想知道从(0,0)出发到(N,M),最少花费多少体力(到达(0,0)点花费的体力也需要被算入)。
由于答案可能很大,只需要输出答案对10^9+7取模的结果。
输入描述 Input Description
读入两个整数N,M,表示邪教想到达的点。
输出描述 Output Description
输出仅一个整数,表示邪教需要花费的最小体力对10^9+7取模的结果。
样例输入 Sample Input
1 2
样例输出 Sample Output
6
数据范围及提示 Data Size & Hint
对于10%的数据,满足N, M<=20;
对于30%的数据,满足N, M<=100;
对于60%的数据,满足min(N,M)<=100;
对于100%的数据,满足0<=N, M<=10^12,N*M<=10^12。

首先我们可以发现,格子上的值就是组合数,然后稍微想一下就可以贪心(打表也可以啊)

一直往小的那边走,然后就得到一个min(n,m)*log(10^9+7),log是求乘法逆元,用费马小定理求逆元,这样理论复杂度是可以过的,但是p党没人权还要优化一点

其实贪心的路径很好算,有一条都是1,另一条加起来其实就是C(n+m+1,min(n,m))(我是下别人的代码才知道的)

所以答案就是max(n,m)+C(n+m+1,min(n,m))

 1 const
 2     h=1000000007;
 3 var
 4     n,m,ans,s:int64;
 5
 6 procedure swap(var x,y:int64);
 7 var
 8     t:int64;
 9 begin
10     t:=x;x:=y;y:=t;
11 end;
12
13 function mexp(a,b:int64):int64;
14 begin
15     if b=0 then exit(1);
16     mexp:=sqr(mexp(a,b>>1))mod h;
17     if b and 1=1 then mexp:=mexp*a mod h;
18 end;
19
20 procedure main;
21 var
22     i:longint;
23 begin
24     read(n,m);
25     if n>m then swap(n,m);
26     s:=1;
27     for i:=1 to n do
28       s:=s*(((n+m-i+2)mod h)*mexp(i,h-2)mod h)mod h;
29     ans:=m+s;
30     writeln(ans mod h);
31 end;
32
33 begin
34     main;
35 end.

View Code

转载于:https://www.cnblogs.com/Randolph87/p/3746367.html

1515 跳 - Wikioi相关推荐

  1. 【wikioi】2495 水叮当的舞步(IDA*)

    http://wikioi.com/problem/2495/ 这题我还是看题解啊囧.(搜索实在太弱.完全没想到A*,还有看题的时候想错了,.,- -) 好吧,估价还是那么的简单,判断颜色不同的数目即 ...

  2. 自制青蛙跳台阶小游戏~

    青蛙跳台阶小游戏 1.概念(concept)文档 楔子(Setting):千百年来,人们在贬低别人时,常用井底之蛙来描述那个人,但这却让青蛙不开心了,于是青蛙决定跳出井底,为自己讨一个公道. 玩法(G ...

  3. [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...

  4. 在React Hook里使用history.push跳转

    在React Hook里使用history.push跳转 react hook里用不了this.props.history的解决方法 首先引入 import { useHistory } from ' ...

  5. php连接mysql页面空白_求大神: php注册页面跳转出现空白页

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 register.php: 我感觉是不是insert这个地方出现问题,我试图填写不一样的密码但是他并没有提示错误而是跳转空白页 session_start ...

  6. HarmonyOS 界面跳转以及界面跳转的同时传递参数

    HarmonyOS 不带参数界面之间跳转 package com.example.myapplication.slice; import com.example.myapplication.Resou ...

  7. Android 隐式跳转(Activity的隐式跳转)

    学而时习之,温故而知新,放假前回顾下android 的 隐式跳转 Activity的显式跳转: 是直接指定需要调用的Activity Activity的隐式跳转: 不明确指定启动哪个Activity, ...

  8. Android 跳转Activity 的时候出现闪屏问题处理

    一般这种问题出现的原因就是某些activity的主题的设置了透明引起的 处理方法就是在界面跳转的时候时候添加 overridePendingTransition(0, 0); 例如 Intent in ...

  9. Tablayout 修改默认选项页,或者跳转到指定的选项页

    tablayout 的默认选项页为 viewpage.setCurrentItem(0) 如果想修改为第二页 viewpage.setCurrentItem(1) 即可 如果是根据跳转的情况来跳到不同 ...

最新文章

  1. Verilog语言中如何将memory型变量转换为普通变量
  2. Android NDK学习(七):NDK 编译支持 C++特有的库
  3. FreeRTOS 任务间同步和通信方法
  4. Android 折叠头部监听,抽屉式动画
  5. 丰田pcs可以关闭吗_丰田新款卡罗拉变化这么大 让老车主陷入沉思
  6. pythonifnotnone_python中if not x: 和 if x is not None: 和 if not x is None的使用和区别
  7. 手把手教你如何导入源码,zookeeper为例
  8. golang学习和使用经验总结
  9. 【mysql】mysql常用语句
  10. 文本分类pytorch Bert fine tune
  11. 利用hashmap的java_利用Java如何实现对HashMap的集合使用
  12. webUploader大文件断点续传学习心得 多文件
  13. matlab求两向量夹角_高考数学解题技巧:专题21 平面向量中最值、范围问题高中数学黄金解题模板...
  14. 《HTML 编辑器》
  15. 扩散模型类似的方式训练text_to_text可不可以
  16. 从360与QQ之战看商业政治
  17. 维维豆奶做茶饮,是“转型”还是“割韭菜”?
  18. 游戏内聊天广告拉人数据监测
  19. 雅思备考笔记—听力篇(地图题)
  20. 7代cpu能装虚拟xp系统吗_小米手机最新系统MIUI 11 推荐

热门文章

  1. android studio gradle 学习,学习Android Studio里的Gradle
  2. mysql trace工具_100% 展示 MySQL 语句执行的神器-Optimizer Trace
  3. NYOJ 24 素数距离问题
  4. 《MySQL tips:查询时,尽量不要对字段进行操作》
  5. TAFE的完整形式是什么?
  6. 05-图像的平滑处理(不同的滤波操作)
  7. mysql并发获取唯一数值_高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]...
  8. uva 10037——Bridge
  9. HDU 2544 最短路(各种最短路算法的实现)
  10. 【C++学习笔记四】运算符重载