组合数学

我好菜啊

想到dp去了。。。

事实上对于固定长度的数列,我们只用考虑选了哪些数就行了,所以这个就是$C(n+m-1,m-1)$

也就是$n$个数,划分成$m$段且允许空的方案数

然后变成$\sum_{i=1}^{n}{C(i+m-1,m-1)}$

经过popoqqq的推导方法

我们得出最终结果是$C(n+m,m)-1$

上$lucas$

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int P = 1e6 + , N = 1e6 + ;
int n, l, r;
ll inv[N], facinv[N], fac[N];
ll C(int n, int m) {
if(n < m) {
return ;
}
return fac[n] * facinv[m] % P * facinv[n - m] % P;
}
ll lucas(int n, int m) {
if(n < P) {
return C(n, m);
}
return C(n % P, m % P) * lucas(n / P, m / P);
}
int main() {
inv[] = ;
facinv[] = ;
inv[] = ;
facinv[] = ;
fac[] = ;
for(int i = ; i < P; ++i) {
if(i != ) {
inv[i] = (ll)(P - P / i) * inv[P % i] % P;
facinv[i] = facinv[i - ] * inv[i] % P;
}
fac[i] = fac[i - ] * i % P;
}
int T;
scanf("%d", &T);
while(T--) {
scanf("%d%d%d", &n, &l, &r);
int m = r - l + ;
ll ans = lucas(n + m, m) - ;
ans %= P;
ans = (ans + P) % P;
printf("%lld\n", ans);
}
return ;
}

bzoj4403的更多相关文章

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

    [BZOJ4403]序列统计(组合数学,卢卡斯定理) 题面 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取 ...

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

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

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

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

  4. bzoj4403: 序列统计

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

  5. BZOJ4403 序列统计—Lucas你好

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

  6. bzoj4403(模板题)

    序列统计,将答案转化,然后就是Lucas的模板题,用费马小定理瞎搞. #include<cstdio> #include<iostream> #include<algor ...

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

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

  8. 2018.09.09 bzoj4403: 序列统计(Lucas定理)

    传送门 感觉单调不降序列什么的不好做啊. 于是我们序列中下标为i的元素的值加上i,这样就构成了一个单调递增的序列. 问题就变成了: 求出构造长度分别为1 ~ n且每个元素的值在l+1 ~ r+n之间的 ...

  9. [提升性选讲] 树形DP进阶:一类非线性的树形DP问题(例题 BZOJ4403 BZOJ3167)

    转载请注明原文地址:http://www.cnblogs.com/LadyLex/p/7337179.html 树形DP是一种在树上进行的DP相对比较难的DP题型.由于状态的定义多种多样,因此解法也五 ...

  10. bzoj4403 两个串

    Description 兔子们在玩两个串的游戏.给定两个字符串S和T,兔子们想知道T在S中出现了几次, 分别在哪些位置出现.注意T中可能有“?”字符,这个字符可以匹配任何字符. Input 两行两个字 ...

随机推荐

  1. crontab定时任务(待补充)

    cron是一个ubuntu下的后台进程,用来定期的执行一些任务 想让cron执行你指定的任务,首先就要编辑crontab文件.crontab是一个文本文件,用来存放你要运行的命令 第一种 vim /e ...

  2. nginx别名配置,状态配置,include优化

    一.nginx帮助参数 下面是关于/application/nginx/sbin/nginx 的参数帮助 [root@A conf]# /application/nginx/sbin/nginx -h ...

  3. Linux iptables 从入门到放弃

    iptables表(iptables)和链(chains)    描述完iptables术语后,相信大家对iptables的表和链有了初步的了解.默认情况下,Iptables根据功能和表的定义划分包含 ...

  4. Struts基本原理 + 实现简单登录(二)

    MVC 概念 MVC全名是Model View Controller,是模型(model)—视图(view)—控制器(controller)的缩写,知道这么多就够了. 大家都知道SUN公司对于MVC模 ...

  5. Spring Cloud之网关搭建

    统一由网关进行拦截判断 要不放到每个服务里面就很不合适了 冗余 主要的: <dependency> <groupId>org.springframework.cloud< ...

  6. Java -- AWT 菜单建立, Menu, 右键菜单

    1. Menu类结构 2. 菜单示例:  MenuBar容器中可以装Menu,Menu容器中可以装MenuItem. public class SimpleMenu { Frame f = new F ...

  7. Oracle视图的使用

    --视图的语法 create [ or replace ] [NO Force | Force] View schema.view_name--视图名称 [(alias,...)inline_cons ...

  8. Mysql远程链接访问权限设置

    Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号 如何开启MySQL的远程帐号-1)首先以 r ...

  9. C++(九)— 虚函数、纯虚函数、虚析构函数

    1.虚函数 原因:通过指针调用成员函数时,只能访问到基类的同名成员函数.在同名覆盖现象中,通过某个类的对象(指针及引用)调用同名函数,编译器会将该调用静态联编到该类的同名函数,也就是说,通过基类对象指 ...

  10. Hibernate学习---第十节:Hibernate之QBC、样例查询&离线查询

    一.QBC (Query By Criteria) 主要有Criteria,Criterion,Oder,Restrictions类组成 1.java 代码如下: /** * 查询所有 */ @Tes ...