正题


题目大意

nnn个颜色第iii个个数为numinum_inumi​个,然后要求第iii种颜色的最后一个一定在第i+1i+1i+1种的最后一个前面。求方案总数。


解题思路

首先先定义一个1∼n1\sim n1∼n的序列,然后依次将剩下的数插入。

第iii个颜色有z=(∑j=1i−1numj)+1z=(\sum_{j=1}^{i-1}num_j)+1z=(∑j=1i−1​numj​)+1个位置。那么方案数就是Cz+numi−1z−1C_{z+num_{i}-1}^{z-1}Cz+numi​−1z−1​

那么答案就是∑i=1nCz+numi−1z−1(z=(∑j=1i−1numj)+1)\sum_{i=1}^n C_{z+num_{i}-1}^{z-1}(z=(\sum_{j=1}^{i-1}num_j)+1)i=1∑n​Cz+numi​−1z−1​(z=(j=1∑i−1​numj​)+1)


codecodecode

#include<cstdio>
#define ll long long
using namespace std;
const ll XJQ=998244353,N=600100;
ll n,z,ans,jc[N],jcinv[N];
ll power(ll x,ll b)
{ll ans=1;while(b){if(b&1) ans=ans*x%XJQ;b>>=1;x=x*x%XJQ;}return ans;
}
ll C(ll n,ll m)
{return jc[n]*jcinv[m]%XJQ*jcinv[n-m]%XJQ;}
int main()
{jc[0]=1;jcinv[0]=1;for(ll i=1;i<=600000;i++){jc[i]=jc[i-1]*i%XJQ;jcinv[i]=power(jc[i],XJQ-2);}scanf("%lld",&n);z=ans=1;for(ll i=1;i<=n;i++){ll num;scanf("%lld",&num);num--;(ans*=C(num+z-1,z-1))%=XJQ;z+=num+1;}printf("%lld",ans);
}

jzoj4786-[NOIP2016提高A组模拟9.17]小a的强迫症【数论】相关推荐

  1. JZOJ4786. 【NOIP2016提高A组模拟9.17】小a的强迫症

    Description Input Output Sample Input 3 2 2 1 Sample Output 3 样例解释: Data Constraint 分析 根据题目,我们可以知道, ...

  2. [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列

    题目 描述 题目大意 一个序列,每次可以使一段区间内的所有数加一(模四). 问最少的操作次数. 思考历程 一看这题目,诶,这不就是那道叫密码锁的题目吗? 然后随便打一打,样例过了,就再也没有思考这一题 ...

  3. JZOJ 4786. 【NOIP2016提高A组模拟9.17】小a的强迫症

    Description Input Sample Input 3 2 2 1 Output Sample Output 3 样例解释: Data Constraint Solution 首先,我们设之 ...

  4. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  5. JZOJ 5371. 【NOIP2017提高A组模拟9.17】组合数问题

    Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数.举个例子,将{1,2,3}拆分成2 个集合有({1},{2,3}),({2},{1,3}),({3 ...

  6. JZOJ 100024. 【NOIP2016提高A组模拟7.6】数球

    Description 小A有n个球,编号分别为1到n,小A每次都会从n个球中取出若干个球,至少取一个,至多取n个,每次取完再放回去,需要满足以下两个条件. 每次取出的球的个数两两不同. 每次取出的球 ...

  7. JZOJ4708. 【NOIP2016提高A组模拟8.20】奇洛金卡达 倒着做的思想+并查集维护

    题目大意 给定一个长度小于等于kk的字符串和qq,表示现在有qq个操作,每个操作给定两个参数li,ril_i,r_i表示把现在的字符串第lil_i到rir_i把其中编号为奇数的按顺序写下来,再在后面把 ...

  8. 【NOIP2016提高A组模拟9.9】闭门造车

    题目 自从htn体验了一把飙车的快感,他就下定决心要闭门造车!但是他两手空空怎么造得出车来呢?无奈的他只好来到了汽车零部件商店. 一走进商店,玲琅满目的各式零件看得htn眼花缭乱.但是他很快便反应过来 ...

  9. JZOJ 5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人

    Description Input Output Sample Input 3 3 0 1 1 7 1 1 6 1 3 2 Sample Output 1 0 1 7 0 5 Data Constra ...

最新文章

  1. 实现网页中增加刷新按钮、链接的方法 搜集
  2. 从C语言的角度重构数据结构系列(十二)-C语言判断语法详解(ifswitch)
  3. leetcode109. 有序链表转换二叉搜索树(递归)
  4. oracle确实表达式,ORACLE正规表达式
  5. rabbitmq的下载与安装windows-64
  6. python槽怎么用_【Python成长之路】从零学GUI -- 多窗口跳转(信号与槽函数用法)...
  7. 基于高光谱遥感技术的农作物病虫害应用研究现状
  8. 使用PDF Converter OCR for Mac如何区分扫描的PDF和普通文件?
  9. 语言abline画不出线_北师大版八下数学 2.1不等关系 知识点精讲
  10. Winrunner实验三 测试脚本编程(一)
  11. STM32F107VCTx I2C通信
  12. 4K \1080P 高质量视频素材网站。
  13. 从零到一制作个人网站
  14. 让ppsx幻灯片进入可编辑状态
  15. Python九九口诀表
  16. 用google突破图书馆入口IP限制小技巧
  17. 【编译原理】分析PL0编译器
  18. CSS基础班笔记(二)
  19. mysql中设计suk表_电商项目-商品表(spu)、规格表(sku)设计
  20. PS-第十二天-PS色阶的使用原理浅谈

热门文章

  1. textjoin去重_SuperJoinText这个函数,弥补了TEXTJOIN的缺憾
  2. 机器学习与气象数据_气象大数据与机器学习联合实验室 大数据和气象的“联姻”...
  3. java 实现 指派_TAP任务指派问题的汇编实现
  4. python中的while语句怎么居中_python基础之while语句操作
  5. 紧跟月影大佬的步伐,一起来学习如何写好JS(下)
  6. [SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole
  7. 蓝桥杯2015初赛-牌型种数-dfs
  8. python中开关_pyq中的开关按钮
  9. qiankun 微前端_qiankun 微前端应用实践与部署(二)
  10. echarts字变大_在echarts中如何调整lable的字体大小?