题目


分析

转化一下条件,就是 \(\sum{w_i}\geq i\),将所有牌权值减一,那就是 \(\sum{w'_i}\geq 0\)

根据Raney引理,总和为 1 的数列,在循环移位时,只有一种情况所有前缀和都为正数

那么只要构造出一个长度为 \(n\) 数列,总和为 1,那么它的答案就是 \((n-1)!\)

考虑在前面补一个 1,但是它并不能保证 1 一定在最前面。

那么将所有牌权值取反并翻转,可以发现现在可以在前面补 1,因为 1 一定是最大的,

所以只要钦定补的 1 在最前面,一共有 \(m-n+1\) 个 1,数列长度为 \(m+1\)

所以最终的答案为 \(\frac{m!}{m-n+1}\)


代码

#include <iostream>
using namespace std;
const int mod=998244353;
int n,m,ans=1;
int main(){
ios::sync_with_stdio(0);
cin>>n;
for (int i=1,w;i<=n;++i) cin>>w,m+=w;
for (int i=2;i<=m-n;++i) ans=1ll*ans*i%mod;
for (int i=m;i>m-n+1;--i) ans=1ll*ans*i%mod;
cout<<ans;
return 0;
}

#Raney引理,圆排列#洛谷 6672 [清华集训2016] 你的生命已如风中残烛的更多相关文章

  1. 洛谷 P6672 - [清华集训2016] 你的生命已如风中残烛(组合数学)

    洛谷题面传送门 题解里一堆密密麻麻的 Raney 引理--蒟蒻表示看不懂,因此决定写一篇题解提供一个像我这样的蒟蒻能理解的思路,或者说,理解方式. 首先我们考虑什么样的牌堆顺序符合条件.显然,在摸牌任 ...

  2. UOJ273 [清华集训2016] 你的生命已如风中残烛 【数学】

    题目分析: 把$0$卡牌看成$-1$.题目要求前缀和始终大于等于$1$. 最后添加一个$-1$,这样除了最后一位之外大于等于1,最后一位等于0. 构造圆排列.这样的话一个圆排列只有一个满足的情况,然后 ...

  3. 洛谷 P6667 - [清华集训2016] 如何优雅地求和(下降幂多项式,多项式)

    题面传送门 wjz:<如何优雅地 AK NOI> 我:如何优雅地爆零 首先,按照这题总结出来的一个小套路,看到多项式与组合数结合的题,可以考虑将普通多项式转为下降幂多项式,因为下降幂和组合 ...

  4. 洛谷 P2260 [清华集训2012]模积和 || bzoj2956

    https://www.lydsy.com/JudgeOnline/problem.php?id=2956 https://www.luogu.org/problemnew/show/P2260 暴力 ...

  5. 洛谷P2260 [清华集训2012]模积和(容斥+数论分块)

    题意 https://www.luogu.com.cn/problem/P2260 思路 具体思路见下图: 注意这个模数不是质数,不能用快速幂来求逆元,要用扩展gcd. 代码 #include< ...

  6. 洛谷 P4002 - [清华集训2017]生成树计数(多项式)

    题面传送门 神题. 考虑将所有连通块缩成一个点,那么所有连好边的生成树在缩点之后一定是一个 \(n\) 个点的生成树.我们记 \(d_i\) 为第 \(i\) 个连通块缩完点之后的度数 \(-1\), ...

  7. UOJ #274. 【清华集训2016】温暖会指引我们前行 [lct]

    #274. [清华集训2016]温暖会指引我们前行 题意比较巧妙 裸lct维护最大生成树 #include <iostream> #include <cstdio> #incl ...

  8. UOJ_274_[清华集训2016]温暖会指引我们前行_LCT

    UOJ_274_[清华集训2016]温暖会指引我们前行_LCT 任务描述:http://uoj.ac/problem/274 本题中的字典序不同在于空串的字典序最大. 并且题中要求排序后字典序最大. ...

  9. UOJ 275. 【清华集训2016】组合数问题

    UOJ 275. [清华集训2016]组合数问题 组合数 $C_n^m $表示的是从 \(n\) 个物品中选出 \(m\) 个物品的方案数.举个例子,从$ (1,2,3)(1,2,3)$ 三个物品中选 ...

  10. UOJ #269. 【清华集训2016】如何优雅地求和

    UOJ #269. [清华集训2016]如何优雅地求和 题目链接 给定一个\(m\)次多项式\(f(x)\)的\(m+1\)个点值:\(f(0)\)到\(f(m)\). 然后求: \[ Q(f,n,x ...

随机推荐

  1. go经典知识及总结

    1.无论sync.Mutex还是其衍生品都会提示不能复制,但是能够编译运行 加锁后复制变量,会将锁的状态也复制,所以 mu1 其实是已经加锁状态,再加锁会死锁. 所以此题的答案是 fatal erro ...

  2. 【Azure API 管理】APIM服务资源删除后,为什么不能马上创建相同名称的APIM服务呢?

    问题描述 使用Azure APIM服务,在删除旧资源准备新建相同名称的新APIM服务时,尝试多次都是出现"指定的服务名称已正在使用"错误.但实际上同名称的服务已经被删除.为什么多次 ...

  3. Java final 关键字使用

    1 package com.bytezreo.finaltest; 2 3 /** 4 * 5 * @Description final 关键字使用 6 * @author Bytezero·zhen ...

  4. Java 基本数据类型之间的运算规则

    1 /*** 2 * 基本数据类型之间的运算规则 3 * 4 * 前提:7中基本数据类型运算 5 * 6 * 1.自动类型提升: 7 * 当容量小的类型与容量大的数据类型的变量做运算时,结果自动提升为 ...

  5. C++//vector存放自定义数据类型

    1 //vector存放自定义数据类型 2 3 #include <iostream> 4 #include <string> 5 #include<fstream> ...

  6. Linux cp命令直接覆盖不提示的方法

    今天在做项目的时候需要在linux上拷贝A项目中upload目录下所有的资源到B项目中的uoload目录下,所以我就打算使用[cp]命令拷贝过去,拷贝的时候我加了[-f]参数了,但还是一个个的询问我是 ...

  7. Scriban语言手册中文版

    Scriban是一个快速.强大.安全且轻量级的模板引擎,同时兼容liquid语法规则. 项目地址:https://github.com/scriban/scriban 这个文档是语言语法的中文翻译 原 ...

  8. C++入门编程----C++运算符(8)

    什么是运算符 运算符是让程序执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符.C++运算符分别有算术运算符.关系运算符.逻辑运算符.赋值运算符.位运算符.移位运算符.size ...

  9. baidu 突然打不开了 20210621

    换了个dns 123.125.81.6 114.114.114.114

  10. Rust GUI库 egui 的简单应用

    目录 简介 简单示例 创建项目 界面设计 切换主题 自定义字体 自定义图标 经典布局 定义导航变量 实现导航界面 实现导航逻辑 实现主框架布局 调试运行 参考资料 简介 egui(发音为"e ...