news 2026/6/15 6:53:39

计数【牛客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/15 11:50:37

AI 智能体高可靠设计模式:层级代理组

优化智能体解决方案需要软件工程确保组件协调、并行运行并与系统高效交互。例如预测执行[2]&#xff0c;会尝试处理可预测查询以降低时延&#xff0c;或者进行冗余执行[3]&#xff0c;即对同一智能体重复执行多次以防单点故障。 优化智能体解决方案需要软件工程确保组件协调、并…

作者头像 李华
网站建设 2026/6/15 11:41:40

企业级农商对接系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着农业产业化和数字化进程的加速推进&#xff0c;传统农商对接模式在信息传递、资源整合及交易效率方面面临诸多挑战。农产品供需信息不对称、流通环节冗长、交易成本高等问题制约了农业经济的发展。在此背景下&#xff0c;构建一套高效、智能的企业级农商对接系统成为优…

作者头像 李华
网站建设 2026/6/15 11:45:42

计算机毕业设计springboot校园自助商城系统 基于SpringBoot的校园综合服务交易平台 SpringBoot框架下的高校自助跳蚤市场与跑腿商城

计算机毕业设计springboot校园自助商城系统vz1x59 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。当“宅经济”与“共享”成为校园生活的主旋律&#xff0c;学生既渴望随时买到平…

作者头像 李华
网站建设 2026/6/15 12:55:44

什么样的程序员在35岁以后依然被公司抢着要?

朋友圈总刷到“35岁程序员焦虑”&#xff0c;有人怕被优化&#xff0c;有人愁转型。但也见过身边前辈&#xff0c;过了35岁反而成了公司“香饽饽”&#xff0c;新项目组抢着要。明明都是写代码&#xff0c;为啥有人越老越慌&#xff0c;有人越老越值钱&#xff1f;到底是技术栈…

作者头像 李华