题目


分析

因为第一名所在的学校一定会发喜报,

所以只有一个学校发喜报说明其它学校都没有发喜报

钦定第一名所在的学校为1,总方案要乘\(n\),那么两个1之间不可能出现两个相同的学校的学生

那么可以分成两部分,按照乘法原理,左边是在剩下的\(n-1\)个学校中选出\(i\)个进行排列,

右边是在剩下的\(2n-2-i\)个位置进行全排列,由于有\(n-i-1\)个学校需要2个位置,按照多重集的排列数还要除以\(2^{n-i-1}\)

总而言之,

\[ans=n\sum_{i=0}^{n-1}\frac{P_{n-1}^i(2n-2-i)!}{2^{n-i-1}}=n!\times \sum_{i=0}^{n-1}\frac{(2n-2-i)!}{(n-i-1)!2^{n-i-1}}
\]

代码

#include <cstdio>
#define rr register
using namespace std;
const int mod=998244353,N=1000011;
int n,fac[N<<1],inv[N],two[N],ans;
inline signed mo(int x,int y){return x+y>=mod?x+y-mod:x+y;}
signed main(){
scanf("%d",&n),fac[0]=fac[1]=inv[0]=inv[1]=two[0]=1;
for (rr int i=2;i<=n;++i) inv[i]=1ll*inv[mod%i]*(mod-mod/i)%mod;
for (rr int i=1;i<=n;++i) two[i]=1ll*two[i-1]*inv[2]%mod;
for (rr int i=2;i<=n;++i) inv[i]=1ll*inv[i-1]*inv[i]%mod;
for (rr int i=2;i<=2*n;++i) fac[i]=1ll*fac[i-1]*i%mod;
for (rr int i=0;i<n;++i) ans=mo(ans,1ll*fac[n*2-2-i]*two[n-i-1]%mod*inv[n-i-1]%mod);
return !printf("%d",1ll*ans*fac[n]%mod);
}

#排列组合#美团2018年CodeM大赛-决赛 A-Exam的更多相关文章

  1. 美团2018年CodeM大赛-初赛B轮 B 配送(最短路)

    美团2018年CodeM大赛-初赛B轮 B 配送 题意 题解 对于每个任务,只要从上个任务的终点出发即可. 时间.地点很少,可以算出每个地点-时间的最小花费. 以题目描述的起点终点起始结束时间建图,很 ...

  2. 美团2018年CodeM大赛-初赛B轮 C题低位值

    试题链接:https://www.nowcoder.com/acm/contest/151/C 定义lowbit(x) =x&(-x),即2^(p-1) (其中p为x的二进制表示中,从右向左数 ...

  3. 美团2018年CodeM大赛-资格赛 分数 暴力模拟

    链接:https://www.nowcoder.com/acm/contest/138/D来源:牛客网 小胖参加了人生中最重要的比赛——MedoC资格赛.MedoC的资格赛由m轮构成,使用常见的“加权 ...

  4. 美团2018年CodeM大赛-资格赛

    https://www.nowcoder.com/acm/contest/138#question A.下单 水题…… B.可乐 题意:求期望 代码: #include<iostream> ...

  5. 美团2017年CodeM大赛-初赛B轮-黑白树

    https://ac.nowcoder.com/acm/problem/13249 链接:https://ac.nowcoder.com/acm/problem/13249来源:牛客网 题目描述 一棵 ...

  6. 美团2017年CodeM大赛-初赛B轮 黑白树 (树形dp)

    大意: 给定树, 初始每个点全为白色, 点$i$有权值$k_i$, 表示选择$i$后, 所有距离$i$小于$k_i$的祖先(包括i)会变为黑色, 求最少选多少个点能使所有点变为黑色. 链上情况的话, ...

  7. 美团2017年CodeM大赛-初赛A轮 C合并回文子串

    区间dp一直写的是递归版本的, 竟然超时了, 学了一下非递归的写法. #include <iostream> #include <sstream> #include <a ...

  8. 2018.10.26 poj3421X-factor Chains(数论+排列组合)

    传送门 排列组合入门题. 令X=p1a1p2a2..pkakX=p_1^{a_1}p_2^{a_2}..p_k^{a_k}X=p1a1​​p2a2​​..pkak​​ 那么答案1就等于∑i=1kai\ ...

  9. Python实现排列组合

    # -*- coding: utf-8 -*-"""Created on Sat Jun 30 11:49:56 2018 @author: zhen"&quo ...

  10. 【指数型母函数】hdu1521 排列组合

    #include<cstdio> #include<cstring> using namespace std; int n,m,jiecheng[11]; double a[1 ...

随机推荐

  1. 案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出exce、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)

    需求   1.0-7通道压力采集,采集频率1~100Khz(1,10,20,30-1000Khz):  2.0-7通道压力,可设置补偿值,测量范围:  3.编码器0,1脉冲采集,计算位移,速度,加速度 ...

  2. pymysql基本语法,sql注入攻击,python操作pymysql,数据库导入导出及恢复数据---day38

    1.pymysql基本语法 # ### python操作mysql import pymysql ''' # ### 1.基本语法 #(1) 创建连接 host user password datab ...

  3. 1.Go 的基本数据类型

    Go 的基本数据类型

  4. 【Azure Function App】Java Function在运行中遇见内存不足的错误

    问题描述 在Function的Code+Test界面进行函数触发可以成功.因为Function为Blob Trigger,当在Blob容器下上传文件后,Function可以被正常触发但是报 outof ...

  5. Java 关于继承小练习2

    1 package com.bytezero.inherit2; 2 3 4 public class KidsTest 5 { 6 public static void main(String[] ...

  6. Java 小案列 this关键字使用+构造器 +方法+调用

    1 package com.bytezero.thistest; 2 3 public class Boy 4 { 5 private String name; 6 private int age; ...

  7. netcat 命令介绍及使用示例

    netcat 命令介绍及使用示例 nc(netcat)是一个强大的网络工具,它可以用于读取和写入数据流,支持 TCP 和 UDP 协议.它常被用于网络调试和网络服务的创建. 一.安装方法 centos ...

  8. Codeforces Round #848 (Div. 2) A~F 题解

    A. Flip Flop Sum 能换 \(-1,-1\) 就换,不能能换 \(1,-1\) 或 \(-1,1\) 也可以,否则只能换 \(1,1\). B. The Forbidden Permut ...

  9. MySQL学习之初识数据库

    •数据库的相关概念 DB : 数据库,保存一组有组织的数据的容器 DBMS : 数据库管理系统,又称为数据库软件(产品),用于管理 DB 中的数据 SQL : 结构化查询语言,用于和 DBMS 通信的 ...

  10. vue2init vue2z

    <template> <div> </div> </template> <script> export default { name: 'b ...