将每个位置上的数都-1,则显然相当于前缀和始终非负。

  然后就是完全想不到的了。考虑往里面加一张-1的牌。假设在一个合法排列的最后添上一个-1,那么在该排列的所有循环同构排列中,满足前m个前缀和都非负的排列只有原合法排列,因为如果更换开头的话显然有sm+1-shead-1<=sm+1<0。并且对于每一种循环同构排列,都存在一个满足前m个前缀和都非负的排列,因为只要取最小前缀和的后一个为开头即可,证明类似。这样的排列去掉最后一个数就对应了一个合法排列,而显然这样的排列个数就是循环同构排列的种类数,也即m!。同时每一张-1牌都可能位于末尾,而不管是哪张,对应的合法排列可以看成相同的,所以再除以(m+1-n)。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define N 42
#define P 998244353
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;}
int gcd(int n,int m){return m==0?n:gcd(m,n%m);}
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
int n,m,a[N],ans=1;
int inv(int a)
{int s=1;for (int k=P-2;k;k>>=1,a=1ll*a*a%P) if (k&1) s=1ll*s*a%P;return s;
}
int main()
{
#ifndef ONLINE_JUDGEfreopen("bzoj4735.in","r",stdin);freopen("bzoj4735.out","w",stdout);const char LL[]="%I64d\n";
#elseconst char LL[]="%lld\n";
#endifn=read();for (int i=1;i<=n;i++) m+=(a[i]=read())--;for (int i=2;i<=m;i++) ans=1ll*ans*i%P;cout<<1ll*ans*inv(m+1-n)%P;return 0;
}

转载于:https://www.cnblogs.com/Gloid/p/9954509.html

BZOJ4735 你的生命已如风中残烛(组合数学)相关推荐

  1. BZOJ4735:你的生命已如风中残烛(组合数学)

    Description 众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习.但是今天六花酱不想做数学题,于是他们开始打牌. 现在他们手上有m张不同的牌,牌有两种:普通牌和功能牌.功能牌一 ...

  2. [bzoj4735] 你的生命已如风中残烛

    [bzoj4735] 你的生命已如风中残烛 我的生命大概真的如风中残烛了. 什么神仙玩意. 考虑每一个排列,每个数-1 不难发现要求前缀和始终大于等于0. 然后考虑卡特兰数就GG了. 我们考虑在最后再 ...

  3. [清华集训2016]你的生命已如风中残烛——组合数学

    题目链接: [清华集训2016]你的生命已如风中残烛 题目大意:共有$m+1$张牌,其中有$n$张特殊牌,每张特殊牌有一个权值$w_{i}$表示取到这张牌能获得$w_{i}$次再抽牌的机会,保证$\s ...

  4. [LOJ#2329]「清华集训 2017」我的生命已如风中残烛

    [LOJ#2329]「清华集训 2017」我的生命已如风中残烛 试题描述 九条可怜是一个贪玩的女孩子. 这天她在一堵墙钉了 \(n\) 个钉子,第 \(i\) 个钉子的坐标是 \((x_i,y_i)\ ...

  5. 「题解」清华集训 2016 你的生命已如风中残烛

    本文将同步发布于: 洛谷博客: csdn: 博客园: 简书: 题目 题目链接:洛谷 P6672.UOJ 273. 题意简述 给你牌数为 m + 1 m+1 m+1 的牌堆,其中第 m + 1 m+1 ...

  6. P6672-[清华集训2016]你的生命已如风中残烛【结论】

    正题 题目链接:https://www.luogu.com.cn/problem/P6672 题目大意 长度为mmm的序列aaa,有nnn个数字不是000,其他m−nm-nm−n个是000.要求重排后 ...

  7. uoj#344. 【清华集训2017】我的生命已如风中残烛(计算几何)

    题面 传送门 题解 orzxyx 首先我们发现,一个点如果被到达大于一次,那么这个点肯定在一个环上.所以在不考虑环的情况下每个点只会被到达一次,那么我们就可以直接暴力了 简单来说,我们对每个点\(i\ ...

  8. UOJ#273. 【清华集训2016】你的生命已如风中残烛

    问题相当于有和为0的m个数 ai a i a_i,求 i i i有多少种排列使得任意一个前缀和都>=0 先给序列末尾加上一个-1,变成m+1个和为-1的数,要求前m个前缀和>=0 发现对于 ...

  9. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

最新文章

  1. 只需3步,随时随地玩转数据分析
  2. pytorch 语义分割loss_Recall Loss:用于不平衡图像分类和语义分割的召回损失
  3. PPT 下载 | 神策数据孙文亮:客户全生命周期管理从方法到实践全解析
  4. Layui / WEB UI
  5. GIT Windows服务端搭建笔记
  6. Linux相关配置 集群免密码登录配置
  7. mysql 5.7 redo replacation_mysql replace
  8. 美团靠外卖和到店业务赚来的钱
  9. 连接Oracle9i,因字符集造成乱码的解决方法
  10. 特征提取之——Haar特征
  11. 8. wordpress源码解析-目录结构-文件调用关系(1)
  12. python多级菜单_python练习题:多级菜单(dict练习)
  13. 鲁班图片压缩实现仿微信九宫格选择图片效果
  14. 7-6,输入厘米,输出英尺英寸
  15. signature=16ceadeb007b12c6b3bcab834073ab21,Signature: _____________________ 16 May 2006
  16. [译] 为什么设计师讨厌政治(如何解决)
  17. php获取当前日期所在自然周周一周末以及前后自然周始末
  18. 2021-02-03-ctf-如来十三掌
  19. wps 根据单元格值 设置单元格所在行 颜色(大于0 行红色 小于0 行xx色)
  20. 简述计算机在医院药学工作中的应用,[生物医药论文精品a]计算机在药学工作中的应用...

热门文章

  1. 不算不知道,花呗分期的真实利率居然这么高
  2. 功能测试报告怎么写?进来看标准模板
  3. (Talking face) EVP
  4. Pubmed格式字段说明
  5. fps游戏通用内存自瞄算法的原理与C++实现
  6. Pandas学习笔记
  7. 微信小程序生命周期(onLoad,onHide,onShow,onReady,onUnload)
  8. Android 签到打卡日历,自定义日期可带图标(附源码)
  9. java swing桌面程序打包成.exe文件
  10. 刚刚,华为决定起诉美国政府