[Lucas定理][组合] Bzoj P4403 序列统计

Description

给定三个正整数N、L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量。输出答案对10^6+3取模的结果。

题解

  • 我们要求长度为n的元素在[1..r-l+1]中的单调不下降序列的数量
  • 考虑将第i个元素加上i-1,那么每个合法序列就会对应一个长度为n,元素为[1..n+m-1]中的单调递增的序列数量
  • 显然两者是一一对应的,那么就只用统计后面的贡献
  • 那么就是在n+m-1个元素中选n个,就是C(n+m-1,n)
  • 所以答案就是C(m,n+m)-1,然后用lucas定理算这个东东就好了

代码

 1 #include <cstdio>
 2 #include <iostream>
 3 #define ll long long
 4 using namespace std;
 5 const ll mo=1e6+3;
 6 ll n,l,r,T,ans,mul[mo],inv[mo];
 7 ll C(ll n,ll m) { return m>n?0:mul[n]*inv[mul[m]]%mo*inv[mul[n-m]]%mo; }
 8 ll lucas(ll n,ll m) { return !m?1:(C(n%mo,m%mo)*lucas(n/mo,m/mo)%mo)%mo; }
 9 int main()
10 {
11     mul[1]=mul[0]=1; for (int i=2;i<=mo;i++) mul[i]=i*mul[i-1]%mo;
12     inv[1]=inv[0]=1; for (int i=2;i<=mo;i++) inv[i]=(mo-mo/i)*inv[mo%i]%mo;
13     for (scanf("%lld",&T);T;T--) scanf("%lld%lld%lld",&n,&l,&r),ans=((lucas(r-l+1+n,r-l+1)-1)%mo+mo)%mo,printf("%lld\n",ans);
14 }

原文地址:https://www.cnblogs.com/Comfortable/p/11334940.html

时间: 2024-07-29 11:00:56

[Lucas定理][组合] Bzoj P4403 序列统计的相关文章

bzoj 4403 序列统计 卢卡斯定理

4403:序列统计 Time Limit: 3 Sec  Memory Limit: 128 MB Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组数.第2到第T+1行每行包含三个整数N.L和R,N.L和R的意义如题所述. Output 输出包含T行,每行有一个数字,表示你所求出的答案对106+3取模的结果. Sample Input 2 1 4

bzoj 4403 序列统计

4403: 序列统计 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 858  Solved: 413[Submit][Status][Discuss] Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组数. 第2到第T+1行每行包含三个整数N.L和R,N.L和R的意义如题所述. 1≤N,L,R≤10^

【数学/扩展欧几里得/Lucas定理】BZOJ 1951 :[Sdoi 2010]古代猪文

Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃花源了.猪

【BZOJ4403】序列统计(Lucas定理,组合计数)

题意:给定三个正整数N.L和R, 统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量. 输出答案对10^6+3取模的结果. 对于100%的数据,1≤N,L,R≤10^9,1≤T≤100,输入数据保证L≤R. 题意:WYZ作业 L和R本身没有意义,等价于[1,R-L+1],共有R-L+1种取值方法 显然是一个阶梯状的东西 但我们直接算需要枚举长度,通分又很麻烦 考虑使用R-L填充长度不足N的区间,这样问题就转化为: 求长度为N,元素大小都在1到R-L之间的单调不降序列的数量 需要注意

【BZOJ 4403】 4403: 序列统计 (卢卡斯定理)

4403: 序列统计 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 653  Solved: 320 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组数.第2到第T+1行每行包含三个整数N.L和R,N.L和R的意义如题所述. Output 输出包含T行,每行有一个数字,表示你所求出的答案对106+3

BZOJ-4403: 序列统计 (Lucas+排列组合)

4403: 序列统计 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1021  Solved: 477[Submit][Status][Discuss] Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组数. 第2到第T+1行每行包含三个整数N.L和R,N.L和R的意义如题所述. 1≤N,L,R≤10

Bzoj 4591: [Shoi2015]超能粒子炮&#183;改 数论,Lucas定理,排列组合

4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 178  Solved: 70[Submit][Status][Discuss] Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威力上有了本质的提升.它有三个参数n,k.它会 向编号为0到k的位置发射威力为C(n

【BZOJ4003】序列统计(组合数学,卢卡斯定理)

[BZOJ4003]序列统计(组合数学,卢卡斯定理) 题面 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组数. 第2到第T+1行每行包含三个整数N.L和R,N.L和R的意义如题所述. 1≤N,L,R≤10^9,1≤T≤100,输入数据保证L≤R. Output 输出包含T行,每行有一个数字,表示你所求出的答案对10^6+3取模的结果. Samp

BZOJ 3992: [SDOI2015]序列统计 NTT+快速幂

3992: [SDOI2015]序列统计 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1155  Solved: 532[Submit][Status][Discuss] Description 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S. 小C用这个生成器生成了许多这样的数列.但是小C有一个问题需要你的帮助:给定整数x,求所有可以生成出的,且满足数列中