Distinct

题目大意:

有n个军队(有自己在x轴上的坐标),每个军队有一定的人,要一个坐标只有一个人,移动路程最大的士兵最少移动多长

原题:

题目描述

Daniel 正在玩一个战棋游戏。
现在 Daniel 有 n 队士兵站在 x 轴上。第 i 队士兵有 ai 人,坐标为 xi。
Daniel 看到一队士兵有这么多人,都站在同一个位置,他对此很不满意。他
想命令一些士兵移动到新的位置(必须是整点),使得不存在两个士兵站在同一个
位置。
为了节约时间,Daniel 希望每个士兵的移动距离的最大值尽可能小。请求出
这个最小值。
输入
第一行一个正整数 n,表示 Daniel 有多少队士兵。第二行 n 个正整数 ai,表示每队士兵的人数。第三行 n 个严格递增的 整数 xi,表示每队士兵的坐标。

输出

一行一个非负整数,表示每个士兵的移动距离的最大值的最小值

输入样例

2
2 3
0 2

输出样例

1

说明

样例解释

移动后,5 个士兵的坐标分别为 -1, 0, 1, 2, 3。
有 2 个士兵移动距离为 0,3 个士兵移动距离为 1,因此答案是1

解题思路:

先二分答案,然后判断
判断:每个士兵尽量往左,然后判断是否超过当前军队往右可以到的位置

代码:

#include<cstdio>
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
int n,l,r,q,mid,a[100005],x[100005];
bool check(int dep)
{q=x[1]-dep+a[1];//尽量往左if (q-1>x[1]+dep) return false;//因为p是下一支队的开始,所以要-1for (int i=2;i<=n;++i){q=max(q,x[i]-dep)+a[i];//如果有交差就要从上一支队开始if (q-1>x[i]+dep) return false;//判断是否超过}return true;
}
int main()
{scanf("%d",&n);for (int i=1;i<=n;++i){scanf("%d",&a[i]);l=max(l,a[i]);//最小r+=a[i]; //最大}for (int i=1;i<=n;++i)scanf("%d",&x[i]);l/=2;while (l<=r)//二分{mid=(l+r)/2;if (check(mid)) r=mid-1;else l=mid+1;}printf("%d",l);
}

【二分】Distinct相关推荐

  1. 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)

    CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...

  2. CodeForce 237C Primes on Interval(二分+ 素数筛法)

    题目链接:http://codeforces.com/problemset/problem/237/C Primes on Interval time limit per test 1 second ...

  3. 牛客假日团队赛8:F.Telephone Lines(二分+spfa)

    链接:https://ac.nowcoder.com/acm/contest/1069/F 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...

  4. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  5. mysql中去重的用法_mysql中去重 distinct 用法

    在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count( ...

  6. Hyperset(排序+二分)

    Bees Alice and Alesya gave beekeeper Polina famous card game "Set" as a Christmas present. ...

  7. 【CodeForces - 722D】Generating Sets(二分,贪心)

    题干: You are given a set Y of n distinct positive integers y1, y2, ..., yn. Set X of n distinct posit ...

  8. 【CodeForces-1041C】Coffee Break(贪心,STL,set二分维护,题意难,有坑,SJ题,构造)(知识点总结)

    题干: Recently Monocarp got a job. His working day lasts exactly mm minutes. During work, Monocarp wan ...

  9. P1948 [USACO08JAN]Telephone Lines S(二分+spfa)

    题目描述 Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is u ...

最新文章

  1. CV之YOLO:深度学习之计算机视觉神经网络tiny-yolo-5clessses训练自己的数据集全程记录
  2. 浅谈python的深浅拷贝
  3. 鼠标 ArcBall 局部坐标系 旋转模型
  4. java long类型转string_JavaSE的学习——数据类型
  5. jsp 体检信息查询 绕过用户名验证_一篇彻底搞懂jsp
  6. 5专题总结-数据结构
  7. 「BZOJ 3529」「SDOI 2014」数表「莫比乌斯反演」
  8. java 减法基础_java基础之运算符
  9. 6.从Paxos到Zookeeper分布式一致性原理与实践---Zookeeper 的典型应用场景
  10. python钻石图_Python笔记:制作各种水球图
  11. ToStringBuilder、HashCodeBuilder、EqualsBuilder、ToStringStyle、ReflectionToStringBuilder等学习...
  12. 什么是UDS诊断协议?
  13. 稚晖君教你制作全球最迷你的自平衡机器人
  14. Epson LQ1600K3+ 打印区域
  15. 内点法解不等式约束的优化问题
  16. Java知识整理5-Java核心 (一)Java IO/NIO
  17. 《数据库原理》——知识点总结(期末复习)
  18. 修真院教学模式三大阶段之任务体系
  19. 博链财经专访MDUKEY创始人韩元桢
  20. 时代剧《胜利者》杀青在即 戴娇倩蔡妍不舍离别_0

热门文章

  1. stm32烧不进去程序_STM32的FLASH和SRAM的使用情况分析
  2. office连接oracle,Access(VBA)连接Oracle数据库的代码
  3. java 中符号_谁能告诉我java中符号的用法,见代码
  4. requestPermissions读写手机存储权限_泛圈云盘可为企业建立高效安全的云办公在线协同文档存储?...
  5. 线程与线程池(一条龙详解)
  6. 7-1 活动选择问题 (25 分)(思路+详解+扩展)宝 今天你AC了吗!!!
  7. [Redis6]常用数据类型_String字符串
  8. matlab中图像轮廓变细,Matlab中,用bwmorph函数提取二进制图像的轮廓
  9. leetcode 二进制求和 addBinary
  10. HDU 4059 The Boss on Mars (容斥)(2011 Asia Dalian Regional Contest)