Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Codeforces 738C】Road to Cinema

【Codeforces 738C】Road to Cinema

作者头像
饶文津
发布于 2020-06-02 03:11:48
发布于 2020-06-02 03:11:48
42300
代码可运行
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏
运行总次数:0
代码可运行

http://codeforces.com/contest/738/problem/C

Vasya is currently at a car rental service, and he wants to reach cinema. The film he has bought a ticket for starts in t minutes. There is a straight road of length s from the service to the cinema. Let's introduce a coordinate system so that the car rental service is at the point 0, and the cinema is at the point s.

There are k gas stations along the road, and at each of them you can fill a car with any amount of fuel for free! Consider that this operation doesn't take any time, i.e. is carried out instantly.

There are n cars in the rental service, i-th of them is characterized with two integers ci and vi — the price of this car rent and the capacity of its fuel tank in liters. It's not allowed to fuel a car with more fuel than its tank capacity vi. All cars are completely fueled at the car rental service.

Each of the cars can be driven in one of two speed modes: normal or accelerated. In the normal mode a car covers 1 kilometer in 2 minutes, and consumes 1 liter of fuel. In the accelerated mode a car covers 1 kilometer in 1 minutes, but consumes 2 liters of fuel. The driving mode can be changed at any moment and any number of times.

Your task is to choose a car with minimum price such that Vasya can reach the cinema before the show starts, i.e. not later than in t minutes. Assume that all cars are completely fueled initially.

Input

The first line contains four positive integers nks and t (1 ≤ n ≤ 2·105, 1 ≤ k ≤ 2·105, 2 ≤ s ≤ 109, 1 ≤ t ≤ 2·109) — the number of cars at the car rental service, the number of gas stations along the road, the length of the road and the time in which the film starts.

Each of the next n lines contains two positive integers ci and vi (1 ≤ ci, vi ≤ 109) — the price of the i-th car and its fuel tank capacity.

The next line contains k distinct integers g1, g2, ..., gk (1 ≤ gi ≤ s - 1) — the positions of the gas stations on the road in arbitrary order.

Output

Print the minimum rent price of an appropriate car, i.e. such car that Vasya will be able to reach the cinema before the film starts (not later than in t minutes). If there is no appropriate car, print -1.

Examples

input

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
3 1 8 10
10 8
5 7
11 9
3

output

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10

input

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2 2 10 18
10 4
20 6
5 3

output

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
20

Note

In the first sample, Vasya can reach the cinema in time using the first or the third cars, but it would be cheaper to choose the first one. Its price is equal to 10, and the capacity of its fuel tank is 8. Then Vasya can drive to the first gas station in the accelerated mode in 3 minutes, spending 6 liters of fuel. After that he can full the tank and cover 2 kilometers in the normal mode in 4 minutes, speding 2 liters of fuel. Finally, he drives in the accelerated mode covering the remaining 3 kilometers in 3 minutes and spending 6 liters of fuel.

题意:n个价格c[i],油量v[i]的汽车,求最便宜的一辆使得能在t时间内到达s,路途中有k个位置在g[i]的加油站,可以免费加满油,且不耗时间。每辆车有两种运行模式可以随时切换:1.每米一分钟两升油;2.每米两分钟一升油。

题解:二分求可以到达s的最小油量。对于油量v,能到达s的条件是:油量足够经过最长路程(中途不能加油);总的最小时间不超过t。为了求最小时间,可以用线性规划:一段不加油的路程长度为l,假设x米运行的是1.模式,则l-x米运行的是2.模式。总时间为t。则有

\begin{equation} \left\{ \begin{aligned} t=x+2*(l-x)\\ v≥x*2+l-x\\ x≥0\\ l-x≥0\\ \end{aligned} \right. \end{equation} 

化简一下:

\begin{equation} \left\{ \begin{aligned} t=2*l-x\\ x≤v-l\\ l≥x≥0\\ \end{aligned} \right. \end{equation}

最后得到:

\begin{aligned} t_{min} & = 2*l-x_{max}\\ & = 2*l-min(v-l,l)\\ & = max(l*3-v,l)\\ \end{aligned}

且v≥l,可以改为v≥max(l)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define N 200005
using  namespace std;
int n,k,s,t,c[N],v[N],g[N],mg,ans=1e9+1,mv;
bool ck(int v){
    if(v<mg)return 0;
    int tol=0;
    for(int i=1;i<=k+1;i++){
        tol+=max(g[i],3*g[i]-v);
        if(tol>t)return 0;
    }
    return 1;
}
int main(){
    scanf("%d%d%d%d",&n,&k,&s,&t);
    for(int i=1;i<=n;i++)
        scanf("%d%d",c+i,v+i);
    for(int i=1;i<=k;i++)
        scanf("%d",g+i);
    sort(g+1,g+1+k);
    g[k+1]=s;
    for(int i=k+1;i;i--)
        mg=max(mg,g[i]-=g[i-1]);
//接下来是萌萌哒的二分
    for(int l=0,r=1e9,m=l+r>>1;l<=r;ck(m=l+r>>1)?r=m-1,mv=m:l=m+1);
    if(mv)
    for(int i=1;i<=n;i++)if(v[i]>=mv) ans=min(ans,c[i]);
    if(ans>1e9)ans=-1;
    printf("%d",ans);
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-11-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 134. Gas Station题目分析
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations. Return the starting gas station's index if you can travel around the circuit once, otherwise return -1. Note:The solution is guaranteed to be unique. Subscribe to see which companies asked this question. 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第i个加油站前往第i+1个加油站需要消耗汽油cost[i]。 你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。 求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。 注意事项 数据保证答案唯一。 样例 现在有4个加油站,汽油量gas[i]=[1, 1, 3, 1],环路旅行时消耗的汽油量cost[i]=[2, 2, 1, 1]。则出发的加油站的编号为2。
desperate633
2018/08/22
7570
图论--网络流--最小割 HDU 2485 Destroying the bus stations(最短路+限流建图)
Gabiluso is one of the greatest spies in his country. Now he’s trying to complete an “impossible” mission ----- to make it slow for the army of City Colugu to reach the airport. City Colugu has n bus stations and m roads. Each road connects two bus stations directly, and all roads are one way streets. In order to keep the air clean, the government bans all military vehicles. So the army must take buses to go to the airport. There may be more than one road between two bus stations. If a bus station is destroyed, all roads connecting that station will become no use. What’s Gabiluso needs to do is destroying some bus stations to make the army can’t get to the airport in k minutes. It takes exactly one minute for a bus to pass any road. All bus stations are numbered from 1 to n. The No.1 bus station is in the barrack and the No. n station is in the airport. The army always set out from the No. 1 station. No.1 station and No. n station can’t be destroyed because of the heavy guard. Of course there is no road from No.1 station to No. n station. Please help Gabiluso to calculate the minimum number of bus stations he must destroy to complete his mission.
风骨散人Chiam
2020/10/28
4070
PAT 1033 To Fill or Not to Fill (25分) 贪心思想
With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different gas station may give different price. You are asked to carefully design the cheapest route to go.
vivi
2020/07/14
7220
回溯/贪心高频题
"有关递归的算法,都离不开“树”的遍历这一抽象模型。只不过对于不同的算法,在前(中)后序遍历的时候,所做的事不同而已。 "
王脸小
2019/10/28
1.5K0
【CodeForces】638A - Home Numbers(水)
The main street of Berland is a straight line with n houses built along it (n is an even number). The houses are located at both sides of the street. The houses with odd numbers are at one side of the street and are numbered from 1 to n - 1 in the order from the beginning of the street to the end (in the picture: from left to right). The houses with even numbers are at the other side of the street and are numbered from 2 to n in the order from the end of the street to its beginning (in the picture: from right to left). The corresponding houses with even and odd numbers are strictly opposite each other, that is, house 1 is opposite house n, house 3 is opposite house n - 2, house 5 is opposite house n - 4 and so on.
FishWang
2025/08/26
1190
【CodeForces】638A - Home Numbers(水)
HDUOJ----2485 Destroying the bus stations(2008北京现场赛A题)
Destroying the bus stations                                                                                     Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)                                                            
Gxjun
2018/03/22
5590
【CodeForces】703C - Chris and Road(思维,好题)
And while Mishka is enjoying her trip...
FishWang
2025/08/26
1790
【CodeForces】703C - Chris and Road(思维,好题)
Codeforces Round #491 (Div. 2)部分题解
这场比赛好鬼畜啊,,A题写崩了wa了4遍,心态直接爆炸,本来想弃疗了,结果发现BCD都是傻逼题。。 A. If at first you don't succeed...(容斥原理) 题目大意: 有$N$个人参加了考试,考试完成后在通过的人中,有$A$个人去了第一个酒店聚会,有$B$个人去了第二个酒店聚会,有$C$个人同时去了两个酒店聚会。 问有多少个人没有通过考试(主角没有通过考试) Sol 小学生容斥,参加了聚会的肯定有$A+B-C$个人,用$N$减去这个数就是不合格的喽 一开始wa了4发心态爆炸然后加
attack
2018/07/04
4170
CodeForces - 1245 D - Shichikuji and Power Grid
Shichikuji is the new resident deity of the South Black Snail Temple. Her first job is as follows:
风骨散人Chiam
2020/10/28
6000
CodeForces - 1245 D - Shichikuji and Power Grid
codeforces 349B(贪心)
Igor has fallen in love with Tanya. Now Igor wants to show his feelings and write a number on the fence opposite to Tanya’s house. Igor thinks that the larger the number is, the more chance to win Tanya’s heart he has.
dejavu1zz
2020/10/23
3000
Codeforces 839C Journey【DFS】
C. Journey time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can reach any city from any other by the
Angel_Kitty
2018/04/09
9250
Codeforces 839C Journey【DFS】
R语言二手车汽车销售数据可视化探索:预处理、平滑密度图、地理空间可视化
本文用爬虫采集了汽车销售数据(查看文末了解数据获取方式),后来对其进行了扩展,创建这个数据集,其中包括境内的所有二手车辆或者经销商车辆条目数据(点击文末“阅读原文”获取完整代码数据)。
拓端
2023/08/31
3790
R语言二手车汽车销售数据可视化探索:预处理、平滑密度图、地理空间可视化
CodeForces 666B World Tour(spfa+枚举)
B. World Tour time limit per test 5 seconds memory limit per test 512 megabytes input standard input output standard output A famous sculptor Cicasso goes to a world tour! Well, it is not actually a world-wide. But not everyone should have th
ShenduCC
2018/04/26
5960
CodeForces 666B World Tour(spfa+枚举)
CodeForces 24A Ring road(dfs)
A. Ring road time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Nowadays the one-way traffic is introduced all over the world in order to improve driving safety and reduce traffic jams
ShenduCC
2018/04/27
6890
Codeforces Round #179 (Div. 2)A、B、C、D
n个元素的数组,每个元素不超过1000,可以交换相邻两个元素,问是否可以在有限次的操作之后使得相邻两个元素的值不相同。
xindoo
2021/01/22
2940
2020 Multi-University Training Contest 6
给定 n 个数,每个数有价值 val[i] 。随机选择 i\leq j 的 (i,j) 点对,问下标 i 到 j 的子数组价值和的平均数的期望。
wenzhuan
2022/08/15
3980
最短路专题1 | CodeForces 601A - 混合Dijkstra算法
这个十一没有出去玩,花了一些时间在写之前提过的 markdown 编辑器,本文就是用这个编辑器写的 2333,今天准备写咱们的新专题 — 最短路。另外之前提过专题的题目主要使用 kuangbin 系列,现在改变主意了,专题题目全部使用 CodeForces 上的题目,原因主要是 POJ 等国内的 OJ 系统不能看源代码,而且题目质量稍微欠缺一些,然后没有区分度。
ACM算法日常
2019/10/09
5240
最短路专题1 | CodeForces 601A - 混合Dijkstra算法
CF思维联系– CodeForces - 991C Candies(二分)
After passing a test, Vasya got himself a box of n candies. He decided to eat an equal amount of candies each morning until there are no more candies. However, Petya also noticed the box and decided to get some candies for himself.
风骨散人Chiam
2020/10/28
5460
【CodeForces 602C】H - Approximating a Constant Range(dijk)
In Absurdistan, there are n towns (numbered 1 through n) and m bidirectional railways. There is also an absurdly simple road network — for each pair of different towns x and y, there is a bidirectional road between towns x and yif and only if there is no railway between them. Travelling to a different town using one railway or one road always takes exactly one hour.
饶文津
2020/05/31
5130
ZOJ 3635 Cinema in Akiba(线段树)
Cinema in Akiba (CIA) is a small but very popular cinema in Akihabara. Every night the cinema is full of people. The layout of CIA is very interesting, as there is only one row so that every audience can enjoy the wonderful movies without any annoyance by other audiences sitting in front of him/her.
全栈程序员站长
2022/07/07
2170
相关推荐
LeetCode 134. Gas Station题目分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验