题目链接

题目描述

思路

选取的序列a可能的贡献有 0,1,2,3,…,n-1

a的贡献为d
贡献为d的序列有 [1,…,1+d], [2,…,2+d]… (共有n-d个这样的序列)

对贡献为d的序列a进行分析。
如果a的第一位为v,最后一位就为v+d。(因为a为非递减数列)
剩余m-2个地方需要填充。

问题就转变为,将 [v,v+1,v+2,…,v+d] 中的m-2个数字(可以重复,但序列需要是非递减数列)填入序列,求本质不同的序列个数。

用到的知识点为隔板法


举例说明一下:

将[1,2,3]中的6个数字填入序列,求本质不同的序列(非递减)个数。

设序列为[a,b,c,d,e,f],将2个板子插入序列中,可以得到其中一个为[a,b|c,d,e|f]

将第一个隔板左边的序列[a,b]视为[1,1]
将第一个隔板和第二个隔板之间的序列[c,d,e]视为[2,2,2]
将第二个隔板右边的序列[f]视为[3]

如果[1,2,3]中每个数字至少挑出来一个的话,结果为 C 5 2 C^{2}_5 C52​
因为挑出来的个数可以为0,可以当做增加了3个可放置隔板的位置,结果为 C 5 + 3 2 C^{2}_{5+3} C5+32​

如果不是很理解的话,可以将这个问题视为盒子问题来考虑,相当于将6个小球放在3个盒子里面,用2个隔板将小球分开。
如果每个盒子里面至少有一个小球的话,结果为 C 5 2 C^2_5 C52​(有5个地方可以放隔板)
如果盒子里面的小球个数可以为0的话,将原本盒子里面小球个数视为-1(至少一个就变成了可以是0个),需要放置的小球个数就变成6+3了,结果为 C 5 + 3 2 C^2_{5+3} C5+32​

AC的代码

#include<bits/stdc++.h>
#define int long long
using namespace std;const int N = 1e7, mod = 998244353;
int fac[N];// 快速幂
int power(int a, int b){int res = 1;while(b){if(b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}// 求逆元
int inv(int a){/*因为 x^(p-1) % p = 1(费马小定理)所以 [x^(p-2) * x] % p = 1x^(p-2) 相当于 x 的逆元*/return power(a, mod - 2);
}// 对阶乘预处理
void f(){fac[0] = 1;fac[1] = 1;for(int i = 2; i <= N; i++)fac[i] = fac[i - 1] * i % mod;
}// C^a_b
int C(int a, int b){return fac[b] * inv(fac[b - a]) % mod * inv(fac[a]) % mod;
}signed main(){f();int n, m;cin>>n>>m;int res = 0;for(int d = 1; d <= n - 1; d++){res += (n - d) * C(d, (m - 3) + (d + 1)) % mod * d % mod;res = res % mod;}cout<<res;
}

2021牛客寒假算法基础集训营5 B 比武招亲(上)相关推荐

  1. 2021牛客寒假算法基础集训营5 B.比武招亲(上)

    2021牛客寒假算法基础集训营5 B.比武招亲(上) 题目链接 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐在榜上留下了这样一道问题,谁做出来了就可以 ...

  2. 2021牛客寒假算法基础集训营5 B. 比武招亲(上)

    链接 https://ac.nowcoder.com/acm/contest/9985/B 题意 给定 n , m n,m n,m,定义一种序列,构造方法如下: 在 [ 1 , n ] [1,n] [ ...

  3. 【组合数+隔板法】2021牛客寒假算法基础集训营5 B 比武招亲(上)

    组合数+隔板法 比武招亲(上) 题目大意 解题思路 枚举差值 d d d. 难点在于用 x x x 个数字,构造一个单调不减的序列,序列元素个数为 m − 2 m-2 m−2. 理解一 运用隔板法,把 ...

  4. 2021牛客寒假算法基础集训营5 B 比武招亲(上)

    链接 https://ac.nowcoder.com/acm/contest/9985/B 思路 打表,得出一个7X7的表,根据行(m相同的情况下)找规律 第一行差分数列可以写成组合数形式C(n, 3 ...

  5. 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

    今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...

  6. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  7. 2021牛客寒假算法基础集训营1

    2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...

  8. 2021牛客寒假算法基础集训营2 D.牛牛与整除分块

    2021牛客寒假算法基础集训营2 D.牛牛与整除分块 题目链接 题目描述 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演 ...

  9. 2021牛客寒假算法基础集训营4

    九峰与签到题 链接:https://ac.nowcoder.com/acm/contest/9984/A 来源:牛客网 题目描述 九峰正在准备一场毒瘤比赛,他是如此毒瘤以致于他想方设法降低通过率,他认 ...

最新文章

  1. Spring Bean四种注入方式(Springboot环境)
  2. 全球首例猪心移植人体手术:57岁晚期心脏病患者术后状况良好
  3. My first syscall
  4. java的classpath是什么_JAVA初学者classpath设置情况是什么?
  5. java回调如何理解_如何理解java中的回调
  6. python可视化界面编程 pycharm_pycharm开发一个简单界面和通用mvc模板(操作方法图解)...
  7. pythonxml模块高级用法_Python利用ElementTree模块处理XML的方法详解
  8. 【详谈 Delta Lake 】系列技术专题 之 Streaming(流式计算)
  9. html5支持哪媒体,html5 支持哪些媒体元素
  10. java 建表 框架_【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作...
  11. C语言:存储类型,内存管理
  12. 项目管理中的配置管理
  13. debian linux上usb摄像头,[Debian] 安装USB摄像头(芯片ZC0301)驱动
  14. 解决连接远程服务器MySQL“ACCESS DENIED FOR USER‘ROOT‘@‘IP地址‘“问题
  15. C#:定义一抽象类Pet(宠物)类,作为基类
  16. 什么是计算机软件 软件定义,软件定义_软件定义教程_软件定义视频教程 _课课家...
  17. 中学课程辅导杂志中学课程辅导杂志社中学课程辅导编辑部2022年第34期目录
  18. java连接电信iot平台,物联网基础:BC28连接电信IOT平台进行数据传输
  19. 中国微粉化蜡行业市场供需与战略研究报告
  20. 最新经营级秀出打赏系统源码+带支付/视频教程

热门文章

  1. python上安装reuquest_八爪鱼增值API文档
  2. OpenStack 安装与使用过程中排错总结
  3. js实现返回上一页后刷新历史页面
  4. 异常:java.sql.SQLException: 无效的列类型: 1111
  5. html转换成pdf后乱码,解决html导出pdf中文乱码问题的正确姿式
  6. 【WebRtc0419项目经验总结】
  7. stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)
  8. springboot~uaa~scope对实体的字段添加限制
  9. 双击桌面上的计算机图标 不属于计算机,在Windows中“计算机”图标()。
  10. python对室内设计师有什么用_什么时候会用到python装饰器