题目链接:

[清华集训2016]你的生命已如风中残烛

题目大意:共有$m+1$张牌,其中有$n$张特殊牌,每张特殊牌有一个权值$w_{i}$表示取到这张牌能获得$w_{i}$次再抽牌的机会,保证$\sum w_{i}=m$,现在规定最后一张牌(即指定最后一张牌是哪个),初始抽第一张牌,求有多少种卡牌排列方式能使$m+1$张牌被抽完。

总方案数显然是$(m+1)!$即$m+1$个数的全排列,我们先不考虑强制固定最后一张牌的方案。将每一张牌给出一个权值表示抽到这张牌能获得的再摸牌的次数,显然普通牌的权值是$-1$,而特殊牌的权值是$w_{i}-1$,因为第一张牌抽取时不耗费摸牌次数,所以第一张牌的权值是$w_{i}$。那么求出每个位置$i$的前缀和即可表示抽完前$i$张牌后还剩的摸牌次数。显然如果一种排列合法最后一个位置(即$m+1$)的前缀和为$0$且之前每个位置的前缀和都大于$0$。那么对于一种合法排列如果将前面任意多张牌拿到最后,拿走部分的和是大于$0$的(设为$x$),那么没被移动的这些位置的前缀和就都要减$x$,没移动之前的最后一个位置的前缀和就是$-x<0$,即一定是不合法的。而对于任意一种排列,一定存在一个前缀和最小且最右的位置,对于这个位置之后的部分单独来看(即去掉这个位置及之前的部分)每个位置的前缀和一定大于0,所以只要把这个位置之后的部分拿到排列的最前面就能构造出这种排列循环同构的$(m+1)$种排列中合法的那种。所以可以得出结论对于循环同构的$m+1$个排列有且只有一个排列是合法的。合法的方案数就是$\frac{(m+1)!}{m+1}$即$m!$,而在这些合法的情况中被固定的那最后一张牌可能在普通牌的$(m+1-n)$个位置中的任意一个且在每个位置的方案数相同,所以最后的答案就是$\frac{m!}{m+1-n}$。

#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<bitset>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define mod 998244353
using namespace std;
int n,m;
int w[41];
ll ans=1ll;
ll quick(int x,int y)
{ll res=1ll;while(y){if(y&1){res=res*x%mod;}x=1ll*x*x%mod;y>>=1;}return res;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&w[i]);m+=w[i];}for(int i=1;i<=m;i++){ans=ans*i%mod;}ans=ans*quick(m-n+1,mod-2)%mod;printf("%lld",ans);
}

转载于:https://www.cnblogs.com/Khada-Jhin/p/10261442.html

[清华集训2016]你的生命已如风中残烛——组合数学相关推荐

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

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

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

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

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

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

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

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

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

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

  6. [清华集训2016]石家庄的工人阶级队伍比较坚强——三进制FWT

    题目链接: [清华集训2016]石家庄的工人阶级队伍比较坚强 题目大意:有$n=3^m$个人玩石头剪刀布,共$t$轮游戏,每轮每个人要和包括自己的所有人各进行$m$次石头剪刀布.每个人在$m$轮中的决 ...

  7. 【清华集训2016】数据交互

    [清华集训2016]数据交互 比较神的\(DDP\). 首先对于给出的一条链我们分两部分统计:\(lca\)以及其他部分. 我们设两个变量\(w_i,g_i\).一条路径的权值就是路径上所有点的\(w ...

  8. P6669 [清华集训2016] 组合数问题

    P6669 [清华集训2016] 组合数问题 题意: 给你n,m,k,问有多少对(i,j)满足K∣CijK|C_{i}^{j}K∣Cij​ (Cij是k的倍数C_{i}^{j}是k的倍数Cij​是k的 ...

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

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

最新文章

  1. java packetmaster_TCP中间件_java_server
  2. solr研磨之facet
  3. 260. 只出现一次的数字 III 【位运算】
  4. java 以什么开头_判断字符串以什么开头
  5. c语言函数 t啥意思,C语言函数大全(t开头)
  6. 第三次学JAVA再学不好就吃翔(part41)--修饰符
  7. Vue3的响应式原理解析
  8. 从内存管理原理,窥探OS内存管理机制
  9. cannot be cast to org.springframework.web.method.HandlerMethod 统一异常处理发生异常。
  10. spring MVC 及 AOP 原理
  11. IDEA集成MAVEN 报错
  12. 常见存储的串口连接管理方法
  13. Fast admin真垃圾 浪费我的时间不说还特么BUG一大堆
  14. Thinkphp 5.1安装
  15. 计算机显示无法打开打印机添加,windows无法打开添加打印机怎么办 无法打开添加打印机解决方法...
  16. 扫描二维码如何实现从微信内直接跳转外部浏览器打开指定页面
  17. 基于javaweb+springboot的医院管理系统(java+Springboot+ssm+mysql+maven)
  18. 为了做好精益化,精益达选择了它?(MES应用案例)
  19. 理论+实操:K8S搭建dns内部服务与控制器controlls五种模式
  20. lv双肩包尺寸对照表_2016最有人气MONOGRAM LV双肩包有哪些颜色与尺寸-美丽包包网...

热门文章

  1. js基础 全局变量和局部变量的理解
  2. LinearLayout weight使用技巧
  3. html中链接不自动变色,互联网常识:html如何让链接不变色
  4. C++ 使用typename来修复模板编译错误
  5. CodeForce题解——Thanos Sort
  6. 排序excel怎么设置_Excel排序技巧:这些不同方式的排序方法你都会了么?
  7. Endnote使用方法——检查参考文献
  8. 通过 Pyecharts 绘制可视化地球竟然如此简单!
  9. 如何用企业微信管理客户?
  10. Electron桌面应用开发