[gym102978C] Count Min Ratio

给定 \(B\) 个蓝色的球、 \(R\) 个红色的球以及一个绿色的球,同颜色的球不可区分。对于一种球的排列方式,记 \(l_B,r_B,l_R,r_R\) 表示球左/右变的蓝/红色球个数,则该排列的权值为 \(\max \{x | l_B\times x\le l_R,r_B\times x\le r_R\}\) 。求所有排列的权值和。

\(1\le B\le 10^6,1\le R\le 10^{18}\)

Solution

枚举绿球左边的红蓝球个数:

\[\begin{aligned}&\sum_{b=0}^{B}\sum_{r=0}^{R}\binom{b+r}{b}\binom{(B-b)+(R-r)}{B-b}\min (\frac{r}{b},\frac{R-r}{B-b})\\&=\sum_{A=1}^{R/B}\sum_{b=0}^{B}\sum_{r=0}^{R}\binom{b+r}{b}\binom{(B-b)+(R-r)}{B-b}[bA\le r][(B-b)A\le R-r]\\&=\sum_{A=1}^{R/B}\sum_{b=0}^{B}\sum_{r=0}^{R}\binom{b+r}{b}\binom{(B-b)+(R-r)}{B-b}[r-bA\ge 0][r-bA\le R-AB]\\&=\sum_{A=1}^{R/B}\sum_{P=r-bA=0}^{R-AB}\sum_{b=0}^{B}\binom{b+r}{b}\binom{(B-b)+(R-r)}{B-b}\end{aligned}
\]

考虑右式的组合意义:一条路径的权值为从 \((0,0)\) 走到 \(B,R\) ,途径满足 \(y=Ax+P\) 的点数。右式即为所有路径的权值和。

引理 1 :定义 \(f(W,A,P)\) 表示从 \((0,0)\) 到 \((W,AW+P)\) 且不超过 \(y=Ax+P\) 的路径数,则 \(f(W,A,P)=\binom{(A+1)W+P}{W}-A\binom{(A+1)W+P}{W-1}\) 。

证明:

考虑一条从 \((0,0)\) 到 \((W,AW+P)\) 的路径,枚举第一次穿过 \(y=Ax+P\) 的位置:

\[\binom{(A+1)W+P}{W}=f(W,A,P)+\sum_{i=0}^{W-1}f(i,A,P)\binom{A(W-i)+W-i-1}{W-i}
\]

考虑一条从 \((0,0)\) 到 \((W-1,AW+P+1)\) 的路径,枚举第一次穿过 \(y=Ax+P\) 的位置:

\[\begin{aligned}
\binom{(A+1)W+P}{W-1}&=\sum_{i=0}^{W-1}f(i,A,P)\binom{A(W-i)+W-i-1}{W-i-1}\\
&=\frac{1}{A}\sum_{i=0}^{W-1}f(i,A,P)\binom{A(W-i)+W-i-1}{W-i}
\end{aligned}
\]

我们惊讶的发现 \(f(W,A,P)=\binom{(A+1)W+P}{W}-A\binom{(A+1)W+P}{W-1}\) 。

在这道题中,把右式要求的问题记为 \(g(B,R,A,P)\) ,注意到 \(AB+P\le AB+R-AB\le R\) ,因此 \(R\) 高于这条线。

引理 2 :\(g(B,R,A,P)\) 与 \(P\) 的取值无关,且 \(g(B,R,A,P)=\sum\limits_{i=0}^{B}\binom{B+R+1}{i}A^{B-i}\) 。

枚举路径上的点,可以得到 \(g(B,R,A,P)=\sum\limits_{i=0}^{B}\binom{(A+1)i+P}{i}\binom{R+B-(A+1)i-P}{B-i}\) 。

于是:

\[\begin{aligned}&g(B,R,A,P)-Ag(B-1,R+1,A,P)\\&=\sum_{i=0}^{B}\binom{(A+1)i+P}{i}\left(\binom{R+B-(A+1)i-P}{B-i}-A\binom{R+B-(A+1)i-P}{B-i-1}\right)\\&=\sum_{i=0}^{B}\binom{(A+1)i+P}{i}f(B-i,A,R-AB-P)\end{aligned}
\]

考虑这个式子的组合意义,就是从 \((0,0)\) 走到 \((i,Ai+P)\) ,再沿 \(y=Ax+P\) 及以上的点走到 \((B,R)\) 。

考虑双射,在该路径走到 \((i,Ai+P)\) 时额外往上走一步,即走到 \((i,Ai+P+1)\) 的位置。那么这条路径的含义就变成了枚举最后一次碰到 \(y=Ax+P\) 的位置,并且最终到达 \((B,R+1)\) ,那么方案数显然就是 \(\binom{B+R+1}{B}\) 。

因此,\(g(B,R,A,P)-Ag(B-1,R+1,A,P)=\binom{B+R+1}{B}\) ,它与 \(P\) 的取值无关。

通过递推可以得到 \(g(B,R,A,P)=\sum\limits_{i=0}^{B}\binom{B+R+1}{i}A^{B-i}\) 。

回到原式,那么答案即为:

\[\begin{aligned}&\sum_{A=1}^{R/B}(R-AB+1)g(B,R,A,*)\\&=\sum_{A=1}^{R/B}(R-AB+1)\sum_{i=0}^{B}\binom{B+R+1}{i}A^{B-i}\\&=\sum_{i=0}^{B}\binom{B+R+1}{i}\left((R+1)\sum_{A=1}^{R/B}A^{B-i}-B\sum_{A=1}^{R/B}A^{B-i+1}\right)\end{aligned}
\]

对于 \(k\in [1,m]\) ,求 \(\sum\limits_{i=0}^{n-1}i^{k}\) 可以用伯努利数 \(\mathcal O(m\log m)\) 快速计算。

时间复杂度 \(\mathcal O(m\log m)\) 。

[gym102978C] Count Min Ratio的更多相关文章

  1. bloomfilter 以及count min sketch

    bloomfilter http://blog.csdn.net/v_july_v/article/details/6685894 count min sketch http://www.cnblog ...

  2. OVER Clause是个好东西,常和ROW_NUMBER()、Sum、AVG、Count、Min、Max配合使用

    根据SQL官方帮助的实例: USE AdventureWorks2012; GO SELECT ROW_NUMBER() OVER(PARTITION BY PostalCode ORDER BY S ...

  3. HANA SQL

    约束 注释 你可以给你的 SQL 语句添加注释来增加可读性和可维护性. SQL 语句中注释的分隔如下: l  双连字符“--”.所有在双连字符之后直到行尾的内容都被 SQL 解析器认为是注释. l  ...

  4. Wifite.py 修正版脚本代码

    Kali2.0系统自带的WiFite脚本代码中有几行错误,以下是修正后的代码: #!/usr/bin/python # -*- coding: utf-8 -*- """ ...

  5. Deep Learning 16:用自编码器对数据进行降维_读论文“Reducing the Dimensionality of Data with Neural Networks”的笔记

    前言 论文“Reducing the Dimensionality of Data with Neural Networks”是深度学习鼻祖hinton于2006年发表于<SCIENCE > ...

  6. viewer.js图片查看器插件(可缩放/旋转/切换)

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  7. iOS 图片压缩方法

    iOS 图片压缩方法 两种图片压缩方法 两种压缩图片的方法:压缩图片质量(Quality),压缩图片尺寸(Size). 压缩图片质量 NSData *data = UIImageJPEGReprese ...

  8. R语言进行机器学习方法及实例(一)

    版权声明:本文为博主原创文章,转载请注明出处   机器学习的研究领域是发明计算机算法,把数据转变为智能行为.机器学习和数据挖掘的区别可能是机器学习侧重于执行一个已知的任务,而数据发掘是在大数据中寻找有 ...

  9. 算法(第四版)C# 习题题解——1.4

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 ...

随机推荐

  1. java中线程有什么用?

    线程有什么用? 通过引入线程技术,在浏览器中你可以浏览网页的同时,播放动画和声音效果,同时在后台打印一个页面.例如老板可以同时处理工程师,秘书和清洁人员的事,这 就是多线程处理机制.Within th ...

  2. 将项目导入eclipse中出现的jsp页面报错

    图片摘自百度经验,实在是每次都会忘了步骤,每次都得重新百度,所以索性自己总结到博客中,下次如果还记不住就直接从博客中看.原谅我实在学渣,呜呜~~~~(>_<)~~~~

  3. mysql基本操作2

    ##DDL控制表结构,不支持事务##DML控制表数据,支持事务       DQL专门做查询  ##TCL 管理事务##DCL 管理数据库权限     ##ORDER BY  子句-根据指定列对结果集 ...

  4. 校验ip地址的格式

    /*输入:strIP:ip地址 返回:如果通过验证返回true,否则返回false: */ function isIP(strIP) { if (isNull(strIP)) return false ...

  5. Python入门-安装Python开发环境

    1.安装开发环境 #方法一:直接安装anaconda,解释器和环境,一个软件就可以包括,简单方便 参考地址:https://www.cnblogs.com/sui776265233/p/1145300 ...

  6. Springboot集成cache的key生成策略

    代码接上文:深度理解springboot集成redis缓存之源码解析 ## 1.使用SpEL表达式 @Cacheable(cacheNames = "emp",key = &quo ...

  7. TCP/IP 协议标准简单描述

    TCP/IP 协议标准简单描述 说明 分为三部分:中文名称.缩写.说明. 应用层 DNS 域名服务 (DNS) 功能: 将域名转化为IP地址 BOOTP 引导程序协议 (BOOTP) 功能: 允许无盘 ...

  8. 基于 Apache Hudi 构建增量和无限回放事件流的 OLAP 平台

    1. 摘要 在本博客中,我们将讨论在构建流数据平台时如何利用 Hudi 的两个最令人难以置信的能力. 增量消费--每 30 分钟处理一次数据,并在我们的组织内构建每小时级别的OLAP平台 事件流的无限 ...

  9. 微信小程序一些标签

    wxml标签   一.视图容器(View Container): 二.基础内容(Basic Content) 标签名 说明 标签名 说明 view 视图容器 icon  图标 scroll-view ...

  10. 论文解读(BGRL)《Bootstrapped Representation Learning on Graphs》

    论文信息 论文标题:Bootstrapped Representation Learning on Graphs论文作者:Shantanu Thakoor, Corentin Tallec, Moha ...