链接

https://ac.nowcoder.com/acm/contest/9985/B

题意

给定 n , m n,m n,m,定义一种序列,构造方法如下:

  1. 在 [ 1 , n ] [1,n] [1,n] 中任意选择 m m m 次,得到了 m m m 个整数(显然数字可能相同);
  2. 将选出的 m m m 个数字排序之后得到一个序列 { a 1 , a 2 , . . . , a m } \{ a_{1},a_{2},...,a_{m} \} {a1​,a2​,...,am​}

定义一个序列的贡献为 max ⁡ { a 1 , a 2 , . . . , a m } − min ⁡ { a 1 , a 2 , . . . , a m } \max\{ a_{1},a_{2},...,a_{m} \}-\min\{ a_{1},a_{2},...,a_{m} \} max{a1​,a2​,...,am​}−min{a1​,a2​,...,am​},求所有不同的序列的贡献和。

思路

本题顺序不同元素相同的序列是等价的,所以直接考虑非降序列。

枚举差值 d d d,最小数有 n − d n-d n−d 种取法,考虑查分序列。

我们要求的是从 0 ∼ d 0\sim d 0∼d 中选出 m − 1 m-1 m−1个数(可相同),使差分序列前缀和等于 d d d 的方案数 ,

即将 d d d 个相同的球放入 m − 1 m-1 m−1 个不同的盒子,并允许空盒子的方案数 ,

等价于将 d + m − 1 d+m-1 d+m−1 个相同的球放入 m − 1 m-1 m−1 个不同的盒子,不允许空盒子的方案数 ,

所以 f ( d , m − 1 ) = ( d + m − 2 m − 2 ) f(d,m-1)=\binom{d+m-2}{m-2} f(d,m−1)=(m−2d+m−2​), r e s = ∑ d = 0 n − 1 d ∗ ( n − d ) ∗ f ( d , m − 1 ) res=\sum_{d=0}^{n-1}{d*(n-d)*f(d,m-1)} res=∑d=0n−1​d∗(n−d)∗f(d,m−1)。

代码

#include <bits/stdc++.h>
#define SZ(x) (int)(x).size()
#define ALL(x) (x).begin(),(x).end()
#define PB push_back
#define EB emplace_back
#define MP make_pair
#define FI first
#define SE second
using namespace std;
typedef double DB;
typedef long double LD;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef vector<int> VI;
typedef vector<PII> VPII;
// head
const LL MOD=998244353;
const int N=1e6+5;
LL fac[N],invfac[N];
LL qpow(LL a,LL b) {LL ret=1;while(b) {if(b&1) ret=ret*a%MOD;a=a*a%MOD;b>>=1;}return ret;
}
void init_invfac(int n) {fac[0]=1;for(int i=1;i<=n;i++) fac[i]=fac[i-1]*i%MOD;invfac[n]=qpow(fac[n],MOD-2);for(int i=n-1;~i;i--) invfac[i]=invfac[i+1]*(i+1)%MOD;
}
LL C(int a,int b) {return fac[a]*invfac[b]%MOD*invfac[a-b]%MOD;
}
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n,m;cin>>n>>m;init_invfac(n+m);LL res=0;for(int i=0;i<n;i++) res=(res+(n-i)*i%MOD*C(i+m-2,m-2)%MOD)%MOD;cout<<res<<'\n';return 0;
}

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

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

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

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

    题目链接 题目描述 思路 选取的序列a可能的贡献有 0,1,2,3,-,n-1. 设a的贡献为d. 贡献为d的序列有 [1,-,1+d], [2,-,2+d]- (共有n-d个这样的序列) 对贡献为d ...

  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. 量子计算赛道上的巨头拉锯战
  2. 开发随笔——NOT IN vs NOT EXISTS
  3. Unity 分离贴图 alpha 通道实践
  4. 日志分析系统分类有哪些_Java开发日志规范
  5. 营销大数据分析 关键技术_营销分析的3个最关键技能
  6. 算法题目——第K大的数
  7. 前端使用js发起http请求的几种方法
  8. 目标跟踪学习笔记_1(opencv中meanshift和camshift例子的应用)
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的共享单车管理系统
  10. 电子电路学习笔记(12)——稳压二极管
  11. linux raid卡驱动添加到内核,如何在Linux上编译RAID卡驱动方法详解
  12. swagger2报错Illegal DefaultValue null for parameter type integer
  13. 机器是如何学习的?(监督式学习)
  14. 蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现
  15. _012_IDEA_idea 创建工作空间(空项目) 项目组
  16. 棋盘效应(Checkerboard Artifacts)
  17. ESP32开发之旅——人体感应传感器HC-SR501
  18. 接口测试神器,它来了,它带着光环走来了
  19. 手机ftp服务器进入制定文件夹,ftp服务器 指定文件夹
  20. PSCC-Net: Progressive Spatio-Channel Correlation Network for Image Manipulation Detection and Locali

热门文章

  1. 字符串方法——截取字符串
  2. 编译加速的 8 个实用技巧 | 开发者说·DTalk
  3. 前端,是一种GUI软件
  4. html有序列表加斜线,Markdown语法
  5. 读书笔记(2)—— kernel 原子操作
  6. Mac OSX下破解软件的一般方法及过程
  7. Overture里镲片的使用
  8. 显卡核心 短路 原因是什么?
  9. 文字按照路径排版详解
  10. PythonChallenge —— 4(关卡)