1515 跳 - Wikioi
题目描述 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相关推荐
- 【wikioi】2495 水叮当的舞步(IDA*)
http://wikioi.com/problem/2495/ 这题我还是看题解啊囧.(搜索实在太弱.完全没想到A*,还有看题的时候想错了,.,- -) 好吧,估价还是那么的简单,判断颜色不同的数目即 ...
- 自制青蛙跳台阶小游戏~
青蛙跳台阶小游戏 1.概念(concept)文档 楔子(Setting):千百年来,人们在贬低别人时,常用井底之蛙来描述那个人,但这却让青蛙不开心了,于是青蛙决定跳出井底,为自己讨一个公道. 玩法(G ...
- [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...
- 在React Hook里使用history.push跳转
在React Hook里使用history.push跳转 react hook里用不了this.props.history的解决方法 首先引入 import { useHistory } from ' ...
- php连接mysql页面空白_求大神: php注册页面跳转出现空白页
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 register.php: 我感觉是不是insert这个地方出现问题,我试图填写不一样的密码但是他并没有提示错误而是跳转空白页 session_start ...
- HarmonyOS 界面跳转以及界面跳转的同时传递参数
HarmonyOS 不带参数界面之间跳转 package com.example.myapplication.slice; import com.example.myapplication.Resou ...
- Android 隐式跳转(Activity的隐式跳转)
学而时习之,温故而知新,放假前回顾下android 的 隐式跳转 Activity的显式跳转: 是直接指定需要调用的Activity Activity的隐式跳转: 不明确指定启动哪个Activity, ...
- Android 跳转Activity 的时候出现闪屏问题处理
一般这种问题出现的原因就是某些activity的主题的设置了透明引起的 处理方法就是在界面跳转的时候时候添加 overridePendingTransition(0, 0); 例如 Intent in ...
- Tablayout 修改默认选项页,或者跳转到指定的选项页
tablayout 的默认选项页为 viewpage.setCurrentItem(0) 如果想修改为第二页 viewpage.setCurrentItem(1) 即可 如果是根据跳转的情况来跳到不同 ...
最新文章
- Verilog语言中如何将memory型变量转换为普通变量
- Android NDK学习(七):NDK 编译支持 C++特有的库
- FreeRTOS 任务间同步和通信方法
- Android 折叠头部监听,抽屉式动画
- 丰田pcs可以关闭吗_丰田新款卡罗拉变化这么大 让老车主陷入沉思
- pythonifnotnone_python中if not x: 和 if x is not None: 和 if not x is None的使用和区别
- 手把手教你如何导入源码,zookeeper为例
- golang学习和使用经验总结
- 【mysql】mysql常用语句
- 文本分类pytorch Bert fine tune
- 利用hashmap的java_利用Java如何实现对HashMap的集合使用
- webUploader大文件断点续传学习心得 多文件
- matlab求两向量夹角_高考数学解题技巧:专题21 平面向量中最值、范围问题高中数学黄金解题模板...
- 《HTML 编辑器》
- 扩散模型类似的方式训练text_to_text可不可以
- 从360与QQ之战看商业政治
- 维维豆奶做茶饮,是“转型”还是“割韭菜”?
- 游戏内聊天广告拉人数据监测
- 雅思备考笔记—听力篇(地图题)
- 7代cpu能装虚拟xp系统吗_小米手机最新系统MIUI 11 推荐
热门文章
- android studio gradle 学习,学习Android Studio里的Gradle
- mysql trace工具_100% 展示 MySQL 语句执行的神器-Optimizer Trace
- NYOJ 24 素数距离问题
- 《MySQL tips:查询时,尽量不要对字段进行操作》
- TAFE的完整形式是什么?
- 05-图像的平滑处理(不同的滤波操作)
- mysql并发获取唯一数值_高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]...
- uva 10037——Bridge
- HDU 2544 最短路(各种最短路算法的实现)
- 【C++学习笔记四】运算符重载