UVA1450-Airport
2016-01-03 12:14
459 查看
题目链接
题意:有一个飞机场。有两条待飞跑到w和e。一条起飞跑道。每一时刻仅仅能起飞一架飞机,然后有w[i]和e[i]架飞机进入w和e跑道。飞机编号从0開始,问说怎样安排起飞能够使得飞机编号的最大值最小。
思路:仅仅要二分搜索,找到最小的答案就能够了。注意跑道上为0时。是没有飞机起飞的。
题意:有一个飞机场。有两条待飞跑到w和e。一条起飞跑道。每一时刻仅仅能起飞一架飞机,然后有w[i]和e[i]架飞机进入w和e跑道。飞机编号从0開始,问说怎样安排起飞能够使得飞机编号的最大值最小。
思路:仅仅要二分搜索,找到最小的答案就能够了。注意跑道上为0时。是没有飞机起飞的。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 5005; int t; int A[MAXN], B[MAXN]; int judge(int n) { int cura = 0, curb = 0, num = 0; int a, b; for (int i = 0; i < t; i++) { cura += A[i]; curb += B[i]; a = max(cura - n, 0); b = max(curb - n, 0); if (a + b > num) return false; if (cura > 0 && curb > 0 && cura + curb > num) num++; else if (cura > 0 && curb == 0) cura--; else if (cura == 0 && curb > 0) curb--; } return true; } int main() { int cas; scanf("%d", &cas); while (cas--) { scanf("%d", &t); for (int i = 0; i < t; i++) scanf("%d%d", &A[i], &B[i]); int L = 1, R = MAXN * 20, mid; while (L < R) { mid = (R + L) / 2; if (judge(mid)) R = mid; else L = mid + 1; } printf("%d\n", L - 1); } return 0; }
相关文章推荐
- HDU 5009 Paint Pearls (动态规划)
- 第六届福建省大学生程序设计竞赛 Problem E The Longest Straight
- traincascade与AdaBoost的opencv实现框架
- 151217MainTest主函数详细介绍
- RAID技术学习小结
- 七.OC基础加强--1.内存管理 2.野指针,内存泄露 3.set方法的内存管理 4.@property参数 5.@class和循环retain的使用 6.NSString的内存管理
- 【翻译自mos文章】在12c中Create or Truncate Table时很慢,等待事件为 DFS Lock Handle wait
- HDU 3968 Angry Birds Again(计算几何)
- Container With Most Water
- Dreamoon and Stairs
- RTAI 例子
- Jave 鼠标点击画太极 PaintTaiji (整理)
- 让QMainWindow也表现出QDialog的exec函数的特征
- AI学习笔记和制作太极图标的教程
- ssh整合(http://blog.csdn.net/songanling/article/details/22454973)
- header("Location:http://www.baidu.com");
- *Paint House
- UltraISO写入ISO到优盘后安装Debian 8.2,遇到光盘上读取数据错误
- BZOJ 4152: [AMPPZ2014]The Captain
- win32api pywin32 安装后出现 ImportError: DLL load failed