bzoj4403:序列统计

我好傻啊

题目

先来看看长度只能为\(n\)的情况

那么答案非常显然是\(\binom{m+n-1}{n}\)

其中\(m=R-L+1\)

因为我们要构造一个非降序列,显然可能一个数会被选择多次,组合非常不好做,于是我们可以把每一个数的下标加上其对应的下标那么现在的值域范围就变成了\([L+1,R+n]\),从这个区间里选数的话,我们把选出来的数减去选好之后对应的下标,发现得到的数就来自于原来的\([L,R]\),于是就变成了从\(R+n-L-1+1=n+m-1\)里选择的\(n\)个数,就是\(\binom{n+m-1}{n}\)

也可以这样理解,视为把\(n\)个小球放到\(m\)个盒子里,这样的话多个小球可以放到同一个盒子里,就对应着一个数可以被选择多次,盒子也可以是空着的,对应着一个数可以不被选择,根据插板法,这样的方案数就是\(\binom{n+m-1}{m-1}=\binom{n+m-1}{n}\)

现在的问题变成了求

\[\sum_{i=1}^{n}\binom{i+m-1}{m-1}\]

之后画一下柿子就是\(\binom{n+m}{m}=\binom{n+m}{n}\)

之后上\(Lucas\)就好了

#include<iostream>
#include<cstring>
#include<cstdio>
#define LL long long
#define re register
#define maxn 1000005
const LL mod=1000003;
inline int read()
{char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
LL fac[maxn],inv[maxn];
inline LL C(LL n,LL m)
{if(!m) return 1;if(!n) return 0;if(n==m) return 1;if(m>n) return 0;return fac[n]*inv[fac[m]*fac[n-m]%mod]%mod;
}
LL Lucas(LL n,LL m)
{if(!m) return 1;if(!n) return 0;if(n<mod&&m<mod) return C(n,m);return C(n%mod,m%mod)*Lucas(n/mod,m/mod)%mod;
}
int n,m,T,L,R;
int main()
{T=read();fac[0]=1;for(re int i=1;i<=mod;i++) fac[i]=fac[i-1]*i%mod;inv[1]=1;for(re int i=2;i<=mod;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;while(T--){n=read(),L=read(),R=read();m=R-L+1;printf("%lld\n",(Lucas(n+m,m)-1+mod)%mod);}return 0;
}

转载于:https://www.cnblogs.com/asuldb/p/10205701.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mui常用的方法

中对话框 语法&#xff1a;mui.confirm 用法 mui.confirm("确认要切换角色&#xff1f;", "提示", btnArray, function(e) {if(e.index 1) {} else {}});组件名作用alert警告框confirm确认框prompt输入对话框toast消息提示框&#xff08;自动消失&#x…

sudo: pip:找不到命令

https://blog.csdn.net/fcku_88/article/details/84191288转载于:https://www.cnblogs.com/xxswkl/p/11012709.html

java ListMapString,Object遍历的方法

java List<Map<String,Object>遍历的方法 public class Test {public static void main(String[] args) {List<Map<String, Object>> listMaps new ArrayList<Map<String, Object>>();Map<String, Object> map1 new HashMap<Strin…

vue如何更换网页标签的logo

Vue2 版本更换图标 在我们项目的根目录下面去添加或者替换 favicon.icon文件 找到我们的 build 文件夹下面的这两个文件 进行如下配置 favicon: resolveApp(’./favicon.ico’) 刷新后发现并没有什么效果 莫慌 最后一步 重启项目 改变端口 如果重启后还没有起到作用的话就…

Java并发编程的艺术(十)——Java中的锁(5)

1. LockSupport工具 1.1 LockSupport的作用 当需要阻塞或唤醒一个线程的时候&#xff0c;都会使用LockSupport工具类来完成相应工作。LockSupport定义了一组公共的静态方法&#xff0c;这些方法提供了做基本的线程阻塞和唤醒功能。 1.2 LockSupport提供的阻塞和唤醒方法 方法描…

运动-模拟返回顶部

第一步&#xff1a;获取底部的那个按钮对象&#xff0c;默认的情况下那个按钮对象是不可见的。可见的条件的是滚轮距离顶部有距离。 var oBtndocument.getElementById(btn1); 第二步&#xff1a;添加滚轮事件。 (1). 获取滚轮距离顶部的距离。如果距离大于0&#xff0c;就将按钮…

《JavaScript高级程序设计》笔记总结

在北京上班的我每天在上下班路上的时间总共是两个半小时&#xff0c;为了充实这两个多小时的时间&#xff0c;我便花了银子换得了下面这个宝贝 本书内容&#xff08;引用书中前言&#xff09; 本书提供了JavaScript开发人员必须掌握的内容&#xff0c;全面涵盖了JavaScript的…

Task执行多次

项目中&#xff0c;曾经出现过启动时数据库连接数瞬间增大&#xff0c;当时并没有注意该问题。 后期&#xff0c;由于Task任务多次执行&#xff0c;才着手查看这个问题&#xff0c;经排查&#xff0c;由于tomcat中webapp配置多次&#xff0c;导致webapp被扫描多次&#xff08;配…

ES6 的新特性总结

ES6 的新特性总结 关于声明变量 由 var 变成 let 和 const 区别&#xff1a; var声明的变量会挂载到window上&#xff0c;let和const声明的变量不会var声明的变量存在变量提升&#xff0c;而let和const声明的变量不存在变量提升let和const声明的变量形成块级作用域在同一作…

递推(一):递推法的基本思想

所谓递推&#xff0c;是指从已知的初始条件出发&#xff0c;依据某种递推关系&#xff0c;逐次推出所要求的各中间结果及最后结果。其中初始条件或是问题本身已经给定&#xff0c;或是通过对问题的分析与化简后确定。 利用递推算法求问题规模为n的解的基本思想是&#xff1a;当…

在vue中methods互相调用的方法

在vue中methods互相调用的方法 转载于:https://www.cnblogs.com/macT/p/10212878.html

MUI H5+ 开发app基础

加载子页面(防止手机性能差,出现上下滑动卡顿) 其中 url 就是子页面的路径 id 为自定义 通常和页面名称一致页面的跳转和传值 切记 如果使用mui组件内的底部导航跳转的方式只能使用document获取元素的id 页面跳转传值 新页面接收参数 页面初始化 H5加载完毕 判断某个元素中是…

对象

一、对象 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script type"text/javascript">/** JS中数据类型* String 字符串* Number 数值* Boolean 布尔值* Null 空值* Undefine…

uni-app 组件传值

uni-app中的组件之间的传值 我们将compontents中的test文件作为子组件 引入到index中使用 引入并使用 效果如下 父传子 首先我们在父组件中使用子组件的标签中去自定义title 在子组件中 通过props去接收并处理 效果如下&#xff1a; 子传父 子组件中 设置一个按钮…

JSP XML数据处理

JSP XML数据处理 当通过HTTP发送XML数据时&#xff0c;就有必要使用JSP来处理传入和流出的XML文档了&#xff0c;比如RSS文档。作为一个XML文档&#xff0c;它仅仅只是一堆文本而已&#xff0c;使用JSP创建XML文档并不比创建一个HTML文档难。 使用JSP发送XML 使用JSP发送XML内容…

Docker 图形界面管理工具 -- Portainer

Portainer&#xff08;基于 Go&#xff09;是一个轻量级的管理界面&#xff0c;可让您轻松管理Docker主机或Swarm集群。 Portainer的使用意图是简单部署。它包含可以在任何 Docker 引擎上运行的单个容器&#xff08;Docker for Linux 和 Docker for Windows&#xff09;。 Port…

vue cli3.0创项目报错‘This may cause things to work incorrectly. Make sure to use the same version for b’

错误&#xff1a; throw new Error(^Error:Vue packages version mismatch:- vue2.6.12 (C:\Users\Administrator\AppData\Roaming\npm\node_modules\vue\dist\vue.runtime.common.js) - vue-template-compiler2.6.11 (C:\Users\Administrator\AppData\Roaming\npm\node_module…

Web程序中使用EasyUI时乱码问题

今天偶然遇见使用easyUI时&#xff0c;弹窗和分页都是乱码的问题&#xff0c;耗费了很长的时间来解决&#xff0c;以此记住这个坑。 相信大家都会在使用easyUI时都会设置这样一句&#xff1a; 那么就有可能出现设置中文后的乱码问题&#xff0c;如下图&#xff1a; 因为在使用e…

关于window对象

window对象 - navigator&#xff08;导航器对象&#xff09; appCodeName&#xff1a;返回浏览器的代码名appName&#xff1a;返回浏览器的名称appVersion&#xff1a;返回浏览器的平台和版本信息cookieEnabled&#xff1a;返回指明浏览器中是否禁用cookie的布尔值platform&a…

160-PHP 文本替换函数str_replace(一)

<?php$strHello world!; //定义源字符串$searcho; //定义将被替换的字符$replaceO; //定义替换的字符串$resstr_replace($search,$replace,$str); //使用函数处理字符串echo "{$str}替换后的效果为&#xff1a;<br />{$res}";…