http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1243

题意:

思路:

二分来做,每次贪心的把船安排到能安排的最左边即可。

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
#include<stack>
#include<queue>
#include<cmath>
#include<map>
#include<set>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int maxn=+; int n,x,m;
int pos[maxn]; bool judge(int d)
{
int st=*x;
for(int i=;i<=n;i++)
{
while(true)
{
if(st>m) return ;
if(abs(st-x-pos[i])<=d) {st+=*x;break;} //如果绳子小于等于d的话,那么就进行下一艘船
else
{
if(pos[i]<st-x) return ; //如果超过了且木桩在船中心的左边,那肯定是不行的,因为我们船都是贪心的放在最左边的位置
st+=(pos[i]-(st-x)-d); //如果在右边,则移动到正好距离为d的位置点
}
}
}
return ;
} int main()
{
//freopen("in.txt","r",stdin);
scanf("%d%d%d",&n,&x,&m);
for(int i=;i<=n;i++) scanf("%d",&pos[i]);
if(n**x>m) {puts("-1");return ;}
int left=,right=m-,ans;
while(left<=right)
{
int mid=(left+right)>>;
if(judge(mid)) {ans=mid;right=mid-;}
else left=mid+;
}
printf("%d\n",ans);
return ;
}

51nod 1243 排船的问题(二分)的更多相关文章

  1. 51 nod 1243 排船的问题

    1243 排船的问题http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1243 题目来源: Codility 基准时间限制:1 ...

  2. 51nod 1243 二分+贪心

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1243 1243 排船的问题 题目来源: Codility 基准时间限制: ...

  3. 51nod 1105(第K大数 二分套二分)

    题目链接:http://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=620811 参考自:https://blog.csdn.net/f_ ...

  4. 51nod 1640 天气晴朗的魔法 二分 + 克鲁斯卡算法(kruskal算法) 做复杂了

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1640 一开始想的时候,看到要使得最大值最小,那这样肯定是二分这个最大值了 ...

  5. 51nod - 1278 相离的圆 (二分)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 因为圆心都在x轴上,把每个圆转化成线段后,按线段的起点排序,那么对 ...

  6. 51nod 第K大区间2(二分+树状数组)

    题目链接: 第K大区间2 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 定义一个长度为奇数的区间的值为其所包含的的元素的中位数.中位数_百度百科 现给出n个数,求将所有长度为 ...

  7. 51Nod 1557 两个集合(二分)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1557 题意: 小X有n个互不相同的整数: p1,p2,...,pn .他 ...

  8. 51nod 1686 第K大区间 二分瞎搞

    题目: 定义一个区间的值为其众数出现的次数. 现给出n个数,求将所有区间的值排序后,第K大的值为多少. 题解: 答案明显单调,我们考虑二分答案. 转化为判定问题后我们需要观察到一个性质: 如果一个区间 ...

  9. 51NOD 1962 区间计数 单调栈+二分 / 线段树+扫描线

     区间计数   基准时间限制:1.5 秒 空间限制:262144 KB 分值: 80   两个数列 {An} , {Bn} ,请求出Ans, Ans定义如下: Ans:=Σni=1Σnj=i[max{ ...

随机推荐

  1. Windows操作系统上各种服务使用的端口号, 以及它们使用的协议的列表

    Windows操作系统上各种服务使用的端口号, 以及它们使用的协议的列表 列表如下 Port Protocol Network Service System Service System Servic ...

  2. ubuntu 下执行定时任务

    Window shell文件在linux系统下执行不了的解决办法 一些人喜欢用vim来写linux shell script, 但是, 有的人喜欢在Windows下用一些方便的编辑器(比如鼎鼎大名的N ...

  3. node.js 开发桌面程序, 10个令人惊讶的NodeJS开源项目

    用 node-webkit 开源框架. 做企业站,杠杠地 包括电子书和支付宝系统都是node开发的,. 接收传感器发送的数据再运算...对水泵.风机.空调这些硬件进行远程控制. 细数10个令人惊讶的N ...

  4. Keepalived+HAproxy实现高可用负载均衡

    总概:       Keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态, ...

  5. linux 引导流程二

    grep -v  “^#” /etc/inittab | more 提取etc文件中的有效行. 用命令man 可以获得配置文件和命令的帮助信息.配置文件必须是系统的配置文件或系统默认安装的某个服务的配 ...

  6. linux命令:linux权限管理命令

    权限管理命令   文件的权限只有你两个人可以更改,一个是root,一个是文件所有者. 命令名称:chmod 命令英文原意:change the permissions mode of a  file ...

  7. 总结C#获取当前路径的7种方法

    C#获取当前路径的方法如下: 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径. 2. ...

  8. DOM EVENT

    属性 此事件发生在何时... onabort 图像的加载被中断. onblur 元素失去焦点. onchange 域的内容被改变. onclick 当用户点击某个对象时调用的事件句柄. ondblcl ...

  9. tomcat和jetty区别

    参见:https://www.cnblogs.com/fengli9998/p/7247559.html 1. Jetty更轻量级.这是相对Tomcat而言的. 由于Tomcat除了遵循Java Se ...

  10. Linux系统故障排查和修复技巧

    本文转自:http://os.51cto.com/art/201304/388384.htm 我发现Linux系统在启动过程中会出现一些故障,导致系统无法正常启动,我在这里写了几个应用单用户模式.GR ...