news 2026/6/10 0:33:40

计数【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计数【牛客tracker 每日一题】

计数

时间限制:1秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

小sun最近对计数问题来了兴趣,现在他有一个问题想问问你:

有一个含有n nn个数字的序列,每个数的大小是不超过1000 10001000的正整数,同时这个序列是个单调不增序列。但是很不幸的是,序列在保存过程中有些数字丢失了,请你根据上述条件,计算出有多少种不同的序列满足上述条件,答案对1000000007 10000000071000000007取模。(具体可以看样例)

输入描述:

第一行包含一个整数n nn,表示这个序列的长度。

第二行为n nn个整数a i a_iai,用空格隔开,如果数字是0 00,代表这个数字丢失了,其他的数字都在1 ˜ 1000 1 \~\ 10001˜1000之间

输出描述:

输出一行,表示答案。

示例1

输入:

3 9 0 8

输出:

2

示例2

输入:

2 5 4

输出:

1

示例3

输入:

3 0 0 0

输出:

167167000

备注:

1 ≤ n ≤ 1 e 6 1≤n≤1e61n1e6

0 ≤ a i ≤ 1000 0≤a_i≤10000ai1000

解题思路

本题将单调不增序列的缺失位填充问题转化为组合数学隔板法求解,核心是把m mm个连续缺失位的合法填充约束(前值p r e ≥ pre≥pre填充值≥ ≥后值c u r curcur,且填充值单调不增)通过变量替换转化为非负整数解问题,对应组合数C ( p r e − c u r + m , m ) C(pre-cur+m, m)C(precur+m,m);首先预处理阶乘和逆元(快速幂求逆元),用于O ( 1 ) O(1)O(1)计算组合数,初始化前值p r e = 1000 pre=1000pre=1000(填充数最大为1000 10001000)、连续缺失位m = 0 m=0m=0、答案a n s = 1 ans=1ans=1,遍历序列统计连续0 00的个数,遇非0 00数则计算该段0 00的组合数并累乘到答案,更新p r e prepre为当前数,补a [ n + 1 ] = 1 a[n+1]=1a[n+1]=1确保最后一段0 00被处理,若原序列非0 00数不满足单调不增则答案为0 00;阶乘预处理O ( n + 1000 ) O(n+1000)O(n+1000)、遍历O ( n ) O(n)O(n),适配n ≤ 1 e 6 n≤1e6n1e6的规模,所有计算模1 e 9 + 7 1e9+71e9+7,精准统计合法序列数。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=1e6+10;constll M=1e3+10;ll fac[N],a[N];llqmi(ll a,ll b){ll res=1;while(b){if(b&1)res=res*a%p;a=a*a%p;b>>=1;}returnres;}llcomb(ll n,ll m){returnfac[n]*qmi(fac[m]*fac[n-m]%p,p-2)%p;}voidcalc(ll n){fac[0]=1;for(ll i=1;i<n+M;++i)fac[i]=fac[i-1]*i%p;}intmain(){ll n;cin>>n;calc(n);for(ll i=1;i<=n&&cin>>a[i++];);ll pre=1000,cur,m=0;ll ans=1;a[n+1]=1;for(ll i=1;i<=n+1;++i){if(a[i]==0)m++;else{if(m){ans=ans*comb(m+pre-a[i],m)%p;m=0;}pre=a[i];}}cout<<ans<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 11:49:51

刚刚,谷歌DeepMind登Nature封面!人类40亿年生命代码「开源」了

今天Nature封面&#xff0c;属于谷歌DeepMind&#xff01;生命&#xff0c;是一场长达40亿年代码迭代。现在&#xff0c;AlphaGenome破解98%基因暗物质&#xff0c;开启了人类「删除」疾病代码的上帝模式。今天&#xff0c;谷歌AlphaGenome登上了Nature封面&#xff01;去年5月…

作者头像 李华
网站建设 2026/6/6 11:53:55

图片处理神器!一键漂白去底超好用

下载链接 https://pan.freedw.com/s/OjJHWM 今天发现个超好用的图片处理工具ImgTool&#xff0c;完全免费还没广告&#xff0c;再也不用为图片处理发愁了&#xff01; 软件不用安装&#xff0c;双击就能直接用。最实用的就是裁剪功能&#xff0c;手机拍歪的图片拉一下四个角就…

作者头像 李华
网站建设 2026/6/6 12:57:19

计算机毕业设计springboot牙科诊所预约管理系统 基于SpringBoot的口腔门诊在线预约服务平台 基于SpringBoot的齿科诊疗预约与病历档案管理系统

计算机毕业设计springboot牙科诊所预约管理系统221734fg &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着现代生活节奏的加快&#xff0c;公众对口腔健康的重视程度日益提升&…

作者头像 李华
网站建设 2026/6/7 12:57:59

计算机毕业设计springboot花店管理系统 基于SpringBoot的鲜花零售管理平台 全链路鲜花库存与订单一体化系统

计算机毕业设计springboot花店管理系统4kj74&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 当线下花店遇上“即买即送”的消费节奏&#xff0c;传统手写单据、电话订花、人工盘…

作者头像 李华