【codevs1515】 跳
http://codevs.cn/problem/1515/ (题目链接)
题意
给出一个棋盘,规定走到(x,y)的花费C(x,y)=C(x-1,y)+C(x,y-1),x=0或y=0时C(x,y)=1。求从(0,0)走到(n,m)的路径上的花费和的最小值。
Solution
画画图很容易就会发现是个杨辉三角,我们假设${n<=m}$于是问题就转化为了求解:
$${\sum^{n}_{i=0}{C^i_{m+i}}}$$
然后就不会了,翻了题解,没想到还有这种公式。。
$${\sum^{n}_{i=0}{C^i_{m+i}}=C^n_{n+m+1}}$$
来证明一下。对于一个组合${C^n_m}$我们可以这样来表示:格点图上从(0,0)到(n-m,m)的路径条数。(不好画图,尴尬→_→)
那么${\sum^{n}_{i=0}{C^i_{m+i}}}$就可以分别表示为:从(0,0)到(m,0)的路径条数;从(0,0)到(m,1)的路径条数;从(0,0)到(m,2)的路径条数······从(0,0)到(m,n)的路径条数。
而${C^n_{n+m+1}}$就可以表示为从(0,0)到(m+1,n)的路径条数。这与前者有什么关系呢?很简单,自己画个图就明白了。
于是我们用Lucas定理求解组合数取模。(然而这数据范围是什么鬼)
代码
// codevs1515
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define LL long long
#define inf 2147483640
#define MOD 1000000007
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; LL power(LL a,LL b) {
LL res=1;
while (b) {
if (b&1) res=res*a%MOD;
b>>=1;a=a*a%MOD;
}
return res;
}
LL C(LL n,LL m) {
LL s1=1,s2=1;
for (int i=n-m+1;i<=n;i++) s1=s1*i%MOD;
for (int i=1;i<=m;i++) s2=s2*i%MOD;
return s1*power(s2,MOD-2)%MOD;
}
LL Lucas(LL n,LL m) {
if (m==0) return 1;
return C(n%MOD,m%MOD)*Lucas(n/MOD,m/MOD)%MOD;
}
int main() {
LL n,m;
scanf("%lld%lld",&n,&m);
printf("%lld",(max(n,m)+Lucas(n+m+1,min(n,m)))%MOD);
return 0;
}
【codevs1515】 跳的更多相关文章
- CodeVs1515 跳
题目描述 Description 邪教喜欢在各种各样空间内跳. 现在,邪教来到了一个二维平面.在这个平面内,如果邪教当前跳到了(x,y),那么他下一步可以选择跳到以下4个点:(x-1,y), (x+1 ...
- [CodeVs1515]跳(lucas定理+费马小定理)
嘿嘿嘿好久没写数学题了,偶尔看到一道写一写... 题目大意:一个(n+1)*(m+1)[0<=n, m<=10^12,n*m<=10^12]的矩阵,C(0,0)=1,C(x,y)=C ...
- a标签点击跳转失效--IE6、7的奇葩bug
一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...
- nginx配置反向代理或跳转出现400问题处理记录
午休完上班后,同事说测试站点访问接口出现400 Bad Request Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...
- 移动端访问PC站点时自动跳转至移动站点
方法一: 百度Site APP的uaredirect.js 实现手机访问,自动跳转 <script src="http://siteapp.baidu.com/static/webap ...
- 【HTML】Html页面跳转的5种方式
目录结构: // contents structure [-] html实现 javascript方式实现 结合了倒数的javascript实现(IE) 解决Firefox不支持innerText的问 ...
- ABAP实现屏幕自己刷新和跳转功能
ABAP开发工程中,有时候需要让跳转出的屏幕自动实现跳转和刷新的功能,该功能的实现需要在屏幕PBO 里面调用相应的事件执行. 关键代码为: SET TITLEBAR ' 屏幕自动程序'. IF g_c ...
- iOS - 模态Model视图跳转和Push视图跳转的混合需求实现原理
在研发中总会遇到一些莫名的需求,本着存在即合理的态度跟大家分享一下"模态Model视图跳转和Push视图跳转的需求实现",本文仅仅传授研发技术不传授产品以及UE的思想,请大家合理对 ...
- iOS 10 跳转系统设置
苦心人天不负, 为了项目终于把 iOS 10 跳转系统设置的方法给搞定了, 很欣慰. http://www.cnblogs.com/lurenq/p/6189580.html iOS 10 跳转系统设 ...
随机推荐
- jQuery与Zepto的异同
一,同: Zepto最初是为移动端开发的库,是jQuery的轻量级替代品,因为它的API和jQuery相似,而文件更小.Zepto最大的优势是它的文件大小,只有8k多,是目前功能完备的库中最小的一个, ...
- 杀毒软件导致YourSQLDba备份失败
有一朋友咨询我,他配置的YourSQLDba 备份作业经常出现备份失败的情况,我帮忙查看了一下,首先从告警邮件中查看出错的具体信息,执行了下面SQL语句(来自于告警邮件) Exec YourSQLDb ...
- imcs初探
imcs简介 https://github.com/knizhnik/imcs 翻译过来是在内存上的列存储,在对于一张'静态'的表计算方面很有优势,在许多聚合运算中都有使用线程并行计算,而且其中使用了 ...
- 记录sql语句的执行记录,用于分析
SET STATISTICS PROFILE ONSET STATISTICS IO ONSET STATISTICS TIME ONGO --这之间是要执行的脚本select * from [Use ...
- TCP通信丢包原因总结
今天在公司问老大,公司的项目底层,是使用的TCP,因为可靠,自动断线重连,在底层都实现了,但是我记得TCP也会有掉包的问题,所以这文章就诞生了——关于TCP掉包的问题,TCP是基于不可靠的网络实现可靠 ...
- CentOS RedHat YUM 源扩展补充(32位、64位均有)
一般情况下强烈建议在CentOS6下面使用YUM配置安装LAMP环境,一些兄弟也很喜欢使用编译的安装方法,个人觉得如果不是对服务器做定制,用yum安装稳定简单,何必去download&make ...
- 4412开发板学习笔记-NFS服务器的搭建
转自iTOP-4412讨论群: http://www.topeetboard.com 先来介绍一下NFS: NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件 ...
- 添加文件到HDFS的集中缓存
需求是这样的,有一些文件,需要常驻内存,提高读取效率的情况下,可以使用HDFS的缓存机制进行预先缓存 先添加POOL,然后添加需要缓存的文件即可 hdfs cacheadmin -.tar.gz - ...
- ANSI Common Lisp Practice - My Answers - Chatper - 2
I work out the questions by myself Chapter 2 question 4. (defun greater (x y) (if (> x y) x y ) ) ...
- uva 140 bandwidth (好题) ——yhx
Bandwidth Given a graph (V,E) where V is a set of nodes and E is a set of arcs in VxV, and an orde ...