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

BZOJ 4403序列统计

时间:2024-04-13 21:33:05浏览次数:21  
标签:frac int 4403 choose ans 序列 quad BZOJ


假设存在一个满足条件的长度为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枚举长度再求和即可

所以答案为

\[\sum ^n _{i=1} {\ r \ - \ l\ + \ 1 \ + \ i \choose \ i } \]

但是此时O(\(n^+\))的时间复杂度一定是不可行的,而\(i\)的值又一直发生改变,无法化简。

所以我们可以把 \(r-l+1+i \choose i\) 写为\(r-l+1+i \choose r-l+1\),再设\(x=r-l+1\)那么原式变为

\[\sum ^n _{i=1} {x+i\choose \ i } \]

也就是 $\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} \]

\[={\frac{n!}{m!*(n-m)!}} + { \frac {n!} {(m+1)!*(n-m-1)!}} \]

\[={\frac{n!*(m+1)}{(m+1)!*(n-m!)}}+{\frac{n!*(n-m)}{(m+1)!*(n-m)!}} \]

\[={\frac{(m+1+n-m)*n!}{(m+1)!*(n-m)!} } \]

\[={\frac{(n+1)!}{(m+1)!*(n-m)!}} \]

\[= {n+1 \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;
}

标签:frac,int,4403,choose,ans,序列,quad,BZOJ
From: https://www.cnblogs.com/0shadow0/p/18133399

相关文章

  • 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......
  • 多模态+时间序列8个创新方案
    超越传统时序!多模态+时间序列8个创新方案,刷新SOTA传统时间序列无法有效捕捉数据中复杂的非线性关系,导致在处理具有复杂动力学特性的系统时效果不佳。为解决此问题,研究者提出了多模态+时间序列。在预测任务中,多模态+时间序列能够整合来自不同类型数据源的信息,从而提供更全面的......
  • Pathformer做时间序列
    超越Transformer!时间序列预测新方法,霸榜AI顶会超越Transformer,霸榜AI顶会,patch做时间序列预测成为新烫门,强烈推荐想发论文的伙伴多关注!具体看,以往的时间序列预测创新着眼改模型,越来越卷,难度越来越大,而基于patch的方式,主要关注数据的输入形式,这是一个新思路,目前还在蓬勃发展中,创......
  • golang JSON序列化和反序列化
    目录JSON序列化(Marshaling)JSON反序列化(Unmarshaling)错误处理和注意事项在Go语言(通常被称为Golang)中,JSON(JavaScriptObjectNotation)是一种常用的数据交换格式。Go标准库提供了encoding/json包,使得JSON的序列化(将Go数据结构转换为JSON格式的字符串)和反序列化(将JSON格式的字符串......
  • 02-APIView和序列化
    常规通过CBV的写法#models.pyfromdjango.dbimportmodelsclassBook(models.Model):name=models.CharField(max_length=32)price=models.IntegerField()publish=models.CharField(max_length=64)classMeta:db_table="book&qu......
  • 读论文-电子商务产品推荐的序列推荐系统综述与分类(A Survey and Taxonomy of Sequent
    前言今天读的这篇文章是于2023年发表在"SNComputerScience"上的一篇论文,这篇文章主要对序列推荐系统进行了全面的调查和分类,特别是在电子商务领域的应用。文章首先定义了用户和产品集合,以及用户与产品的交互序列。然后,它解释了序列推荐系统的目标,即生成一个个性化的Top-K排名的......
  • 【论文随笔】多行为序列Transformer推荐(Multi-Behavior Sequential Transformer Reco
    前言今天读的论文为一篇于2022年7月发表在第45届国际计算机学会信息检索会议(SIGIR'22)的论文,文章主要为推荐系统领域提供了一个新的视角,特别是在处理用户多行为序列数据方面,提出了一种有效的Transformer模型框架。要引用这篇论文,请使用以下格式:[1]Yuan,Enming,etal."Multi......
  • 读论文-基于序列_会话的推荐_挑战,方法,应用和机遇(Sequential_Session-based Recommend
    前言今天读的论文为一篇于2022年7月7日发表在第45届国际ACM信息检索研究与发展会议论文集(Proceedingsofthe45thInternationalACMSIGIRConferenceonResearchandDevelopmentinInformationRetrieval.)的论文,文章主要讲述了序列推荐系统(SRSs)和基于会话的推荐系统(SBRSs......