https://www.luogu.org/problem/P2968

题目描述

Bessie has entered a bobsled competition because she hopes her hefty weight will give her an advantage over the L meter course (2 <= L <= 1,000,000,000).
Bessie will push off the starting line at 1 meter per second, but her speed can change while she rides along the course. Near the middle of every meter Bessie travels, she can change her speed either by using gravity to accelerate by one meter per second or by braking to stay at the same speed or decrease her speed by one meter per second.
Naturally, Bessie must negotiate N (1 <= N <= 100,000) turns on the way down the hill. Turn i is located Ti meters from the course start (1 <= Ti <= L-1), and she must be enter the corner meter at a speed of at most Si meters per second (1 <= Si <= 1,000,000,000). Bessie can cross the finish line at any speed she likes.
Help Bessie learn the fastest speed she can attain without exceeding the speed limits on the turns.
贝茜从山顶滑雪到山脚,山顶到山脚距离是L(2<L<10^9)米.贝茜在起点的速度是1米每秒,但是他的速度是可以改变的,在每一米的速度可以是前一米的速度加1、减1,或者等于前一米的速度.在滑行的过程中,贝茜会遇到N<=100000)个转弯处,第i个转弯处位于距离出发Ti米处,为了安全,贝茜到达第i个转弯处的速度不能超过Si(1<Si<10^9)米 每秒.当然贝茜到达终点时的速度没有最大限制.请你计算贝茜在滑雪过程中最大的速度可以是多少?
 
 
Consider this course with the meter markers as integers and the turn speed limits in brackets (e.g., '[3]'):
| []
|---+---+---+---+---+---+---+
| \
Start +
\
+
\
+ +++ (finish)
\ /
[] +---+---+
[] Below is a chart of Bessie's speeds at the beginning of each meter length of the course:
Max:
Mtrs:
Spd: Her maximum speed was near the beginning of meter .

输入描述:

* Line 1: Two space-separated integers: L and N
* Lines 2..N+1: Line i+1 describes turn i with two space-separated integers: Ti and Si

输出描述:

* Line 1: A single integer, representing the maximum speed which Bessie can attain between the start and the finish line, inclusive.

输入


输出

 

100000的数据规模显然很难区间DP,于是我们考虑贪心。

这题的特性:速度变化量为±1或0。

对于每个拐角,经过它的速度的最大限制(既要小于题目给出的安全限制,又要确保后面的拐角能够顺利通过)。

知道这个之后,我们就可以从前往后模拟,计算出每两个拐角之间的速度最大值(不要忘了还有起点和终点),以及到达拐角时的速度。

计算最大速度值要用点脑子(自己试着推下,或参考代码)

 
 #include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <math.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <math.h>
const int INF=0x3f3f3f3f;
typedef long long LL;
const int mod=1e9+;
const double PI=acos(-);
const int maxn=;
using namespace std;
//ios::sync_with_stdio(false);
// cin.tie(NULL); int l,n,ans;
struct node
{
int dis;//限制点的坐标
int speed;//限制速度
}limit[maxn]; bool cmp(node a,node b)
{
return a.dis<b.dis;
} int main()
{
scanf("%d %d",&l,&n);
for(int i=;i<=n;i++)
{
scanf("%d %d",&limit[i].dis,&limit[i].speed);
}
sort(limit+,limit++n,cmp);//不知道数据是不是按距离输入的,保险起见排个序 for(int i=n;i>=;i--)//反着更新速度限制
{
limit[i-].speed=min(limit[i-].speed,limit[i].speed+limit[i].dis-limit[i-].dis);
}
ans=;//答案
int s=;//速度值
for(int i=;i<=n;i++)
{
int d1=limit[i].speed-s;
int d2=limit[i].dis-limit[i-].dis;
if(d1<d2)
{
ans=max(ans,limit[i].speed+(d2-d1)/);
s=limit[i].speed;
}
else
{
ans=max(ans,s+d2);
s+=d2;
}
}
//注意最后一段是可以一直加速的,别忘了再比较一次
s+=l-limit[n].dis;
ans=max(ans,s);
printf("%d\n",ans);
return ;
}
 
 
 
 
 
 

[USACO09DEC]雪橇Bobsledding(贪心)的更多相关文章

  1. Luogu P2970 [USACO09DEC]自私的放牧

    https://www.luogu.org/problemnew/show/P2970 P2970 [USACO09DEC]自私的放牧 题目描述 Each of Farmer John's N (1 ...

  2. 洛谷 P2970 [USACO09DEC]自私的放牧Selfish Grazing

    P2970 [USACO09DEC]自私的放牧Selfish Grazing 题目描述 Each of Farmer John's N (1 <= N <= 50,000) cows li ...

  3. BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][St ...

  4. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  5. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  7. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  8. 【BZOJ-4245】OR-XOR 按位贪心

    4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 486  Solved: 266[Submit][Sta ...

  9. code vs 1098 均分纸牌(贪心)

    1098 均分纸牌 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解   题目描述 Description 有 N 堆纸牌 ...

随机推荐

  1. UML-设计模式-缓存策略

    继续前一章<本地服务容错> 问题:考虑加载内存ProductCatalog缓存和基于LocalProducts文件缓存的可选方案: 一种是惰性初始化(lazy init):当实际读取外部产 ...

  2. CodeForces - 748D Santa Claus and a Palindrome (贪心+构造)

    题意:给定k个长度为n的字符串,每个字符串有一个魅力值ai,在k个字符串中选取字符串组成回文串,使得组成的回文串魅力值最大. 分析: 1.若某字符串不是回文串a,但有与之对称的串b,将串a和串b所有的 ...

  3. HTML-基础标记

    HTML, 一种超文本标记语言,顾名思义,要比文本的样式多,而且是由标记组成,还是一门语言. 标记写法 <标记名> <a></a>双标记 超链接 <br /& ...

  4. 14. react 基础 redux 的编写 TodoList 功能

    1. 安装 redux 监听工具 ( 需要翻墙 ) 打开 谷歌商店 搜索 redux devtool 安装第一个即可 2. 安装 redux yarn add redux 3. 创建 一个 store ...

  5. json,pickle,shelve序列化

    import json a = [{"a":"b"}] jd = json.dumps(a) #序列化,就是对象通过内存能够存储和传输的过程 with open ...

  6. 题解 P1082 【同余方程】

    题目 这里给出非递归的 exgcd 做法 [基础] ( 只需要非递归的同学麻烦跳过 ) 由于欧几里德算法 ( 又名辗转相除法 ) 可以帮助我们求出最大公约数,并且提出对于 \(\forall a,b\ ...

  7. SQL基础教程(第2版)第2章 查询基础:练习题

    SELECT product_name, regist_date FROM Product WHERE regist_date > '2009-04-28'; ① ~ ③中的 SQL 语句都无法 ...

  8. Linux 常用命令全拼

    pwd: print work directory 打印当前目录 显示出当前工作目录的绝对路径 ps: process status(进程状态,类似于windows的任务管理器) 常用参数:-auxf ...

  9. Django2.0——实现简易登陆、注册

    思路: 实现简易的登陆.注册,我们至少需要三个HTML页面,一个主页面.一个登陆界面.一个注册界面.为了存储和校验用户的账号和密码,我们需要写一个模型类(用于映射到数据库).两个form类(一个登陆. ...

  10. shell的一些一句话东西

    shell的一些一句话东西 2010-09-10 11:22:58|  分类: linux shell |  标签:shell  linux  |举报|字号 订阅     time -p [程序] 可 ...