DP?

Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 128000/128000 K (Java/Others)
Total Submission(s): 3126    Accepted Submission(s): 978

Problem Description
Input
Input to the problem will consists of series of up to 100000 data sets. For each data there is a line contains three integers n, k(0<=k<=n<10^9) p(p<10^4 and p is a prime) . Input is terminated by end-of-file.
 

数据范围诡异系列~
题意:杨辉三角可以往左或者往右走走到$(n,k)$的最小权值和

显然每一层都要取一个权值,并且越往外权值越小,当然是尽量往外最好啦
对称,k>n/2时变成n-k
如果从$(n,k)$向左斜着上去,结果就是
${n\choose k}+{n-1\choose k-1}+...+{n-k\choose 0}+n-k$
然后用组合数递推式合并,就是
${n+1\choose k}+n-k$
 
问题在于T太大啦,以致于<10000的质数远比T小,我们预处理模所有质数意义下的阶乘吧!
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=;
int n,m,P;
bool notp[N];
int p[N];
void sieve(int n){
for(int i=;i<=n;i++){
if(!notp[i]) p[++p[]]=i;
for(int j=;j<=p[]&&i*p[j]<=n;j++){
notp[i*p[j]]=;
if(i%p[j]==) break;
}
}
}
int fac[N][],mp[N],pnum;
void ini(int n){
sieve(n);
for(int j=;j<=p[];j++){
int x=p[j];mp[x]=j;
fac[][j]=;
for(int i=;i<=n;i++) fac[i][j]=fac[i-][j]*i%x;
}
}
int Pow(int a,int b){
int re=;
for(;b;b>>=,a=a*a%P)
if(b&) re=re*a%P;
return re;
}
int Inv(int a){return Pow(a,P-);}
int C(int n,int m){
if(n<m) return ;
return fac[n][pnum]*Inv(fac[m][pnum])%P*Inv(fac[n-m][pnum])%P;
}
int Lucas(int n,int m){
if(n<m) return ;
int re=;
for(;m;n/=P,m/=P) re=re*C(n%P,m%P)%P;
return re;
}
int main(){
freopen("in","r",stdin);
int cas=;
ini();
while(scanf("%d%d%d",&n,&m,&P)!=EOF){
if(m>n/) m=n-m;
pnum=mp[P];
printf("Case #%d: %d\n",++cas,(Lucas(n+,m)+n-m)%P);
}
}
 
 
 
 
 
 

HDU 3944 DP? [Lucas定理 诡异的预处理]的更多相关文章

  1. HDU 3944 DP? (Lucas定理)

    题意:在杨辉三角中让你从最上面到 第 n 行,第 m 列所经过的元素之和最小,只能斜向下或者直向下走. 析:很容易知道,如果 m 在n的左半部分,那么就先从 (n, m)向左,再直着向上,如果是在右半 ...

  2. 【bzoj2111】[ZJOI2010]Perm 排列计数 dp+Lucas定理

    题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Mogic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Mogic的,答案可能很 ...

  3. hdu 3944 DP? 组合数取模(Lucas定理+预处理+帕斯卡公式优化)

    DP? Problem Description Figure 1 shows the Yang Hui Triangle. We number the row from top to bottom 0 ...

  4. BZOJ 2111 [ZJOI2010]Perm 排列计数:Tree dp + Lucas定理

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2111 题意: 给定n,p,问你有多少个1到n的排列P,对于任意整数i∈[2,n]满足P[i ...

  5. [CTSC2017][bzoj4903] 吉夫特 [状压dp+Lucas定理]

    题面 传送门 思路 一句话题意: 给出一个长度为 n 的序列,求所有长度大于等于2的子序列个数,满足:对于子序列中任意两个相邻的数 a和 b (b 在 a 前面),$C_a^b mod 2=1$,答案 ...

  6. bzoj 2111 [ZJOI2010]Perm 排列计数(DP+lucas定理)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2111 [题意] 给定n,问1..n的排列中有多少个可以构成小根堆. [思路] 设f[i ...

  7. hdu 3944 dp?

    DP? Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 128000/128000 K (Java/Others)Total Subm ...

  8. 【bzoj3782】上学路线 dp+容斥原理+Lucas定理+中国剩余定理

    题目描述 小C所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M).小C家住在西南角,学校在东北角.现在有T个路口进行施工,小C不能通过这些路口.小C喜欢走最短的路径到达目的 ...

  9. 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix

    Tom and matrix Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5226 Mean: 题意很简单,略. analy ...

随机推荐

  1. 搭建ruby环境

  2. as提示功能

  3. 关于atom

    以前老听别人说atom这款编辑器如何如何的好用,今天特地试了下,结果一不小心将顶部的工具栏给隐藏了,弄了半天都没弄出来.后来就在网上到处寻找帮助,试试这个试试那个,终于弄好了,其实是这样的. 首先在任 ...

  4. 用于 C&sharp; 图像识别的轮廓分析技术

    用于 C♯ 图像识别的轮廓分析技术 供稿:Conmajia 标题:Contour Analysis for Image Recognition in C# 作者:Pavel Torgashov 此中文 ...

  5. 十二个 ASP.NET Core 例子——1.1版本 EF MySql快速搭建

    core1.0的时候搭建过一次mysql EF. 一大推问题.最近在core1.1 又重新搭了一次.简单搭建还挺快,没出现什么幺蛾子.总结下步骤 建立项目,例如ASP.NET Core1.1 WebA ...

  6. 函数iconv_substr和mb_substr

    二个函数iconv_substr和mb_substr,均可以在当前字符下进行字符串截取,以达到中文字符截取的不乱码. 应该如何选择呢? 1.iconv库在某些操作系统上可能运行不正确,需要安装GNU扩 ...

  7. (实用篇)使用PHP生成PDF文档

    http://mp.weixin.qq.com/s?__biz=MzIxMDA0OTcxNA==&mid=2654254929&idx=1&sn=8715d008d19af70 ...

  8. dedesms中的导致生成静态页面多出空白行解决办法

    前几天给朋友用织梦仿一个手机网站,保存处理好的代码,页面头部在浏览里莫名其妙多了一段空白区域,用调试工具查看,发现是代码里多了一行&#65279.后来发现很多网友在生成织梦页面的时候,头部 ...

  9. 获取select中的值

    分别使用javascript原生的方法和jquery方法<select id="test" name=""> <option value=&q ...

  10. TemplateMethod-模板模式

    什么是Template Method模式 在父类中定义处理流程的框架,在子类中实现具体处理的模式就称为Template Mehtod模式.模板模式的关键是:子类可以置换掉父类的可变部分,但是子类却不可 ...