news 2026/4/23 13:57:38

计数【牛客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/4/23 10:47:52

Redis MCP

在TRAE国际版中集成并使用Redis MCP&#xff08;Model Context Protocol&#xff09;&#xff0c;核心在于将Redis作为一个高效、可靠的外部记忆体和数据交换站。这能让应用在AI会话间保持状态、缓存结果或管理队列。最佳实践可以从以下几个角度来理解和实施&#xff1a;1. 连接…

作者头像 李华
网站建设 2026/4/23 5:37:44

某中心公布29项研究奖项获资助者

某中心研究奖项获资助者名单公布 获资助者来自七个国家的25所大学&#xff0c;他们可以访问某中心的公共数据集&#xff0c;以及某云服务的AI/ML服务和工具。 某中心研究奖项团队 2023年1月30日 某中心研究奖项为学术研究人员提供无限制资金和某云服务促销积分&#xff0c;用于…

作者头像 李华
网站建设 2026/4/23 9:47:10

jQuery 获取 class 等于 abc 的 table 元素,获取到 table 以后,设置第三列和第七列边框为红色,使用 jQuery 设置内联样式

jQuery 获取 class 等于 abc 的 table 元素&#xff0c;获取到 table 以后&#xff0c;设置第三列和第七列边框为红色&#xff0c;使用 jQuery 设置内联样式 针对“多个表格”以及“样式被覆盖”的问题&#xff0c;之前的逐行遍历方式效率较低。我们可以利用 CSS 类 来管理样式…

作者头像 李华
网站建设 2026/4/23 9:49:27

vSphere.Next 潜在特性揭秘、VUM 自动化方案及 ghettoVCB 邮件功能更新

本文整合了从 vSphere 4.1 API 中窥见的下一代产品潜在特性、基于 vSphere SDK for PerlVIXPowerCLI 的 VUM 自动化实操方案&#xff0c;以及 ghettoVCB 脚本的邮件通知功能更新&#xff0c;为 VMware 技术探索者和运维人员提供参考。 一、从 vSphere 4.1 API 看 vSphere.Next …

作者头像 李华