怎样学习哲学

时间限制: 1 Sec  内存限制: 128 MB
提交: 97  解决: 27
[提交][状态][讨论版]

题目描述

OI大师抖儿在夺得银牌之后,顺利保送pku。这一天,抖儿问长者:“虽然我已经保送了,但是我还要参加学考。马上就要考政治了,请问应该怎样学习哲学,通过政治考试?”
 长者回答:“你啊,Too Young Too Simple,Sometimes Naive!哲学这种东西,不是说想懂就能懂的,需要静心撕烤。你去后面的森林里好好想想。”
长者的后院有一片哲♂学森林。由于一些奥妙重重的原因,这片森林构成了一个n*m的矩形,其中每个点就代表了一棵树。此外,由于辣鸡出题人KJDH从中捣鬼,有些树被连根拔起(也就是消失了)。抖儿每天都要到树下撕烤,因此他想要在每一行选择一棵树。但是他非常讨厌走回头路,因此第i行选择的树必须比第i-1行的靠右。现在抖儿想知道,总共有多少种选择的方案。

输入

第一行三个整数n,m,p,分别表示森林的长、宽,以及消失的树的数目。
接下来p行每行两个整数,表示第ai行第bi列的树消失了。

输出

一行一个整数,表示方案数。由于答案可能很大,请对1000003取模。

样例输入

3 5 2
2 3
3 4

样例输出

5

提示

【样例说明】
方案一:选(1,1)(2,2)(3,3)
方案二:选(1,1)(2,2)(3,5)
方案三:选(1,1)(2,4)(3,5)
方案四:选(1,2)(2,4)(3,5)
方案五:选(1,3)(2,4)(3,5)
 
题解,可以将其看成三角形的一个类似的,走法问题,就是半三角形走法,然后就是发现方案数是C(n,m),这个是可以推出来,
然后就是dp,当前节点的方案数总,是它左上部分经过不合法点到达其的方案数之和,相减即为走到该点方案数。
这样可以证明,到该点的方案数是所有,因为任何经过左上的dp[i]方案中,是表示到达dp[i]的合法方案数,因此通过数学归纳法得证,
这个推断是正确的,为了简便,将n+1,m+1这棵树拔掉,然后这个点的方案数,就为结果了。
 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#define mod 1000003
#define ll long long
#define Q 2007
using namespace std; int n,m,q;
ll p[mod+],inv[mod+],dp[Q];
struct Node
{
int x,y;
}a[Q]; bool cmp(Node x,Node y)
{
return x.x<y.x;
}
ll ksm(ll a,ll b)
{
ll ans=;
while (b)
{
if (b&) ans=a*ans%mod;
b/=;
a=a*a%mod;
}
return ans;
}
ll Lucas_C(int n,int m)
{
if (n<m) return ;
if (m==) return ;
if (n==m) return ;
if (n<mod) return p[n]*inv[m]%mod*inv[n-m]%mod;
else return Lucas_C(n%mod,m%mod)*Lucas_C(n/mod,m/mod)%mod;
}
int main()
{
p[]=;
for (int i=;i<=mod;i++)
p[i]=(p[i-]*i)%mod;
for (int i=;i<=mod;i++)
inv[i]=ksm(p[i],mod-);
scanf("%d%d%d",&n,&m,&q); for (int i=;i<=q;i++)
scanf("%d%d",&a[i].x,&a[i].y);
q++,a[q].x=n+,a[q].y=m+;
sort(a+,a+q+,cmp);
for (int i=;i<=q;i++)
{
dp[i]=Lucas_C(a[i].y-,a[i].x-);
for (int j=;j<i;j++)
if (a[i].x>a[j].x&&a[i].y>a[j].y)
dp[i]=(dp[i]-dp[j]*Lucas_C(a[i].y-a[j].y-,a[i].x-a[j].x-)%mod+mod)%mod;
}
printf("%lld",dp[q]);
}

怎样学好哲学(lucas+费马小定理)的更多相关文章

  1. 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理

    Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  2. BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)

    题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...

  3. [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT

    Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...

  4. [CodeVs1515]跳(lucas定理+费马小定理)

    嘿嘿嘿好久没写数学题了,偶尔看到一道写一写... 题目大意:一个(n+1)*(m+1)[0<=n, m<=10^12,n*m<=10^12]的矩阵,C(0,0)=1,C(x,y)=C ...

  5. 【bzoj1951】[Sdoi2010]古代猪文 费马小定理+Lucas定理+中国剩余定理

    题目描述 求  $g^{\sum\limits_{k|n}C_{n}^{\frac nk}}\mod 999911659$ 输入 有且仅有一行:两个数N.G,用一个空格分开. 输出 有且仅有一行:一个 ...

  6. bzoj 1951 lucas crt 费马小定理

    首先假设输入的是n,m 我们就是要求m^(Σ(c(n,i) i|n)) mod p 那么根据费马小定理,上式等于 m^(Σ(c(n,i) i|n) mod  (p-1)) mod p 那么问题的关键就 ...

  7. hdu 3037 费马小定理+逆元除法取模+Lucas定理

    组合数学推推推最后,推得要求C(n+m,m)%p 其中n,m小于10^9,p小于1^5 用Lucas定理求(Lucas定理求nm较大时的组合数) 因为p数据较小可以直接阶乘打表求逆元 求逆元时,由费马 ...

  8. 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)

    洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...

  9. hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)

    题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3.                  ...

随机推荐

  1. javasript校验字符串【正则和其他函数】

    /**javasript校验输入框值只能为数字中文英文和下划线**/function isRegex(s){ var reg=/^[a-zA-Z0-9_\u4e00-\u9fa5]+$/; if (! ...

  2. MySQL(六)之MySQL常用操作符

    前言 在前面的MySQL学习中,我们学习了MySQL的安装,管理以及配置,还有是它的DDL.今天给大家分享一下,MySQL的操作符和它的函数这部分. 千里之行始于足下,做什么事情都要脚踏实地的去做才能 ...

  3. 遇到的一些Jquery函数

     jQuery.extend()        jQuery.merge():函数用于合并两个数组内容到第一个数组. <script> $(function () { ,,], [,,] ...

  4. 使用vs2015编写c语言程序

    使用vs2015编写c语言程序 转载Yanky--博客园 http://www.cnblogs.com/yankyblogs/p/7058036.html   编写c语言程序的软件有很多,当年刚开始学 ...

  5. 网络编程:基于C语言的简易代理服务器实现(proxylab)

    本文记录了一个基于c socket的简易代理服务器的实现.(CS:APP lab 10 proxy lab) 本代理服务器支持keep-alive连接,将访问记录保存在log文件. Github: h ...

  6. 为什么可以通过URL来调起APP - URL Scheme和Intent

    在手机浏览器中可以通过URL调起APP是不是很神奇?这篇文章就告诉你为什么. URL Scheme 先从前端能接触到的URL Scheme分析一下 丢wiki:https://en.wikipedia ...

  7. ServletResponse的一些知识点

    ServletResponse* 服务器对浏览器做出的响应,将需要发送给浏览器的所有数据全部存放在此对象上.* 发送数据,使用流操作,将所需要的数据,存放在指定的流中,数据将显示到浏览器中* 字符流 ...

  8. Node.js中Async详解:流程控制

    安装 npm install async --save 地址 https://github.com/caolan/async Async的内容主要分为三部分 流程控制: 简化九种常见的流程的处理 集合 ...

  9. 软件工程(GZSD2015)学生博客列表

    2015年贵州师范大学软件工程课程学生博客列表 陈小丽 郑倩 唐洁 周娟 李利思 肖俊 罗文豪 周静 徐明艳 毛涛 邓洪虹 岳庆 李盼 安坤 何亚 涂江凤 张义平 杨明颢 杨家堂 胡贵玲 寿克霞 吴明 ...

  10. 2017春季 JMU 1414软工助教 链接汇总

    助教自我介绍 学生博客链接和coding链接 [1414软工助教]团队博客汇总 助教总结 评分 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1: ...