Let‘s Play Curling 二分,lower_bound(2020.12.南京)
生活随笔
收集整理的这篇文章主要介绍了
Let‘s Play Curling 二分,lower_bound(2020.12.南京)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题意 :
- 红石头属于红队,蓝石头属于蓝队,分别给出所有红色蓝色石头在数轴上的位置,构造目标点的位置(实数),使得红队胜利且获得的分数尽可能多,红队的分数 等于 所有 比所有蓝石头离目标点近 的红石头 的数量,求 红队的最大分数或者如果无法赢就输出impossivle
思路 :
- 确定一个c点,红队中距离c的位置比蓝队中所有石头都近的 石头的个数,就是红队的分数,发现寻找c点不好找,于是转换思路,发现两个蓝色石头之间红色石头的数量的最大值即为答案,因为在两个蓝色石头之间的红色石头一定比所有蓝色石头更近c,且蓝色石头外的红色石头不满足比所有蓝色石头更近,因此,证为最优解
- 先将两个序列排序,然后用lower_bound或者upper_bound寻找在两个蓝色石头间红色石头的个数
- 特别地,在第一个蓝色石头之前的和最后一个蓝色石头之后的也满足条件,因此,在最前面和最后面再增加蓝色石头
- lower_bound复杂度O(logN)O(logN)O(logN),返回值是下标
总结
以上是生活随笔为你收集整理的Let‘s Play Curling 二分,lower_bound(2020.12.南京)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Fireworks 期望,几何分布,概率
- 下一篇: 王道计算机考研 数据结构 (树与二叉树)