https://atcoder.jp/contests/agc036/tasks/agc036_c

题意

  有一个长度为 $n$ 的非负整数序列 $x$,初始时全为 $0$。一次操作定义为选择一对正整数 $i,j\space (i≠j)$,将 $x_i$ 加 $2$,将 $x_j$ 加 $1$。求 $m$ 次操作后能出现多少种不同的序列。

  $n\le 10^6, m\le 5\times 10^5$

题解

  降智题,其实很简单

  $m$ 轮操作后的序列 $p$ 必定满足如下条件:

    1. $\sum_{i=0}^{n-1} p_i = 3m$

    2. $\max{(p_0,p_1,...,p_{n-1})} \le 2m$

    3. 序列中最多有 $m$ 个数是奇数

  但是感觉这样好像就没考虑操作时 $i≠j$ 的约束啊?

  事实上你会发现那个东西根本不用考虑。

  显然,条件2 可以排除一些只有存在 $i=j$ 的操作时才会出现的序列,但不能排除所有的。然而我们发现没被排除的序列都可以通过不存在 $i=j$ 的操作的途径得到。具体证明我不太清楚,直觉上这个结论很对……

  于是问题转化成了求满足条件的序列 $p$ 的数量。

  忽略条件2,对于剩下两个条件,可以枚举有多少个数是奇数(假设有 $a$ 个),显然有 $a$ 个奇数的方案数是 $C_{n}^{a}$。然后考虑把这些奇数都当成 $1$,我们接下来要计算的就是使 $n$ 个非负偶数的总和为 $3m-a$ 的方案数,这等价于求 $n$ 个非负整数的总和为 $\frac{3m-a}{2}$ 的方案数,用小学的插板法即可,答案是 $C_{(3m-a)/2+n-1}^{n-1}$。用乘法原理把 $C_{n}^{a}$ 和 $C_{(3m-a)/2+n-1}^{n-1}$ 相乘就得到了有 $a$ 个奇数的答案,对于不同的 $a$ 的情况把答案相加即可。

  然后我们减掉满足条件1、3,不满足条件2 的情况数。不难发现序列 $p$ 中只有一个数会超过 $2m$,因为序列 $p$ 中所有数的和是 $3m$。于是这部分不用容斥了,我们直接钦定第一个数超过了 $2m$,然后把得到的答案乘以 $n$ 即可。

  现在我们要求满足如下条件的序列 $q$ 的数量:

    1. $\sum_{i=0}^{n-1} q_i = m$

    2. 序列中最多有 $m$ 个数是奇数

    3. $q_0\gt 0$

  无视条件3,前两个条件跟之前问题的两个条件一样,用之前的求法即可求出。

  然后再减去满足条件1、2,不满足条件3 的情况数。不满足条件3 意味着 $q_0=0$,且它不是奇数,所以无视 $q_0$ 后,这部分情况数就是求满足前两个条件的长度为 $n-1$ 的序列 $q$ 的数量。也用之前的求法即可。

  预处理逆元,时间复杂度最低为 $O(n+m)$。

【AGC 036C】GP2的更多相关文章

  1. 【AGC 005F】Many Easy Problems

    Description One day, Takahashi was given the following problem from Aoki: You are given a tree with ...

  2. 【AGC 002F】Leftmost Ball

    Description Snuke loves colorful balls. He has a total of N*K balls, K in each of his favorite N col ...

  3. 【AGC】增长服务1-远程配置示例

    ​ [AGC]增长服务1-远程配置示例 前言:上一次笔者给大家带来了AGC领域的性能管理服务的学习.这次我们再继续深化学习AGC的相关知识.在文章开始之前,再给读者简单介绍一下AGC,以免第一次来的读 ...

  4. 【赛事总结】◇赛时·8◇ AGC-027

    [赛时·8]AGC-027 日常AGC坑……还好能涨Rating +传送门+ ◇ 简单总结 感觉像打多校赛一样,应该多关注一下排名……考试的时候为了避免影响心态,管都没有管排名,就在那里死坑B题.最后 ...

  5. 【HMS core】【FAQ】典型问题合集7

    ​1.[HMS core][Account Kit][问题描述] 集成华为帐号服务后,登录服务异常,无法获取用户信息,报statusCode为907135001,抓取报错日志:Failed to re ...

  6. 【HMS Core】集成地图服务不显示地图问题

    ​[问题描述] 关于华为HMS-地图服务不显示地图的问题. 背景:集成华为地图服务运行后页面不显示地图,运行app后不展示地图报错MapsInitializer is not initialized. ...

  7. 【AR实验室】mulberryAR : ORBSLAM2+VVSION

    本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 mulberryAR是我业余时间弄的一个AR引擎,目前主要支持单目视觉SLAM+3D渲染,并且支持iOS端,但是该引 ...

  8. 【.net 深呼吸】细说CodeDom(1):结构大观

    CodeDom 是啥东东?Html Dom听过吧,XML Dom听过吧.DOM一般可翻译为 文档对象模型,那 Code + DOM呢,自然是指代码文档模型了.如果你从来没接触过 CodeDom,你大概 ...

  9. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

随机推荐

  1. Spring Data JPA 查询

    1 按照关键字方法名查询 自定义的简单查询就是根据方法名来自动生成SQL,主要的语法是findBy,readABy,queryBy,getBy,countBy后面跟属性名称 findBy,readAB ...

  2. 给DBGrid动态赋值后,如何用程序指定某行某列为当前焦点?(100分)

    哈哈,我弄出来了.在大富翁上搜索的.Form1.DBGrid1.SelectedIndex := 4;Form1.DBGrid1.SetFocus;这样就行了.谢谢你! --------------- ...

  3. @autowired、@Qualifier、@Primary注解

    @autowired 可以自动帮你把Bean里面引用的对象的setter/getter方法省略,自动帮你set/get. 启动spring IoC时,容器自动装载了一个AutowiredAnnotat ...

  4. 攻防世界新手区pwn writeup

    CGfsb 题目地址:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5050 下载文 ...

  5. WTForms常用的验证器

    from wtforms import Form,StringField,IntegerField from wtforms import validators from wtforms.valida ...

  6. 2. zookeeper介绍及集群搭建

    ZooKeeper 概述 Zookeeper 是一个分布式协调服务的开源框架. 主要用来解决分布式集群中 应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题. ZooKeeper 本质上 ...

  7. 四则运算计算器的微信小程序_2 运算

    js文件: function isOperator(value) {   var operatorString = '+-*/()×÷';   return operatorString.indexO ...

  8. MYSQL 优化--inner buffer 与关联查询变等值查询

    转自:https://www.2cto.com/database/201312/262376.html 在数据库的应用中,我们经常需要对多表进行连表操作来获得关系型的数据,因此,应该更加的掌握好Mid ...

  9. CF 1133B Preparation for International Women's Day

    题目链接:http://codeforces.com/problemset/problem/1133/B 题目分析 读完题目,凡是先暴力.....(不用想,第四组数据就TLE了,QAQ) 当两个数的和 ...

  10. CentOS 7 配置 kcptun 实现网站加速

    目的:shadowsocks+kcptun 实现vpn加速(shadowsocks,kcptun在同一台VPS上) 一.shadowsocks安装(参考  https://www.cnblogs.co ...