传送门

感觉单调不降序列什么的不好做啊。

于是我们序列中下标为i的元素的值加上i,这样就构成了一个单调递增的序列。

问题就变成了:

求出构造长度分别为1 ~ n且每个元素的值在l+1 ~ r+n之间的单调递增的序列的总方案数。

那么对于一个长度为i的序列,构造出的方案数显然就是(r−l+ii)=(r−l+ir−l)\binom {r-l+i} {i}=\binom {r-l+i} {r-l}(ir−l+i​)=(r−lr−l+i​)

所以答案就是:

∑i=1n(r−l+ir−l)\sum _{i=1} ^n \binom {r-l+i} {r-l}∑i=1n​(r−lr−l+i​)

<=>

(∑i=1n(r−l+ir−l))+(r−l+1r−l+1)−1(\sum _{i=1} ^n \binom {r-l+i} {r-l})+\binom {r-l+1} {r-l+1} -1(∑i=1n​(r−lr−l+i​))+(r−l+1r−l+1​)−1

<=>

(∑i=2n(r−l+ir−l))+(r−l+2r−l+1)−1(\sum _{i=2} ^n \binom {r-l+i} {r-l})+\binom {r-l+2} {r-l+1} -1(∑i=2n​(r−lr−l+i​))+(r−l+1r−l+2​)−1

<=>

((r−l+nr−l))+(r−l+nr−l+1)−1(\binom {r-l+n} {r-l})+\binom {r-l+n} {r-l+1} -1((r−lr−l+n​))+(r−l+1r−l+n​)−1

<=>

((r−l+nr−l))+(r−l+nr−l+1)−1(\binom {r-l+n} {r-l})+\binom {r-l+n} {r-l+1} -1((r−lr−l+n​))+(r−l+1r−l+n​)−1

<=>

(r−l+n+1r−l+1)−1\binom {r-l+n+1} {r-l+1}-1(r−l+1r−l+n+1​)−1

然后就可以上lucas了

代码:

#include<bits/stdc++.h>
#define mod 1000003
#define ll long long
using namespace std;
int T_T;
ll n,l,r,fac[mod+5],ifac[mod+5];
inline ll lucas(ll a,ll b){
	if(a<b)return 0;
	if(a<mod&&b<mod)return fac[a]*ifac[b]%mod*ifac[a-b]%mod;
	return lucas(a%mod,b%mod)*lucas(a/mod,b/mod)%mod;
}
int main(){
	scanf("%d",&T_T),fac[0]=1,ifac[1]=ifac[0]=1;
	for(ll i=1;i<mod;++i)fac[i]=fac[i-1]*i%mod;
	for(ll i=2;i<mod;++i)ifac[i]=(mod-mod/i)*ifac[mod%i]%mod;
	for(ll i=2;i<mod;++i)(ifac[i]*=ifac[i-1])%=mod;
	while(T_T--)scanf("%lld%lld%lld",&n,&l,&r),printf("%lld\n",(lucas(n+r-l+1,r-l+1)+mod-1)%mod);
	return 0;
}

2018.09.09 bzoj4403: 序列统计(Lucas定理)的更多相关文章

  1. 【BZOJ4403】序列统计 Lucas定理

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

  2. Bzoj 4403: 序列统计 Lucas定理,组合数学,数论

    4403: 序列统计 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 328  Solved: 162[Submit][Status][Discuss] ...

  3. BZOJ4403 序列统计—Lucas你好

    绝对是全网写的最详细的一篇题解  题目:序列统计 代码难度:简单 思维难度:提高+-省选 讲下题面:给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案 ...

  4. bzoj 4403 序列统计 卢卡斯定理

    4403:序列统计 Time Limit: 3 Sec  Memory Limit: 128 MB Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调 ...

  5. bzoj4403: 序列统计

    我们很容易发现答案是C(R-L+N+1,N)-1 然后用一下lucas定理就行了 #include <iostream> #include <cstdio> #include ...

  6. BZOJ4403: 序列统计【lucas定理+组合数学】

    Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组 ...

  7. 2018.09.14 bzoj2982: combination(Lucas定理)

    传送门 貌似就是lucas的板子题啊. 练一练手感觉挺舒服的^_^ 代码: #include<bits/stdc++.h> #define mod 10007 #define ll lon ...

  8. bzoj4403 序列统计——组合数学

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4403 一开始想了个 O(n) 的做法,不行啊... O(n)想法是这样的:先考虑递推,设 f ...

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

    题意:给定三个正整数N.L和R, 统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量. 输出答案对10^6+3取模的结果. 对于100%的数据,1≤N,L,R≤10^9,1≤T≤100, ...

随机推荐

  1. django celery 定时任务

    可参考上一篇:http://www.cnblogs.com/wumingxiaoyao/p/8515075.html 1. 安装 django-celery-beat pip3 install dja ...

  2. xml 创建 和 处理 及其修改

    #创建xml import xml.etree.ElementTree as ET new_xml = ET.Element('namelist') personinfo = ET.SubElemen ...

  3. Mysql 2条记录 差值计算

    1 表结构 2:  其实 是2个相同的 表根据rownum= rownum-1 来计算,所以先了解单个表的查询 附上SQL: #查询出1天的数据升序 ) as rownum, info.equipme ...

  4. python 1 面向对象基础知识

    1.编码范式 编程  是程序员用特定的 语法+数据结构+算法 组成的代码来告诉计算机如何执行任务的过程 如果把编程比作习武,编程方式就是武林中的各种流派,而在编程的世界里面最常见的两大流派是:面向过程 ...

  5. scala --操作符和运算

    基本类型和操作 scala 的基本类型包括如下几种 数类型 ​ 整数类型 :Byte Short Int Long ​ 小数类型: Float Double 字符类型:Char 用'' 单引号包裹,是 ...

  6. javascript中this之说

    this是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象.不过,匿名函数的执行环境具有全局性,因此其this对象通常 ...

  7. 逻辑斯蒂回归VS决策树VS随机森林

    LR 与SVM 不同 1.logistic regression适合需要得到一个分类概率的场景,SVM则没有分类概率 2.LR其实同样可以使用kernel,但是LR没有support vector在计 ...

  8. Nsis Sqlite Plugin

    1.https://stackoverflow.com/questions/15346338/nsis-and-sqlite-integration 2.http://nsis.sourceforge ...

  9. spring-boot PageHelper

    分页插件PageHelper 参看了pagehelper-spring-boot,使用起来非常放方便,关于更多PageHelper可以点击https://github.com/pagehelper/M ...

  10. 运算符重载(C++)

    一.运算符重载机制: 一元运算符: @obj => operator @(obj) 二元运算符: obj@obj2 => operator @(obj,obj2) 注意:前置++.--与一 ...