CodeForces–830A--二分,贪心
Office Keys
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
There are n people and k keys on a straight line. Every person wants to get to the office which is located on the line as well. To do that, he needs to reach some point with a key, take the key and then go to the office. Once a key is taken by somebody, it couldn't be taken by anybody else.
You are to determine the minimum time needed for all n people to get to the office with keys. Assume that people move a unit distance per 1 second. If two people reach a key at the same time, only one of them can take the key. A person can pass through a point with a key without taking it.
Input
The first line contains three integers n, k and p (1 ≤ n ≤ 1 000, n ≤ k ≤ 2 000, 1 ≤ p ≤ 109) — the number of people, the number of keys and the office location.
The second line contains n distinct integers a1, a2, ..., an (1 ≤ ai ≤ 109) — positions in which people are located initially. The positions are given in arbitrary order.
The third line contains k distinct integers b1, b2, ..., bk (1 ≤ bj ≤ 109) — positions of the keys. The positions are given in arbitrary order.
Note that there can't be more than one person or more than one key in the same point. A person and a key can be located in the same point.
Output
Print the minimum time (in seconds) needed for all n to reach the office with keys.
Examples
Input
2 4 50
20 100
60 10 40 80
Output
50
Input
1 2 10
11
15 7
Output
7
Note
In the first example the person located at point 20 should take the key located at point 40 and go with it to the office located at point 50. He spends 30 seconds. The person located at point 100 can take the key located at point 80 and go to the office with it. He spends 50 seconds. Thus, after 50 seconds everybody is in office with keys.
思路:
最小化最大值问题
二分,二分最终结果,然后check即可。
check时用到了一个贪心的性质:对某个人来说,若去取某个位于他左边的key满足限制,则取位于这个key右边,p左边的key也满足
代码:

1 /*
2 * @Author: zhans
3 * @Date: 2017-08-18 09:44:32
4 * @Last Modified by: zhans
5 * @Last Modified time: 2017-08-18 14:17:50
6 */
7 #include <bits/stdc++.h>
8 using namespace std;
9 typedef long long ll;
10 const int MAXN = 2000 + 30;
11 int per[MAXN], key[MAXN];
12 int vis[MAXN], vis2[MAXN];
13 int cnt;
14 int n, k, p;
15 bool ok(long long mid)
16 {
17 //memset(vis,0,sizeof(vis));
18 ll output = 0;
19 ll now = 1;
20 for (ll i = 1; i <= n; i++)
21 {
22 while (now <= k && abs(key[now] - per[i]) + abs(key[now] - p) > mid)
23 {
24 now++;
25 }
26 if (now <= k)
27 {
28 now++;
29 output++;
30 }
31 else break;
32 }
33 if (output >= n)return 1;
34 else return 0;
35 }
36 int main()
37 {
38 // freopen("data.in", "r", stdin);
39 scanf("%d%d%d", &n, &k, &p);
40 for (int i = 1; i <= n; i++) {
41 scanf("%d", &per[i]);
42 }
43 for (int i = 1; i <= k; i++) {
44 scanf("%d", &key[i]);
45 }
46 //for(int i=0;i<k;i++) mp[i]=i;
47 sort(per+1, per + n+1);
48 sort(key+1, key + k+1);
49 long long l = 0, r = 2e9;
50 while (r - l > 1) {
51 long long mid = (l + r) / 2;
52 if (ok(mid)) {
53 r = mid;
54 }
55 else {
56 l = mid;
57 }
58 }
59 if(ok(l)) r=l;
60 printf("%I64d\n", r);
61 }
CodeForces–830A--二分,贪心的更多相关文章
- Codeforces 732D [二分 ][贪心]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: n天进行m科考试,每科考试需要a的复习时间,n天每天最多可以考一科.并且指定哪天考哪科. 注意考试那天不能复习. 问最少需要多少天可全部通过考试. ...
- CodeForces - 551C 二分+贪心
题意:有n个箱子形成的堆,现在有m个学生,每个学生每一秒可以有两种操作: 1: 向右移动一格 2: 移除当前位置的一个箱子 求移除所有箱子需要的最短时间.注意:所有学生可以同时行动. 思路:二分时间, ...
- Codeforces 825D 二分贪心
题意:给一个 s 串和 t 串, s 串中有若干问号,问如何填充问号使得 s 串中字母可以组成最多的 t 串.输出填充后的 s 串. 思路:想了下感觉直接怼有点麻烦,要分情况:先处理已经可以组成 t ...
- Codeforces Gym 100231B Intervals 线段树+二分+贪心
Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...
- 2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 二分+贪心
/** 题目:2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 链接:http://codeforces.com/gym/101194 题意:给n个木块,堆 ...
- CodeForces - 158B.Taxi (贪心)
CodeForces - 158B.Taxi (贪心) 题意分析 首先对1234的个数分别统计,4人组的直接加上即可.然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一 ...
- 【bzoj2097】[Usaco2010 Dec]Exercise 奶牛健美操 二分+贪心
题目描述 Farmer John为了保持奶牛们的健康,让可怜的奶牛们不停在牧场之间 的小路上奔跑.这些奶牛的路径集合可以被表示成一个点集和一些连接 两个顶点的双向路,使得每对点之间恰好有一条简单路径. ...
- Codeforces_732D_(二分贪心)
D. Exams time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- CF732D Exams 二分 贪心
思路:二分+贪心 提交次数:10次以上 错因:刚开始以为二分(边界,$+1or-1$)写错了,调了半天,后来才发现是$ck()$写错了.开始只判了最后是否小于零,而应该中间一旦小于零就$return\ ...
- $CF949D\ Curfew$ 二分/贪心
正解:二分/贪心 解题报告: 传送门$QwQ$ 首先这里是二分还是蛮显然的?考虑二分那个最大值,然后先保证一个老师是合法的再看另一个老师那里是否合法就成$QwQ$. 发现不太会搞这个合不合法的所以咕了 ...
随机推荐
- 怎样理解 instanceof
instanceof 运算符用来判断一个对象在其原型链中是否存在一个构造函数的 prototype 属性. 也就是说, instanceof 判断的实际上是某个对象是否为某个构造函数的实例, 因为es ...
- 6-Perl 标量
1.Perl 标量标量是一个简单的数据单元.标量可以是一个整数,浮点数,字符,字符串,段落或者一个完整的网页.以下实例演示了标量的简单应用:实例#!/usr/bin/perl$age = 20; # ...
- Fix Scheduled Task Won’t Run for .BAT File
Step 1: Check File/Folder Permissions The first step to fixing this issue is ensuring that the accou ...
- 【原创】大叔经验分享(58)kudu写入压力大时报错
kudu写入压力大时报错 19/05/18 16:53:12 INFO AsyncKuduClient: Invalidating location fd52e4f930bc45458a8f29ed1 ...
- [转载]Yacc基础
原文:https://www.ibm.com/developerworks/cn/linux/sdk/lex/index.html,摘录部分内容. Yacc的定义 Yacc 代表 Yet Anothe ...
- Centos7:ActiveMQ安装,配置及使用
解压缩ActiveMQ 的压缩包 使用 命令在bin目录下 ./activemq stat//开启 ./activemq stop//关闭 ./activemq status//状态 进入管理后台 U ...
- 1 .net中自定义事件的步骤
1 申明一个自定义的类并且继承事件的基类 public class ClientSocketModelConnectedEvent:EventArgs { private string param; ...
- Idea格式化快捷键无效,没反应
Idea格式化快捷键无效,没反应 1,关闭网易云音乐快捷键 2,修改搜狗输入法快捷键 目前本人只遇到过这两种
- element table切换分页不勾选的自带方法
场景一:没有回显勾选的情况 table表格加row-key标识选中行唯一标识,多选框加reserve-selection设置为true <template> <el-table v- ...
- java web中 8080端口号被占用的问题处理,终于明白了 Address already in use: JVM_Bind(端口冲突)
1.错误描述 2011-7-20 11:05:18 org.apache.catalina.core.StandardServer await严重: StandardServer.await: cre ...