BZOJ 4735 你的生命已如风中残烛
来源:互联网 发布:应用程序制作软件 u 编辑:程序博客网 时间:2024/06/06 11:35
Description
众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习。但是今天六花酱不想做数学题,于是他
们开始打牌。现在他们手上有m张不同的牌,牌有两种:普通牌和功能牌。功能牌一共有n张,每张功能牌都有一个
属性值wi,保证Sigma(wi)=m,1<=i<=N现在勇太将这m张牌随机打乱(一共有m!种不同的顺序)。一开始,六花先从
牌堆顶端取一张牌。接着每回合六花可以选择手中的一张牌打出,如果这张牌是普通牌,那么什么都不会发生;如
果这种牌是功能牌,那么六花需要从牌堆顶端再取wi张牌。重复这个过程直到六花手中没有手牌或六花要摸牌的时
候牌堆已经空了,如果是前者,则勇太胜利,否则六花胜利。举例来说,如果牌堆是{3,0,2,0,0)(用0表示
普通牌,其他数字表示wi),那么六花打牌的过程可以为:
1)取一张牌,手中的牌为{3}。
2)打出{3},再取三张牌,手中的牌为{0,2,0}。
3)打出这三张牌,还需要再取两张,取到第二张的时候牌堆中已没有牌,六花胜利。
而如果牌堆是{2,0,0,3,0},不难发现是勇太大胜利。现在,六花想要知道,这M!种顺序中,有多少种是能让自
己取得胜利的呢。当然这个问题对萌萌哒六花来说实在是太雉了,所以她来向你寻求帮助,你能帮帮她吗。
Input
第一行一个整数n。
第二行他个空格隔开的正整数wi。
通过输入你可以自己算出来m=Sigma(Wi),1<=i<=N
n≤40,1<wi≤10^5
Output
输出一个整数表示答案,答案可能很大,你只需要输出对998244353取模后的结果。
Sample Input
1
3
3
Sample Output
2
样例解释一
m!种牌堆中,{3,0,0),{0,3,0){0,0,3)各有两个,其中只有第一种满足条件。
样例解释一
m!种牌堆中,{3,0,0),{0,3,0){0,0,3)各有两个,其中只有第一种满足条件。
HINT
Source
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~数论~
我们将所有元素都减1,那么所有数的和就是0。当且仅当所有前缀和都>=0时,序列是合法的。
我们在最后再加上一个-1,得到新的前缀和序列,最后一项为-1。
将所有元素环排列,只需要找到切断的点即可。m+1个元素,环排列有m!种。
我们发现对于每一种环排列,当且仅当在-1处切开时排列是合法的,除最后一项外所有前缀和都>=0。
但是我们有m-n+1个-1,所以答案是m!/(m-n+1)种。
#include<cstdio>#include<iostream>using namespace std;#define ll long long#define mod 998244353int n,m,x,ans;int mi(int u,int v){int k=1;u%=mod;for(;v;v>>=1,u=(ll)u*u%mod) if(v&1) k=(ll)k*u%mod;return k;}int main(){scanf("%d",&n);ans=1;for(int i=1;i<=n;i++) scanf("%d",&x),m+=x;for(int i=2;i<=m;i++) ans=(ll)ans*i%mod;printf("%d",(ll)ans*mi(m-n+1,mod-2)%mod);return 0;}
阅读全文
1 0
- BZOJ 4735 你的生命已如风中残烛
- 测试你生命的颜色
- 测试你的生命路线
- 你是我的生命
- BZOJ4735 你的生命已如风中残烛 UOJ#273 【清华集训2016】
- UOJ#273. 【清华集训2016】你的生命已如风中残烛
- 你我的生命如此幽默
- 使用 Python能延长你的生命
- 你是我生命的一次奢侈
- 你是我生命的一首歌
- 编程可以毁掉你的生命
- 用最后的生命去爱你
- 《你是我生命中最美的相遇》
- 请不要轻视你的生命
- 杂想:在你生命中最重要的
- 用文字整理你的生命
- 生命掌握在你的手里
- 你是我生命中最美的相遇
- 不使用 小于 大于 和 if 求出a,b中的最大值
- 第七章
- 20170605——login页面(代码知识点分析)
- Button、选择框、日期、时间控件
- vsftp配置
- BZOJ 4735 你的生命已如风中残烛
- HTTP和HTTPS
- ( 笔记)android setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds区别
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- Android使用SlidingPaneLayout实现仿IOS滑动返回
- Qt:在QML中自定义贝塞尔动画曲线
- Android
- http://blog.duicode.com/category/bianchengxuexi/android/page/2
- TimeUnit详解