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. SAS数据挖掘实战篇【四】

    SAS数据挖掘实战篇[四] 今天主要是介绍一下SAS的聚类案例,希望大家都动手做一遍,很多问题只有在亲自动手的过程中才会有发现有收获有心得. 1 聚类分析介绍 1.1 基本概念 聚类就是一种寻找数据之 ...

  2. Python之文件操作工具

    逐步完善中. #!/usr/bin/python3 # -*- coding: utf-8 -*- import os import codecs #支持多国语言的编码解码 import charde ...

  3. iOS服务器数据请求"汉字编码"问题

    下面记录一下数据请求问题: 1.不知道大家有木有遇到过,当数据请求的URL带有汉字的时候,请求数据肯定会报404错误,也就是参数或者是接口URL错误<虽然说404,500等错误一般都是服务器问题 ...

  4. 【Linux】【三】linux 复制文件到指定目录

    将  application/file/test/logs/ 下的文件 logs.log , logs.tar 复制到  application/file/test/tools/ 下,并新建文件夹[l ...

  5. 开发单体web shop] 6. 商品分类和轮播广告展示

    目录 商品分类&轮播广告 商品分类|ProductCategory 需求分析 开发梳理 编码实现 轮播广告|SlideAD 需求分析 开发梳理 编码实现 福利讲解 源码下载 下节预告 商品分类 ...

  6. php进阶之路 -- 03 命名空间

    php进阶之路 -- 03 命名空间 命名空间概述 定义命名空间 空间成员和子空间 空间成员的访问 空间引入 全局空间 一. 命名空间概述 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法. ...

  7. 系统 --- Linux系统环境搭建

    Linux命令介绍 软硬链接 作用:建立连接文件,linux下的连接文件类似于windows下的快捷方式 分类: 软链接:软链接不占用磁盘空间,源文件删除则软链接失效 硬链接:硬链接只能链接不同文件, ...

  8. Spring MVC 异步请求 Callable

    对于有的请求业务处理流程可能比较耗时,比如长查询,远程调用等,主线程会被一直占用,而tomcat线程池线程有限,处理量就会下降 servlet3.0以后提供了对异步处理的支持,springmvc封装了 ...

  9. 【Deep Learning Nanodegree Foundation笔记】第 10 课:Sentiment Analysis with Andrew Trask

    In this lesson, Andrew Trask, the author of Grokking Deep Learning, will walk you through using neur ...

  10. CentOS7使用阿里云源安装Docker

    安装步骤 1.删除已安装的Docker # Uninstall installed docker sudo yum remove docker \ docker-client \ docker-cli ...