Codeforces 729C Road to Cinema(二分)
题目链接 http://codeforces.com/problemset/problem/729/C
题意:n个价格c[i],油量v[i]的汽车,求最便宜的一辆使得能在t时间内到达s,路途中有k个位置在g[i]的加油站,可以免费加满油,且不耗时间。每辆车有两种运行模式可以随时切换:1.每米一分钟两升油;2.每米两分钟一升油。
看到10^5次加上循环两次就想到二分或者线段树或者看错题意了。
这题二分查找一下汽油就可以了,找到最少多少汽油够到达,然后再for一遍找汽油量大的且价格便宜的车即可。
还有一些关系要注意一下的
t(min) = 不符合 (L > v[i])
= L (2 * L <= v[i])
= 3 * L - v[i] (L<=v[i]<2 * L)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int M = 2e5 + 10;
typedef long long ll;
struct TnT {
int v , f;
}sl[M];
ll pos[M] , sp[M];
bool cmp(TnT a , TnT b) {
return a.f > b.f;
}
int main()
{
int n , k , s , t;
scanf("%d%d%d%d" , &n , &k , &s , &t);
for(int i = 0 ; i < n ; i++) {
scanf("%d%d" , &sl[i].v , &sl[i].f);
}
ll le = 0;
int temp = 0;
for(int i = 0 ; i < k ; i++) {
scanf("%I64d" , &pos[i]);
}
sort(pos , pos + k);
for(int i = 0 ; i < k ; i++) {
sp[temp++] = pos[i] - le;
le = pos[i];
}
if(pos[k - 1] != s) {
sp[temp++] = s - le;
}
sort(sl , sl + n , cmp);
int l = 0 , r = n - 1;
int flag;
while(l <= r) {
int mid = (l + r) >> 1;
ll sum = 0;
flag = 0;
for(int i = 0 ; i < temp ; i++) {
ll gg = sp[i] * 3;
if(sl[mid].f < sp[i]) {
flag = 1;
break;
}
else {
if(2 * sp[i] <= sl[mid].f) {
sum += sp[i];
}
else {
sum += (gg - sl[mid].f);
}
flag = 0;
}
}
if(flag == 1) {
r = mid - 1;
continue;
}
if(sum > t) {
r = mid - 1;
}
else {
l = mid + 1;
}
}
if(l - 1 == -1) {
printf("-1\n");
}
else {
int MIN = sl[l - 1].v;
int cmper = sl[l - 1].f;
for(int i = 0 ; i < n ; i++) {
if(sl[i].f >= cmper) {
MIN = min(MIN , sl[i].v);
}
}
printf("%d\n" , MIN);
}
return 0;
}
Codeforces 729C Road to Cinema(二分)的更多相关文章
- Codeforces #380 div2 C(729C) Road to Cinema
C. Road to Cinema time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- Codeforces Round #380 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 2)C. Road to Cinema 二分
C. Road to Cinema time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- Technocup 2017 - Elimination Round 2 C. Road to Cinema —— 二分
题目链接:http://codeforces.com/problemset/problem/729/C C. Road to Cinema time limit per test 1 second m ...
- CodeForces 738C Road to Cinema
二分答案. 油量越多,显然通过的时间越少.可以二分找到最小的油量,可以在$t$时间内到达电影院. 一个油箱容量为$v$的车通过长度为$L$的路程需要的最小时间为$max(L,3*L-v)$.计算过程如 ...
- Road to Cinema
Road to Cinema time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【26.83%】【Codeforces Round #380C】Road to Cinema
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- Road to Cinema(贪心+二分)
https://www.cnblogs.com/flipped/p/6083973.html 原博客转载 http://codeforces.com/group/1EzrFFyOc0/co ...
- CodeForces 377B---Preparing for the Contest(二分+贪心)
C - Preparing for the Contest Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d ...
随机推荐
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
- L4170[CQOI2007]涂色
#include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i <= b; ...
- 关于asp.net调用gemalto超级狗api的具体实现
鉴于网上关于超级狗的具体操作并不详细,我把我所知道的写下来,希望能给有需求的网友做个参考.软件外壳保护我就不说了,没有什么难度,供应商也会提供文档,一步一步操作即可.我要说的是用于保护发给客户的程序, ...
- 微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.
最近在学习微信小程序云开发,刚一开始就遇到了问题. 点击获取openid的时候控制台开始报错: [云函数] [login] user openid: undefined VM97:1 Setting ...
- mybatis学习的终极宝典
**********************************************************************************************一:myba ...
- 谈谈我对Ext的认识,元芳,你怎么看
实用Ext第一步当然是引用jar包啦. 下载地址 在页面上加上div用于显示这也是必须的 <div id='loginpanel' ></div> 在js中我们肯定需要将Ext ...
- Docker 前沿概述
目录 Docker 前沿概述 什么是Docker? Docker的基本概念 容器(Container) -- 镜像运行时的实体 镜像(Image) -- 一个特殊的文件系统 仓库(Repository ...
- 链表:如何实现LRU缓存淘汰算法?
缓存淘汰策略: FIFO:先入先出策略 LFU:最少使用策略 LRU:最近最少使用策略 链表的数据结构: 可以看到,数组需要连续的内存空间,当内存空间充足但不连续时,也会申请失败触发GC,链表则可 ...
- 无重复字符的最长子串[双指针+哈希表] LeetCode.3
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- shiro@RequiresPermission的设置
public class MyShiroRealm extends AuthorizingRealm { //slf4j记录日志,可以不使用 private Logger logger = Logge ...