【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之间的单调不降序列的数量
需要注意的是如果全部由R-L填充,则这个方案不合法,所以需要-1
ANS=C(n+R-L+1,n)-1
因为n+R-L较大,模数又是较小的质数,所以可以使用lucas定理
C(n,m)=C(n div mo,m div mo)*C(n mod mo,m mod mo) mod mo
const mo=;
var fac,exf:array[..mo]of int64;
cas,i,v,n,l,r:longint;
ans:int64; function c(n,m:longint):int64;
begin
if n<m then exit();
if (n<mo)and(m<mo) then exit(fac[n]*exf[m] mod mo*exf[n-m] mod mo);
exit(c(n mod mo,m mod mo)*c(n div mo,m div mo) mod mo);
end; begin
assign(input,'bzoj4403.in'); reset(input);
assign(output,'bzoj4403.out'); rewrite(output);
read(cas);
exf[]:=; exf[]:=; fac[]:=;
for i:= to mo do exf[i]:=exf[mo mod i]*(mo-mo div i) mod mo;
for i:= to mo do exf[i]:=exf[i-]*exf[i] mod mo;
for i:= to mo do fac[i]:=fac[i-]*i mod mo;
for v:= to cas do
begin
read(n,l,r);
ans:=c(n+r-l+,n)-;
ans:=(ans+mo) mod mo;
writeln(ans);
end;
close(input);
close(output);
end.
【BZOJ4403】序列统计(Lucas定理,组合计数)的更多相关文章
- 【BZOJ4403】序列统计 Lucas定理
[BZOJ4403]序列统计 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第 ...
- Bzoj 4403: 序列统计 Lucas定理,组合数学,数论
4403: 序列统计 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 328 Solved: 162[Submit][Status][Discuss] ...
- BZOJ4403 序列统计—Lucas你好
绝对是全网写的最详细的一篇题解 题目:序列统计 代码难度:简单 思维难度:提高+-省选 讲下题面:给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案 ...
- [bzoj4591][Shoi2015][超能粒子炮·改] (lucas定理+组合计数)
Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威 ...
- bzoj 4403 序列统计 卢卡斯定理
4403:序列统计 Time Limit: 3 Sec Memory Limit: 128 MB Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调 ...
- bzoj4403: 序列统计
我们很容易发现答案是C(R-L+N+1,N)-1 然后用一下lucas定理就行了 #include <iostream> #include <cstdio> #include ...
- BZOJ4403: 序列统计【lucas定理+组合数学】
Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组 ...
- 2018.09.09 bzoj4403: 序列统计(Lucas定理)
传送门 感觉单调不降序列什么的不好做啊. 于是我们序列中下标为i的元素的值加上i,这样就构成了一个单调递增的序列. 问题就变成了: 求出构造长度分别为1 ~ n且每个元素的值在l+1 ~ r+n之间的 ...
- bzoj4403 序列统计——组合数学
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4403 一开始想了个 O(n) 的做法,不行啊... O(n)想法是这样的:先考虑递推,设 f ...
随机推荐
- ADO.net增删改的使用
添加数据 -------------------------------------------------- //让用户输入要添加的内容 Console.WriteLine("请输入要添加 ...
- (1)《Head First HTML与CSS》学习笔记---HTML基本概念
前言: 1. 这本书并没有面面俱到,涵盖所有内容,只提供作为初学者真正需要的东西:基本知识和信心.所以这不是唯一的参考书.(我买了一本<HTML5权威指南>作为参考书和这本一起看, ...
- volley的框架安装与使用
最后一步非常重要 不然会报错: publish = project.has("release") 替换为: publish = project.hasProperty(&q ...
- IPython notebook快捷键(Jupyter notebook)
转自“https://blog.csdn.net/eswai/article/details/53642802” 本文整理了神器IPython Notebook(或Jupyter Notebook)的 ...
- 微信小程序组件解读和分析:十二、picker滚动选择器
picker滚动选择器组件说明: picker: 滚动选择器,现支持三种选择器,通过mode属性来区分, 分别是普通选择器(mode = selector),时间选择器(mode = time),日期 ...
- [Windows Server 2012] MySQL移机方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:MySQL ...
- mathAge.call(btn) 函数call 改变函数内 this #js
mathAge.call(btn) 函数call 改变函数内 this
- caffe数据读取
caffe的数据读取分为lmdb和 待清理,包括fast 这个一系列是怎么转换成lmdb数据的
- eclipse修改xml文件默认的打开方式为XML Editor
1.菜单:Window -> Preferences -> General -> Editors -> File Associations ...
- linux下设置python3.x为默认版本
rm /usr/bin/python ln -s /usr/local/bin/python3.x /usr/bin/python sybomlic 安装目录 系统目录