怎样学习哲学

时间限制: 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. JavaScript--我发现!原来你是这样的JS(1)

    一.前言: 前段时间看红宝书(JavaScript高级程序设计),但没有计划的去看,也没有做详细的笔记,读了之后有点空虚,感觉不对劲啊,学的东西很难记住,印象不深啊,有种挫败感,作前端的js都学不好怎 ...

  2. 用python实现简单的数字信号软件滤波处理

    做嵌入式开发,经常需要通过逻辑分析仪对数字信号进行数据分析.如果信号源附近有强干扰源,并且逻辑分析仪滤波效果不好的话,获取到的数字信号,经常带有一些"毛刺",这些"毛刺& ...

  3. SessionStateMode之SQL Server共享session

    分布式应用首先要解决的是跨域的问题,解决session.frame.cookie的跨域是最基本的,然后才是负载均衡和性能优化,上面的不解决就没法往后面进行.上一博客主要是解决了frame跨域的问题,今 ...

  4. sed修炼系列(四):sed中的疑难杂症

    本文目录:1 sed中使用变量和变量替换的问题2 反向引用失效问题3 "-i"选项的文件保存问题4 贪婪匹配问题5 sed命令"a"和"N" ...

  5. 关于破解Quartus

    在网上找了很多资料,说的也很详细,安装的Quartus13.0,在破解的时候遇到x64和x86两种破解器,两个针对的路径不一样,如果搞混了~可能就会出现这种情况   Error: Current li ...

  6. ActiveMQ持久化消息的三种方式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt362 本文只介绍三种方式,分别是持久化为文件,MYSql,Oracle.下面 ...

  7. JAVA设计模式:状态模式

    声明:转载请说明来源:http://www.cnblogs.com/pony1223/p/7518226.html 一.引出状态模式 假设我们现在有一个糖果机项目,那么我们知道正常一般糖果机提供给用户 ...

  8. css浮动Float

    核心:浮动元素会脱离文档流并向左/向右移动,直到碰到父元素或者另外一个浮动元素. float :left 向左浮动 right 向右浮动 none (默认)     inherit  继承父元素 fl ...

  9. 结对作业-基于GUI的四则运算

    一.需求分析 1.题目要求: 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web ...

  10. 201521123014 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 Q1. 代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通 ...