题意:

有W、E两个跑道,在每个时刻每个跑道的飞机都从0开始编号,而且每个时刻都有Wi和Ei架飞机到达这两个跑道。而且每个时刻只能选择一个跑道的一架飞机起飞。问如何选择才能使得飞机的最大编号最小。(每个时刻算编号时是在飞机起飞之前的)

思路:

又是一个最大值最小的问题,可以用二分,不过怎么二分我没有想到。

参考的别人的代码:http://blog.csdn.net/u011345136/article/details/17793415

起飞的决策是这样的:

如果一条跑道是空的,另一条跑道有飞机,那么一定是选择有飞机的那条跑道起飞。

如果两条跑道都有飞机,把能起飞的次数加一记录下来。

假设最大编号为k,如果两个跑道比k多出来的那些飞机比能起飞走的次数还多,说明最大编号就比k大了,这时就不行。

 //#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn = + ;
const int INF = ;
int a[maxn], b[maxn], n; bool check(int k)
{
int A = , B = , aa, bb, sum = ; //A B分别是两条跑道的飞机数量
for(int i = ; i < n; ++i)
{
A += a[i];
B += b[i];
aa = max(A - k, );
bb = max(B - k, );
if(aa + bb > sum) return false;
if(A == && B) --B;
else if(B == && A) --A;
else if(A && B && A + B > sum) ++sum; //A + B <= sum说明两条跑道都没有飞机了
}
return true;
} int main(void)
{
#ifdef LOCAL
freopen("4725in.txt", "r", stdin);
#endif int T;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
for(int i = ; i < n; ++i)
scanf("%d%d", &a[i], &b[i]); int l = , r = INF; int ans;
while (l <= r)
{
int mid = (l + r) >> ;
if (check(mid))
{
ans = mid;
r = mid - ;
}
else l = mid + ;
}
printf("%d\n",ans-); } return ;
}

代码君

LA 4725 (二分) Airport的更多相关文章

  1. LA 3971 (二分) Assemble

    题意: 你有b块钱想要组装一台电脑.给出n个配件的种类,品质和价格,要求每个种类的配件各买一个总价格不超过b且“品质最差配件”的品质因子应尽量大. 这种情况下STL的map的确很好用,学习学习 这种最 ...

  2. UVALive 4725 Airport(二分)

    题目链接 题意 机场有两种飞机,每小时一些飞机到达,每小时安排一架飞机起航.求任意时刻中两种飞机数目的最大值的最小值. 分析 首先肯定是二分来做.这里的难点在于如何判断飞机数目是否合法.一开始忽略了某 ...

  3. UVa Live 4725 - Airport 二分,动态规划,细节 难度: 1

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  4. (中等) HDU 5046 Airport ,DLX+可重复覆盖+二分。

    Description The country of jiuye composed by N cites. Each city can be viewed as a point in a two- d ...

  5. LA 2678 Subsequence(二分查找)

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  6. 简单几何(半平面交+二分) LA 3890 Most Distant Point from the Sea

    题目传送门 题意:凸多边形的小岛在海里,问岛上的点到海最远的距离. 分析:训练指南P279,二分答案,然后整个多边形往内部收缩,如果半平面交非空,那么这些点构成半平面,存在满足的点. /******* ...

  7. HDU5046 Airport dancing links 重复覆盖+二分

    这一道题和HDU2295是一样 是一个dancing links重复覆盖解决最小支配集的问题 在给定长度下求一个最小支配集,只要小于k就行 然后就是二分答案,每次求最小支配集 只不过HDU2295是浮 ...

  8. hdu 5046 Airport 二分+重复覆盖

    题目链接 给n个点, 定义两点之间距离为|x1-x2|+|y1-y2|. 然后要选出k个城市建机场, 每个机场可以覆盖一个半径的距离. 求在选出点数不大于k的情况下, 这个半径距离的最大值. 二分半径 ...

  9. UVa LA 4254 - Processor 二分,贪心 难度: 1

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

随机推荐

  1. eclipse luna使用jdk1.8初始化

    1.安装jdk版本1.8 2.配置环境变量 D:\Program Files\Java\jdk1.8.0_11 (如果从jdk7更改为jdk8,修改JAVA_HOME变量就可以了.)JAVA_HOME ...

  2. rm删除命令

    linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有 ...

  3. 7 天玩转 ASP.NET MVC — 第 7 天

    目录 第 1 天 第 2 天 第 3 天 第 4 天 第 5 天 第 6 天 第 7 天 0. 前言 今天是开心的一天.因为我们终于来到了系列学习的最后一节.我相信你喜欢之前的课程,并从中学到了许多. ...

  4. 安装wps for linux无法启动

    我下载的是deb包,双击安装完之后,打开wps没有反应,重启了一下 计算机也不行. 改从命令行出现如下信息: /opt/kingsoft/wps-office/office6/wps: error w ...

  5. Integral类型的跨平台使用

    fundamental integral types or extended integral types 我们先通过下图,来了解可以跨平台使用的整数类型: 之所以我们需要以上各种明确指定宽度的int ...

  6. MongoDB 安装,启动与基本使用

    一.MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++ ...

  7. iOS多线程 GCD

    iOS多线程 GCD Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. dispatch queue分成以下三种: 1)运行在主线程的Main que ...

  8. Android核心分析 之十一Android GWES之消息系统

        Android GWES之Android消息系统                                                                        ...

  9. React状态的含义和用法

    一. 二.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&quo ...

  10. IDL---ENVI

    ENVI;启动envi file=envi_pickfile();选择文件dialog,返回值就为file ENVI_OPEN_FIle,file,r_fid=fid;根据文件名打开file,并且返回 ...