首页 > 其他分享 >BZOJ 4403序列统计

BZOJ 4403序列统计

时间:2024-04-15 17:57:08浏览次数:29  
标签:LL 4403 序列 mod aligned BZOJ

BZOJ 4403序列统计

解析

序列满足单调不降序列,所以每个数可以选多次,我们可以把不同位置的同一个数看成多个,

这样 把区间为 \([L,R]\) 中的每一个数加上 \(i\) , 得到的区间大小为 \([L+1,R+n]\) , 也就是从 \(R-L+n\) 个数中选 \(n\) 个。

\[\begin{aligned}&{ \sum^n_{i=1}C^{i}_{R-L+i} } \\ =&{ \sum^n_{i=1}C^{R-L}_{R-L+i} } \end{aligned} \]

暴力会 \(\mathbb{T}\) , 我们可以把上述式子化简,由杨辉三角可易得:

\[{\begin{aligned} C^{m}_n=C^m_{n-1}+C^{m-1}_{n-1}\end{aligned}} \]

\(\therefore\) 加一项 \(\displaystyle {C^{R-L+1}_{R-L+1}}\) 再减去,式子可以压缩为:

\[{C^{R-L+n+1}_{R-L+1}} \]

于是,终于可以快乐 \(\mathbb {Lucas}\) 啦!

#include<bits/stdc++.h>
using namespace std;
const int mod = 1000003;
typedef long long LL;
LL n,l,r,t,len;
LL fac[mod+10],inv[mod+10];
LL C(LL x,LL y,LL p)
{
	if(x<y) return 0;
	return (fac[x]*inv[y]%p*inv[x-y]%p);
}
LL Lucas(LL x,LL y,LL p)
{
	if(y==0) return 1;
	return (C(x%p,y%p,p)*Lucas(x/p,y/p,p))%p;
}
void init()
{
	fac[0]=1;
	for(int i=1;i<mod;i++) fac[i]=fac[i-1]*i%mod;
	inv[1]=1;
	for(int i=2;i<mod;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
	inv[0]=1;
	for(int i=1;i<mod;i++) inv[i]=(inv[i-1]*inv[i])%mod;	
	return;
}
int main()
{
	init();
	scanf("%lld",&t);
	while(t--)
	{
		scanf("%lld%lld%lld",&n,&l,&r);
		len=r-l;
		printf("%lld\n",(Lucas(len+n+1,len+1,mod)-1+mod)%mod);
	}
	return 0;
}

注意

  • \(C^x_y\) 当 $x > y $ 时, 等于 $ 0 $ 。

  • 线性求逆元,求阶乘逆元。

标签:LL,4403,序列,mod,aligned,BZOJ
From: https://www.cnblogs.com/ppllxx/p/18136564

相关文章

  • C3P0反序列化链分析
    前言C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。使用它的开源项目有Hibernate、Spring等。之前有接触到过,但是没有深入了解,像之前学二次反序列化时,WrapperConnectionPoolDataSource就是C3P0的环境搭建<dependency><groupId>com.......
  • 一种融合指代消解序列标注方法在中文人名识别上的应用(下)
    二、使用了BERT模型和指代消解算法:加入BERT语言预处理模型,获取到高质量动态词向量。融入指代消解算法,根据指代词找出符合要求的子串/短语。【2】融入指代消解算法,根据指代词找出符合要求的子串/短语指代消解算法如图2所示,简单来说,就是考虑文档中子串/短语以及学习子......
  • DRF之序列化类介绍及使用
    一、序列化类1、介绍序列化组件在DRF中扮演着重要的角色,帮助开发者轻松地定义数据的序列化和反序列化过程,同时提供了数据验证、字段定义、嵌套序列化等功能。通过使用序列化组件,您可以更好地控制API的数据输入和输出,确保数据的有效性和一致性。serializers.Serializer是基......
  • Kryo反序列化链分析
    前言Kryo是一个快速序列化/反序列化工具,依赖于字节码生成机制(底层使用了ASM库),因此在序列化速度上有一定的优势,但正因如此,其使用也只能限制在基于JVM的语言上。Kryo序列化出的结果,是其自定义的,独有的一种格式。由于其序列化出的结果是二进制的,也即byte[],因此像redis这样可以存......
  • 如何使用groovy反序列化json
    使用Groovy反序列化JSON可以通过以下步骤实现:导入相关的Groovy库:在Groovy脚本或Groovy项目中,首先需要导入相关的Groovy库,以便使用JSON反序列化的功能。可以使用以下代码导入库:importgroovy.json.JsonSlurper复制创建JsonSlurper对象:JsonSlurper是Groovy提供的一个用于解......
  • Moirai:Salesforce的时间序列预测基础模型
    Moirai是Salesforce开发的用于时间序列预测的基础模型。它被设计为一种通用模型,能够预测广泛的时间序列。为了实现这种灵活性,该模型解决了时间序列数据相关的几个挑战,包括:处理各种数据频率(小时、日、周等);适应任何数量和类型的协变量,无论它们在未来是否已知;使用灵活的分布生......
  • BZOJ 4403序列统计
    假设存在一个满足条件的长度为i的不下降序列(显然是一定存在的)那么只需要从中选出i个数即可(不必在意选出具体数的大小,可以把满足条件的序列写下来,选几个数感受一下)。但是$n\choosem$里的\(m\)的是就是\((r-l+1)\)吗?乍一看是这样的,但是这样会出现一个问题,单调不下降子序......
  • FastJson反序列化漏洞利用和扫描探测工具-实战
    一、简介fastjson漏洞批量检测工具,根据现有payload,检测目标是否存在fastjson或jackson漏洞(工具仅用于检测漏洞),若存在漏洞,可根据对应payload进行后渗透利用,若出现新的漏洞时,可将最新的payload新增至txt中(需修改格式),工具完全替代手工检测,作为辅助工具使用。二、LDAP检测环境搭建......
  • java代码审计-反序列化
    Java代码审计-反序列化0x00漏洞挖掘业务代码简单来说,找readObject/readUnshared就好了protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{StringbaseStr=request.getParameter("str");b......
  • JackSon反序列化通杀
    前言Springboot一般都会自带JackSon这个依赖包,JackSon跟Fastjson有相同的功效简单复现packagecom.example.jakeson.demo;importjava.io.IOException;importjava.io.Serializable;publicclassUserimplementsSerializable{publicUser(){}publicOb......