【Codeforces 1148B】Born This Way
【链接】 我是链接,点我呀:)
【题意】
有人要从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的更多相关文章
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- 【codeforces 707E】Garlands
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...
- 【codeforces 707C】Pythagorean Triples
[题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...
- 【codeforces 709D】Recover the String
[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...
- 【codeforces 709B】Checkpoints
[题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...
- 【codeforces 709C】Letters Cyclic Shift
[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...
- 【Codeforces 429D】 Tricky Function
[题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...
- 【Codeforces 670C】 Cinema
[题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...
- 【codeforces 515D】Drazil and Tiles
[题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...
随机推荐
- Ubuntu图形界面和终端界面切换快捷键
Ctrl+Alt+F1可以从图形界面切换到终端界面. Ctrl+Alt+F7可以从终端界面退出来,重新回到图形界面
- Python与JAVA的异同
--效率: 作为静态语言的JAVA执行效率比动态型语言的Python高 --语法: Python语句更精简. JAVA中的所有变量需要先声明(类型),才能使用,Python不需要声明变量类型 Pyth ...
- springcolud依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...
- pom.xml解释
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 探索C++的秘密之详解extern
转载:http://developer.51cto.com/art/200704/46843.htm C和C++对函数的处理方式是不同的.extern "C"是使C++能够调用C写 ...
- Linux之mysql-redis-python使用
1. rpm包使用 1. 光盘挂载 mount /dev/cdrom /mnt cd /mnt ls 2. 安装rpm包 rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm ...
- build protobuf to a static library
use ar cd src ar -cvq libprotobuf.a *.o
- LightOJ 1203 Guarding Bananas (凸包最小顶角)
题目链接:LightOJ 1203 Problem Description Once there was a lazy monkey in a forest. But he loved banana ...
- swiper在微信端滑动效果不友好(滑动不了)的解决方案
如需转载请注明出处.好用就点赞吧 前提:我做的事竖直方向的一份报告,上下翻页滑动. 猜测原因: 1.检查自己的slide里面内容的样式的的高度,就是两个页面的高度不一致,测试的时候wrapper会取连 ...
- CM 安装CDH 错误: 安装失败。 无法接收 Agent 发出的检测信号。
在安装CDH的时候出现错误提示: 安装失败. 无法接收 Agent 发出的检测信号. 日志提示错误: start >> raise socket.error(msg) >>er ...