蚂蚁运输(ant)
Time Limit:5000ms Memory Limit:64MB
【题目描述】
  LYK 在观察一些蚂蚁。蚂蚁想要积攒一些货物来过冬。积攒货物的方法是这样的。对于第i只蚂蚁, 它要从li出发, 拿起货物, 走到ri处放下货物, 需要消耗的时间为|ri-li|。而且所有蚂蚁都是可以同时进行的,也就是说,假如有 m 只蚂蚁,那么运输完货物的时间为 max{|ri-li|}。LYK 决定帮蚂蚁一把,它发明了空间传输装置。具体地,当蚂蚁走到 X 处时,它可以不耗费任意时间的情况下瞬间到达 Y,或者从 Y 到达 X。也就是说,一个蚂蚁如果使用了空间传输装置,它耗费的时间将会是 min{|li-X|+|ri-Y|,|li-Y|+|ri-X|},当然蚂蚁也可以选择徒步走到目标点。由于空间传输装置非常昂贵,LYK 打算只建造这么一台机器。并且 LYK 想让蚂蚁运输完货物的时间尽可能短,你能帮帮它吗?

【输入格式】(ant.in)
  第一行两个数 n,m,n 表示 li,ri 的最大值。
  接下来 m 行,每行两个数 li,ri。
【输出格式】(ant.out)
  一个数表示答案
【输入样例】
  5 2
  1 3
  2 4
【输出样例】
  1
【数据范围】
  对于 20%的数据 n,m<=100。
  对于 40%的数据 n,m<=1000。
  对于 60%的数据 n<=100000,m<=1000。
  对于 80%的数据 n,m<=100000。
  对于 100%的数据 n,m<=1000000,1<=li,ri<=n(li=ri 时你甚至可以无视这只蚂蚁) 。
【样例解释】
  令空间传输装置的参数中 X=2,Y=3 或者 X=3,Y=2 都行。

【题目分析】

  二分答案。假设最短时间为Zdsj,传送的区间为x——y

  首先预处理一下,如果l[i]==r[i],直接忽略这只蚂蚁,如果l[i]>r[i],我们把这两个数交换(反正正反走都是一样的),通过这样的处理之后就可以得到|L-x|+|R-y|<=Zdsj。

    L-x+R-y<=Zdsj;

    L-x+y-R<=Zdsj;

    x-L+R-y<=Zdsj;

    x-L+y-R<=Zdsj;

  整理一下可以得到:

    L+R-Zdsj<=x+y<=L+R+Zdsj;

    L-R-Zdsj<=x-y<=L-R+Zdsj;

  只要保证这两段区间内都有数就可以了,

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn=1e7+;
const int INF=1e9;
int n,m;
int L[maxn],R[maxn];
int ans=;
int c=;
int check(int Zdsj)
{
int l1=-INF,r1=INF;
for(int i=;i<=c;i++)
{
if(R[i]-L[i]<=Zdsj) continue;
l1=max(l1,L[i]+R[i]-Zdsj);
r1=min(r1,L[i]+R[i]+Zdsj);
}
if(l1>r1) return ;
l1=-INF;r1=INF;
for(int i=;i<=c;i++)
{
if(R[i]-L[i]<=Zdsj) continue;
l1=max(l1,L[i]-R[i]-Zdsj);
r1=min(r1,L[i]-R[i]+Zdsj);
}
if(l1>r1) return ;
return ;
}
int main()
{
freopen("ant.in","r",stdin);
freopen("ant.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
if(a>b) swap(a,b);
if(a!=b)
L[++c]=a,
R[c]=b;
}
int l=,r=n;
while(l<=r)
{
int mid=(l+r)>>;
if(check(mid))
ans=mid,
r=mid-;
else
l=mid+;
}
printf("%d\n",ans);
fclose(stdin);fclose(stdout);
return ;
}

蚂蚁运输(ant)的更多相关文章

  1. 模拟赛1101d2

    幸运数字(number)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近运气很差,例如在 NOIP 初赛中仅仅考了 90 分,刚刚卡进复赛,于是它决定使用一些 ...

  2. 11.1 afternoon

    幸运数字(number)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近运气很差,例如在 NOIP 初赛中仅仅考了 90 分,刚刚卡进复赛,于是它决定使用一些 ...

  3. 如何用 Blazor 实现 Ant Design 组件库

    本文主要分享我创建 Ant Design of Blazor 项目的心路历程,已经文末有一个 Blazor 线上分享预告. Blazor WebAssembly 来了! Blazor 这个新推出的前端 ...

  4. JavaACOFramework的各个类介绍(part3 : Ant4ACS类)

    package aco.ant; import java.util.ArrayList; import sys.Settings; import util.PseudoRandom; import a ...

  5. [No00003E]26个字母暗藏的单词秘密

    个字母暗藏的单词秘密 人们普通认为:英语是拼音文字,因而与象形无关.但是,实际上,即使作为拼音文字,其字母的来源也与象形有关.根据笔者十多年的研究结果,英语中的二十六个字母每个字母都有其象形意义,而且 ...

  6. crawler_浅谈网络爬虫

    题记: 1024,今天是个程序猿的节日 ,哈哈,转为正题,从事了一线网络爬虫开发有近1000天.简单阐述下个人对网络爬虫的理解. 提纲: 1:是什么 2:能做什么 3:怎么做 4:综述 1:是什么 w ...

  7. Python 网络爬虫 001 (科普) 网络爬虫简介

    Python 网络爬虫 001 (科普) 网络爬虫简介 1. 网络爬虫是干什么的 我举几个生活中的例子: 例子一: 我平时会将 学到的知识 和 积累的经验 写成博客发送到CSDN博客网站上,那么对于我 ...

  8. BZOJ2023: [Usaco2005 Nov]Ant Counting 数蚂蚁

    2023: [Usaco2005 Nov]Ant Counting 数蚂蚁 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 56  Solved: 16[S ...

  9. BNU 26579 Andrew the Ant 【蚂蚁】

    链接: http://www.bnuoj.com/bnuoj/problem_show.php?pid=26579 http://www.bnuoj.com/bnuoj/contest_show.ph ...

随机推荐

  1. [原创]java WEB学习笔记65:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) ModelDriven拦截器 paramter 拦截器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. C#: log4net

    log4net.dll是apache发布的用来记录log的dll文件 这里举个例子相信大家就知道怎么用了,新建一个console项目,添加log4net.dll后再添加应用程序配置文件 <?xm ...

  3. 关于Linux系统basename函数缺陷的思考

    某模块作为前台进程独立运行时,运行命令携带命令行参数:作为某平台下守护进程子进程运行时,需要将命令行参数固化在代码里.类似如下写法: char *argv[] = {"./DslDriver ...

  4. (转)oracle 查看表所占用的空间大小

    1.查看表所占空间 SELECT   TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999')   CNT_MB     FROM   ...

  5. 夺命雷公狗---DEDECMS----20dedecms取出栏目页对应的内容

    取出栏目页对应的内容 现在我们的栏目页面是可以完全正常跳转了,那么我们现在需要完成的就是让他的内容全部(电影,连续剧,综艺)分类的显示出来. 我们还是要使用{dede:arclist}标签来取出我们所 ...

  6. 有关git的换行符的处理问题

    签入签出时对换行符的操作: #签出时将LF转换为CRLF,签入时将CRLF转换为LF git config --global core.autocrlf true #签出时不转换,签入时转换为LF g ...

  7. zw版【转发·台湾nvp系列Delphi例程】CheckDifference1

    zw版[转发·台湾nvp系列Delphi例程]CheckDifference1 procedure TForm1.Button1Click(Sender: TObject);var img, img1 ...

  8. C# PDFBox 解析PDF文件

    下载 PDFBox-0.7.3.zip PDFBox-0.7.3.dlllucene-demos-2.0.0.dlllucene-core-2.0.0.dllbcmail-jdk14-132.dllb ...

  9. Linux安装JDK、MyEclipse、MySql

    一.将下载好的 jdk-7u79-linux-x64.tar.gz 复制到要安装的目录 /usr/lib/jdk (注:jdk文件夹自己创建 sudo mkdir jdk)二.进入到目录 /usr/l ...

  10. Linux按键驱动程序设计详解---从简单到不简单【转】

    转自:http://blog.csdn.net/coding__madman/article/details/51399353 版权声明:本文为博主原创文章,未经博主允许不得转载. 混杂设备驱动模型: ...