[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. ps基础总结

    1.复制图层:首先选中移动工具(V),鼠标右键选中需要复制的图层(快捷方式:上面勾选自动选择),接着一只手按住Alt键,另一只手点击鼠标左键(不松开),往左往右移动即可.若是对多个图层起作用,就可将需 ...

  2. 什么是3D建模?

    一.3D建模是什么 将所见所想用立体三维的方式通过计算机技术表现出来,这就是3D建模,比如你看到了一个可爱呆萌的卡通人物又或是华丽酷炫的变形金刚,总之就是你认为美好的立体实物 你想将它用计算机技术完美 ...

  3. Qt QTableView 表格内添加控件

    目录 Qt QTableView 表格内添加控件 1. QItemDelegate 2. setIndexWidget 3. setIndexWidget + setLayout Qt QTableV ...

  4. Redis 未授权访问漏洞【原理扫描】修复方法

    漏洞类型 主机漏洞 漏洞名称/检查项 Redis 配置不当可直接导致服务器被控制[原理扫描] 漏洞名称/检查项 Redis 未授权访问漏洞[原理扫描] 加固建议 防止这个漏洞需要修复以下三处问题 第一 ...

  5. GEOS 使用记录

    GEOS 使用记录 官网 https://trac.osgeo.org/geos/ https://libgeos.org/ 下载地址 https://libgeos.org/usage/downlo ...

  6. Lumia一键刷稳定版 Win10 arm 及其报错处理

    前言 之前我发了一篇Lumia1520 刷Win10 arm双系统的文章,不过后来发现那个方法对小白来说太不友好,且系统也不稳定,所以我找到了更好的方法 刷机 我们可以利用刷机迷进行刷机,支持一键刷机 ...

  7. uTools .SRT 转 .VTT 格式转换自动化小工具

    不想用网上的转换工具,要有网,先上传,再下载,可能还要看广告.有些工具也不是很方便.打算配合uTools的自动化助手插件搞一个一键格式转换.

  8. AcWing周赛44

    周赛44 4317. 不同正整数的个数 link:https://www.acwing.com/problem/content/4320/ 我直接set #include <iostream&g ...

  9. wireshark、tcpdump使用笔记

    最近使用wireshark抓包icmp协议,过滤的命令如下所示: ip.addr eq 192.168.20.54 and ip.addr eq 192.168.50.131 and (icmp) 如 ...

  10. windows 安装 kalfka 并快速启动

    1.安装Java 环境 https://www.java.com/zh_CN/ 直接下载安装即可 (如果之前有配置过java环境 可以先跳过此步骤,但是如果运行的时候报错就需要把之前的jdk环境变量删 ...