BZOJ 4403序列统计

假设存在一个满足条件的长度为i的不下降序列(显然是一定存在的)那么只需要从中选出i个数即可
(不必在意选出具体数的大小,可以把满足条件的序列写下来,选几个数感受一下)。
但是$n \choose m $里的 \(m\) 的是就是 \((r-l+1)\) 吗?
乍一看是这样的,但是这样会出现一个问题,单调不下降子序列中的数可以重复,但如果只是从\(l\)到\(r\)去选数,那将会使结果变小。
所以可以先找出(当然是在脑子里找出)满足条件的长度为\(i\)的序列,然后和\(l\)到\(r\)这几个数合起来,从这几个数里面选出\(i\)个数。即 \(r-l+1+i\choose r-l+1\)
然后就从1$ \rightarrow $n枚举长度再求和即可
所以答案为
\]
但是此时O(\(n^+\))的时间复杂度一定是不可行的,而\(i\)的值又一直发生改变,无法化简。
所以我们可以把 \(r-l+1+i \choose i\) 写为\(r-l+1+i \choose r-l+1\),再设\(x=r-l+1\)那么原式变为
\]
也就是 $\qquad $ \({x+1 \choose x}\)+\({x+2 \choose x}\)+\({x+3 \choose x}\)+……+\({x+n \choose x}\)
接下来就是化简……
首先看一下\(n \choose m\) +\(n \choose m+1\)的结果是什么
\]
\]
\]
\]
\]
\]
所以有$${n\choose m}+{n\choose m+1}={n+1 \choose m+1}$$
那么给答案前面加一个\(x+1 \choose x+1\),根据刚刚的公式,\(x+1 \choose x+1\) + \(x+1 \choose x\) = \(x+2 \choose x+1\)
$\quad $$\quad $$\quad $$\quad $ 而\(x+2 \choose x\) + \(x+2 \choose x+1\) = \(x+3 \choose x+1\)
以此类推,最终答案是\({x+n\choose n}-1\)
附上代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define what_can_I_say main
#define crash_on_you 0
const int N=1e9+100,p=1000003;
int i,j,n,m,ans,t,l,r,x,fact[p+100],ny[p+100];
int op(int a,int b){
int ans=1;
while(b){
if(b&1)ans=ans*a%p;
a=a*a%p;
b>>=1;
}
return ans;
}
int c(int n,int m){
if(n<m)return 0;
return 1ll*(1ll*fact[n]*op(fact[m],p-2)%p)*op(fact[n-m],p-2)%p;
}
int lucas(int n,int m){
if(n<=p&&m<=p)return c(n,m);
return c(n%p,m%p)*lucas(n/p,m/p);
}
signed what_can_I_say(){
fact[0]=1;
for(i=1;i<p;i++)fact[i]=fact[i-1]*i%p;
scanf("%lld",&t);
while(t--){
scanf("%lld%lld%lld",&n,&l,&r);
x=r-l+1;
printf("%lld\n",(lucas(x+n,n)-1+p)%p);
}
return crash_on_you;
}
BZOJ 4403序列统计的更多相关文章
- Bzoj 4403: 序列统计 Lucas定理,组合数学,数论
4403: 序列统计 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 328 Solved: 162[Submit][Status][Discuss] ...
- BZOJ 4403: 序列统计 数学 lucas
4403: 序列统计 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4403 Description 给定三个正整数N.L和R,统计长度在 ...
- bzoj 4403 序列统计 卢卡斯定理
4403:序列统计 Time Limit: 3 Sec Memory Limit: 128 MB Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调 ...
- BZOJ 4403 序列统计(Lucas)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4403 [题目大意] 给定三个正整数N.L和R,统计长度在1到N之间, 元素大小都在L到 ...
- [BZOJ 4403]序列统计
Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组 ...
- bzoj 4403 序列统计——转化成组合数的思路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4403 先说说自己的想法吧. 设f[ i ][ j ]表示当前在倒数第 i 个位置,当前和后面 ...
- bzoj 4403: 序列统计【lucas+组合数学】
首先,给一个单调不降序列的第i位+i,这样就变成了单调上升序列,设原来数据范围是(l,r),改过之后变成了(l+1,r+n) 在m个数里选长为n的一个单调上升序列的方案数为\( C_m^n \),也就 ...
- 【BZOJ 4403】 4403: 序列统计 (卢卡斯定理)
4403: 序列统计 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 653 Solved: 320 Description 给定三个正整数N.L和R, ...
- BZOJ 3992 序列统计
Description 小C有一个集合\(S\),里面的元素都是小于\(M\)的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为\(N\)的数列,数列中的每个数都属于集合\(S\). 小C用 ...
- [BZOJ 3992][SDOI2015]序列统计
3992: [SDOI2015]序列统计 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 2275 Solved: 1090[Submit][Stat ...
随机推荐
- 一文带你了解 「图数据库」Nebula 的存储设计和思考
本文首发于 Nebula Graph Community 公众号 在上次的 nebula-storage on nLive 直播中,来自 Nebula 存储团队的负责人王玉珏(四王)同大家分享了 ne ...
- 用 NetworkX + Gephi + Nebula Graph 分析<权力的游戏>人物关系(上篇)
我们都知道<权利的游戏>在全世界都很多忠实的粉丝,除去你永远不知道剧情下一秒谁会挂这种意外"惊喜",当中复杂交错的人物关系也是它火爆的原因之一,而本文介绍如何通过 Ne ...
- nginx 基本功能
1.nginx简介 官方文档 Nginx是一个高性能WEB服务器,除它之外Apache.Tomcat.Jetty.IIS,它们都是Web服务器,或者叫做WWW(World Wide Web)服务器,相 ...
- Java 面向对象的特征一: * 封装与隐藏
1 * @ 面向对象的特征一: 2 * 封装与隐藏 3 * 创建一个类的对象以后,我们可以通过"对象.属性"的方式,对 4 * 对象的属性进行赋值,这里,赋值操作要受到属性的数据类 ...
- Vue 动态插入组件 用js函数的方式
Vue 动态插入组件 用js函数的方式 第一步 import vue组件 第二步 Vue把组件扩展进去 第三步 创建实例 第四步 将组件的el挂载到document.body上 第五步 设置组件内部d ...
- vue 下 placeholder 修改颜色
input::placeholder{ color:#585c89 !important; }
- Linux系统设置shell开机自启
自己写一个shell脚本 chmod -x file.sh sudo cp file.sh /etc/profile.d/ 将写好的脚本(.sh文件)放到目录 /etc/profile.d/ ...
- RecyclerView问题汇总
目录介绍 25.0.0.0 请说一下RecyclerView?adapter的作用是什么,几个方法是做什么用的?如何理解adapter订阅者模式? 25.0.0.1 ViewHolder的作用是什么? ...
- 记录--关于前端的音频可视化-Web Audio
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 最近听音乐的时候,看到各种动效,突然好奇这些音频数据是如何获取并展示出来的,于是花了几天功夫去研究相关的内容,这里只是给大家一些代码 ...
- 记录:Openlayers6.5 实现轨迹回放
这篇分享我记录到的一个案例,废话不多说,上代码 import Feature from 'ol/Feature' import LineString from 'ol/geom/LineString' ...