[BZOJ 4403]序列统计
Description
给定三个正整数N、L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量。输出答案对10^6+3取模的结果。
Input
Output
输出包含T行,每行有一个数字,表示你所求出的答案对10^6+3取模的结果。
Sample Input
1 4 5
2 4 5
Sample Output
5
//【样例说明】满足条件的2个序列为[4]和[5]。
题解
记得做过这样一道题:[Luogu 3902]Increasing
里面的思想就是将严格递增的序列第$i$个数减去$i$变成单调不下降的序列,来方便处理答案。
这里我们用相同的思想。由于原序列单调不下降,我们可以让第$i$个数加上一个$i$,使原序列单调递增。
这样取值范围就变成了$[L+1, R+n]$,一共$n+R-L$个数,这样对于长度为$n$的序列我们只要求$C^n _{n+R-L}$ = $C^{R-L} _{n+R-L}$。
然而到这里还没结束,题目要求的是长度为$[1, n]$。
简而言之就是求:
$$\sum _{i=1} ^n {C^{R-L} _{i+R-L}}$$
我们这里要想到这样一个公式:$C^m _n = C^{m-1} _{n-1}+C^m _{n-1}$,
我们再看上面这个式子,令$k = R-L$:
$ans=C_{1+k}^k+C_{2+k}^k+C_{3+k}^k+…+C_{n+k}^k$
$=C_{1+k}^{1+k}-1+C_{1+k}^k+C_{2+k}^k+C_{3+k}^k+…+C_{n+k}^k$
$=(C_{1+k}^{1+k}+C_{1+k}^k)+C_{2+k}^k+C_{3+k}^k+…+C_{n+k}^k-1$
$=(C_{2+k}^{1+k}+C_{2+k}^k)+C_{3+k}^k+…+C_{n+k}^k-1$
$=(C_{3+k}^{1+k}+C_{3+k}^k)+…+C_{n+k}^k-1$
$……$
$=C_{n+k+1}^{k+1}-1$。
求$C_{n+k+1}^{k+1}$用$Lucas$求就可以了。
//It is made by Awson on 2017.10.7
#include <map>
#include <set>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <vector>
#include <cstdio>
#include <string>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define Min(a, b) ((a) < (b) ? (a) : (b))
using namespace std;
const int N = 1e6+; int n, l, r;
int A[N+], B[N+]; int C(int n, int m) {
if (m > n) return ;
return (LL)A[n]*B[n-m]%N*B[m]%N;
}
int Lucas(int n, int m) {
if (!m) return ;
return (LL)C(n%N, m%N)*Lucas(n/N, m/N)%N;
}
void work() {
scanf("%d%d%d", &n, &l, &r);
printf("%d\n", (Lucas(n+r-l+, r-l+)-+N)%N);
}
int main() {
A[] = B[] = A[] = B[] = ;
for (int i = ; i <= N; i++)
B[i] = -(LL)(N/i)*B[N%i]%N;
for (int i = ; i <= N; i++)
A[i] = (LL)A[i-]*i%N,
B[i] = (LL)B[i-]*B[i]%N;
int t;
scanf("%d", &t);
while (t--)
work();
return ;
}
[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 序列统计——转化成组合数的思路
题目: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 ...
随机推荐
- RabbitMQ封装实战
先说下背景:上周开始给项目添加曾经没有过的消息中间件.虽然说,一路到头非常容易,直接google,万事不愁~可是生活远不仅是眼前的"苟且".首先是想使用其他项目使用过的一套对mq封 ...
- 测试与发布(Beta版本)
评分基准: 按时交 - 有分(测试报告-10分,发布说明-10分,展示博客-10分),检查的项目包括后文的两个方面 测试报告(基本完成5分,根据完成质量加分,原则上不超过满分10分) 发布说明(基本完 ...
- AWS中,如果使用了ELB,出现outofservice
平台:亚马逊AWS EC2 出现状况: 我创建了弹性平衡负载,也注册了实例,但是实例的状态一直是outofservice.为什么? 为什么会出现这个问题呢? 1:实例有问题: 2:负载平衡器创建的有问 ...
- 201421123042 《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰 ...
- SELinux与进程管理
- vue 保留两位小数 不能直接用toFixed(2) ?
用vue做项目的时候多多少少都会遇到这个问题 刚开始我是用toFixed()这个方法来写的 效果是有的 但是控制台一直是红红的围绕着我 突然想到 vue和jquery混搭 的 问题 于是乎 看了一下 ...
- mongo数据库的常见操作
连接mongodb数据库的命令查看对应数据库mongo.exeuse shujukuming;db.opportunity.findOne({"id":5}); db.opport ...
- WPF自定义控件与样式-自定义按钮(Button)
一.前言 程序界面上的按钮多种多样,常用的就这几种:普通按钮.图标按钮.文字按钮.图片文字混合按钮.本文章记录了不同样式类型的按钮实现方法. 二.固定样式的按钮 固定样式的按钮一般在临时使用时或程序的 ...
- bootstrap表格 之多选数据的获取
使用表格的时候经常会用到多选的功能,比较常用,下面写一个小Dome记录一下 如下:单击批量删除按钮之后,需要获取选中行数据,传值到后台进行处理 一.获取选择行的数据 btnplDel是按钮id:tab ...
- 百度地图api的用法
功能: 1.点击"江干区",地图自动定位到该区域,并且该区域出现overlay(红色) 2.点击"派出所"."社区"级别时,地图也自动定位同 ...