World Tour Finals 2019 D - Distinct Boxes 题解
太神了,专门写一篇题解 qwq
简要题意:给你 \(R\) 个红球和 \(B\) 个蓝球,你要把它们放到 \(K\) 个箱子里,要求没有两个箱子完全相同(即两种球个数就相同),求 \(K\) 的最大值。
设第 \(i\) 个箱子中有 \(x_i\) 个红球,\(y_i\) 个蓝球,就变成了找平面上一个大小最大的点集 \((x_i,y_i)\),使 \(\sum x_i =R, \sum y_i=B\)。进一步,由于可以直接将 \(x\) 最大的点 \(x\) 坐标变大,\(y\) 同理,因此只需有 \(\sum x_i \le R, \sum y_i \le B\) 即可。
这是一道二维平面上的题,我们可以想办法把它变成一维。给 \(x\) 方向赋一个权重 \(p\),\(y\) 方向赋一个权重 \(q\),那么一个点 \((x,y)\) 就被投影到了 \(px+qy\) 上。此时我们发现所有点投影后的权重和为 \(\sum px_i+qy_i=p\sum x_i+q\sum y_i\),于是当 \(\sum x_i \le R, \sum y_i \le B\) 时,便有 \(\sum px_i+qy_i\le pR+qB\)。在某种程度上,我们就会希望 \(\sum px_i+qy_i\) 尽量小。
首先当然二分 \(K\),问题变为判定一个 \(K\) 是否可行。然后我们考虑一个凸包,凸包上的点 \((X,Y)\) 代表 \(\sum x_i=X\) 时,\(\sum y_i\) 的最小值为 \(Y\)。感性理解一下这玩意大概就是凸的,并且对每个 \(X\) 都有定义。于是 \(K\) 可行当且仅当点 \((R,B)\) 在凸包上方。又发现对于一个 \((p,q)\),使 \(p\sum x_i+q\sum y_i\) 最小时,\((\sum x_i,\sum y_i)\) 一定在凸包上,于是我们尝试用 \((p,q)\) 搞出凸包上的一些点。
继续发现 \(p\sum x_i+q\sum y_i=(p,q)\cdot (\sum x_i,\sum y_i)\),即向量 \((x_i,y_i)\) 在向量 \((p,q)\) 上的投影。\(p\sum x_i+q\sum y_i\) 最小,就是这个投影最小,可以看作拿一条与向量 \((p,q)\) 垂直的直线去切这个凸包,所以每个点都一定有机会被切到,且 \((p,q)\) 的斜率越大,切到的点越偏右。于是再对 \((p,q)\) 的斜率进行二分,如果发现求出来的点 \((\sum x_i,\sum y_i)\) 在 \((R,B)\) 左下方,那就成了;如果在 \((R,B)\) 右上方,那就寄了;如果在左上方,那就增大斜率;如果在右下方,那就减小斜率。
这里有两个技巧:1,不要在实数域上二分 \((p,q)\) 的斜率,令 \(p+q=10^9+7\)(或其它常数),然后直接二分 \(p\),可以发现这样基本上能覆盖到所有的斜率都能被弄到,从而能切到每个点。2,由于凸包上相邻两条线段斜率可能非常相近,因此我们要当发现当前凸包上一条连线在 \((R,B)\) 下方时直接返回合法。
最后的问题是如何计算对于一个 \((p,q)\) 计算 \(p\sum x_i+q\sum y_i\) 的最小值。我们二分一个 \(z\),求出 \(p\sum x_i+q\sum y_i\le z\) 的个数进行二分。然后求出 \(p\sum x_i+q\sum y_i\le z\) 的 \(x,y\) 分别的和以及多余的一些 \(p\sum x_i+q\sum y_i=z+1\) 的前若干个 \(x,y\) 的和。以上操作全部用类欧做就是一个 \(\log\),或者发现如果我们选了一个点 \((x,y)\),那么它左下角的所有点都一定已经被选了,所以有 \(\min(x,y)\le O(W^{1\over 3})\)(\(W\) 为值域),二维分别枚举即可。
一共三个二分,最后一步用类欧时间复杂度就 \(O(\log^4 W)\),直接枚举复杂度就 \(O(W^{1\over 3}\log^3 W)\)。
World Tour Finals 2019 D - Distinct Boxes 题解的更多相关文章
- Comet OJ 2019 夏季欢乐赛题解
Comet OJ 2019 夏季欢乐赛题解 我是来骗访问量的 A 完全k叉树 \(n\)个点的完全k叉树的直径. 直接做 B 距离产生美 直接做 C 烤面包片 \(n!!!\mod p\) 显然\(n ...
- ICPC World Finals 2019 题解
[A]Azulejos 题意简述: 有两排瓷砖,每排都有 \(n\) 个,每个瓷砖有高度 \(h_i\) 和价格 \(p_i\) 两种属性. 你需要分别重新排列这两排瓷砖,使得同一排的瓷砖满足价格不降 ...
- ACM-ICPC World Finals 2019 G.First of Her Name
题意:给一颗字典树,m次查询,每次给出一个字符串,问你该字符串是字典树上多少串的后缀 题解:字典树求广义sam,每次把查询串在sam上跑一遍,最后到达的点的sz就是答案,中途没法走了,就是没有出现过 ...
- 洛谷P5283 & LOJ3048:[十二省联考2019]异或粽子——题解
https://www.luogu.org/problemnew/show/P5283 https://loj.ac/problem/3048 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子 ...
- CF293B Distinct Paths题解
CF293B Distinct Paths 题意 给定一个\(n\times m\)的矩形色板,有kk种不同的颜料,有些格子已经填上了某种颜色,现在需要将其他格子也填上颜色,使得从左上角到右下角的任意 ...
- kick start 2019 round D T3题解
---恢复内容开始--- 题目大意:共有N个房子,每个房子都有各自的坐标X[i],占据每个房子需要一定花费C[i].现在需要选择K个房子作为仓库,1个房子作为商店(与题目不同,概念一样),由于仓库到房 ...
- kick start 2019 round D T2题解
题目大意:由N个房子围成一个环,G个人分别顺时针/逆时针在房子上走,一共走M分钟,每分钟结束,每个人顺/逆时针走到相邻的房子.对于每个房子都会记录最后时刻到达的人(可能是一群人).最终输出每个人会被几 ...
- 2019.11.11&12题解
Day1 考的不是很好,T1T2没区分度,T3想的太少,考试后期几乎都是在摸鱼,bitset乱搞也不敢打,只拿到了35分,跟前面的差距很大 A. 最大或 标签: 二进制+贪心 题解: 首先x,y中一定 ...
- 2019.11.12&13题解
写在前面: 虽然拿到了rk1,但是T3被卡常TLE90分,(考后再交就A了!?),lemon80,又丢失了一次良好的AK机会, 掐头去尾距离联赛仅剩2天,最近中午一直睡不好,可能是有些紧张, 希望自己 ...
随机推荐
- Linux-交互式转化批处理工具expect
expect 是由Don Libes基于 Tcl( Tool Command Language )语言开发的,主要应用于自动化交互式 操作的场景,借助 expect 处理交互的命令,可以将交互过程如: ...
- MySQL字段约束条件、字段类型、存储引擎、配置文件
字符编码与配置文件 # 查看MySQL默认字符编码 \s ''' 如果是5.X系列 显示的编码有很多种 Latin1 gbk 如果是8.X系列 显示的统一是utf8mb4 utf8mb4是utf8优化 ...
- SecureCRT使用SSH链接出现Password Authentication Failed,Please verify that the username and password are correct的解决办法(亲测有效)
- 144_Power Pivot贷款之等额本息与等额本金
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 买房贷款的时候会遇到等额本息与等额本金的问题,今天做了一个两者对比,看看如何选择,来一张对比图. 等额本息的前期 ...
- Python模块Ⅰ
Python模块Ⅰ part1 模块的定义/取别名 自定义模块 什么是模块:模块的本质就是.py文件,封装语句的最小单位 模块中出现的变量,for循环,if结构,函数定义...称为模块成员 模块的运行 ...
- MyCat应用实战
下载Mycat https://github.com/MyCATApache/Mycat-Server/releases Mycat基础分库 基础配置 修改server.xml <user na ...
- Tomcat启动失败:java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager
项目开发中发现服务器上Tomcat启动失败 开始定位 第一步:打开tomcat日志catalina.log: 2017-07-25 17:02:43,799 [Catalina-startStop-1 ...
- point pair feature在2D图像匹配中的应用
point pair feature在2D图像匹配中的应用 point pair feature(ppf) @article{BertramDrost2010ModelGM, title={Model ...
- JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...
- Linux Cgroup v1(中文翻译)(2):CPUSETS
英文原文:https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/cpusets.html Copyright (C) 2004 BU ...