2064. 爬山

★☆   输入文件:mountain.in   输出文件:mountain.out   简单对比
时间限制:1 s   内存限制:256 MB

【题目描述】

球有一天走在街上。

一个健身房发传单的人对球说:“来健身吗?还能减肥,挺好的!”。

球很不高兴。球一点都不觉得自己很胖,不过球还是决定去锻炼。

球最终选择了爬山。

球第一分钟位于海拔为a的地方。那之后,球每分钟可以向上爬不超过d米,也可以向下滚不超过d米,也可以原地不动(d米指的是竖直高度)。球在第n分

钟时位于海拔为b的地方。

球想知道,在不考虑山地形的情况下,他最高可以到过海拔为多少的地方。

【输入格式】

一行四个整数,分别为n,d,a,b,含义见题面描述。

【输出格式】

一行一个整数,表示答案。

【样例输入】

3  5  2  4

【样例输出】

7

【提示】

样例解释

球第一一分钟在海拔为2的位置,第二分钟向上爬5米到达海拔为7的位置,第三分钟向下滚3米到达海拔为4的位置。这样他到达过最高的地方海拔为7米。其他方案到过最高的地方都小于7米。

对于20%的数据,n=2。

对于60%的数据,2≤n≤10^6。

对于100%的数据,2≤n≤10^12,0≤d≤1000,-1000≤a,b≤1000,保证存

在一种爬山方案合法。

题解

看数据范围大概就知道是个 $O(1)$ 或者 $O(log(n))$ 好题了233

大概有两种思路:

1.首先计算起点与终点间的差值, 然后计算出补齐差值到一跳之内所需要的跳数, 然后把剩余的跳数均分, 均分后的跳数乘以一跳的最大距离再加上补齐后两个端点的高度取个最小值就可以了. 时间复杂度 $O(1)$

2.二分答案, 判断从起点走到答案所需的跳数与从答案走到终点所需的跳数, 在跳数和合法的情况下二分最大值, 时间复杂度 $O(log(n))$

参考代码

这里我写的是第一种 $O(1)$ 的思路

GitHub

 #include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm> int main(){
freopen("mountain.in","r",stdin);
freopen("mountain.out","w",stdout);
long long n,d,a,b;
scanf("%lld%lld%lld%lld",&n,&d,&a,&b);
n--;
if(d==)
printf("%lld\n",b);
else{
if(a>b)
std::swap(a,b);
long long dx=b-a;
long long cnt=dx/d;
long long tmp=(n-cnt)/;
printf("%lld\n",std::max(std::max(a,b),std::min(a+(n-tmp)*d,b+tmp*d)));
}
}

Backup

[COGS 2064]爬山的更多相关文章

  1. no zuo no die

    #include <iostream> #include <cstring> #include <cstdio> using namespace std; name ...

  2. 【COGS 254】【POI 2001】交通网络图

    http://www.cogs.top/cogs/problem/problem.php?pid=254 dist[i]表示能最早到达i点的时间.这样就可以用最短路模型来转移了. #include&l ...

  3. ural 2064. Caterpillars

    2064. Caterpillars Time limit: 3.0 secondMemory limit: 64 MB Young gardener didn’t visit his garden ...

  4. 【COGS】894. 追查坏牛奶

    http://cojs.tk/cogs/problem/problem.php?pid=894 题意:n个点m条边的加权网络,求最少边数的按编号字典序最小的最小割.(n<=32, m<=1 ...

  5. 【COGS】147. [USACO Jan08] 架设电话线(二分+spfa)

    http://cojs.tk/cogs/problem/problem.php?pid=147 学到新姿势了orz 这题求的是一条1-n的路径的最大路径最小. 当然是在k以外的. 我们可以转换一下. ...

  6. 【COGS & USACO Training】710. 命名那个数字(hash+水题+dfs)

    http://cojs.tk/cogs/problem/problem.php?pid=710 近日开始刷水... 此题我为了练一下hash...但是hash跑得比暴力还慢.. 不言而喻... #in ...

  7. 【COGS & USACO】896. 圈奶牛(凸包)

    http://cojs.tk/cogs/problem/problem.php?pid=896 我的计算几何入门题... 看了看白书的计算几何部分,,恩好嘛.. 乃们都用向量!!!! 干嘛非要将2个点 ...

  8. 【COGS】714. USACO 1.3.2混合牛奶(贪心+水题)

    http://cojs.tk/cogs/problem/problem.php?pid=714 在hzwer的刷题记录上,默默地先跳过2题T_T...求凸包和期望的..T_T那是个啥..得好好学习 看 ...

  9. POJ 2420 A Star not a Tree? 爬山算法

    B - A Star not a Tree? Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/co ...

随机推荐

  1. Java 中 String 的常用方法(一)

    上一篇介绍了 String 中的几个常用构造方法,由 String 这个核心对象发散出去关于字符的编码,字符的字节表达,对 GC 的影响,正则表达式,模式匹配,这可能是 Java 里内涵最丰富的对象了 ...

  2. 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)

    一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...

  3. vue+webpack项目中使用dev-server搭建虚拟服务器,请求json文件数据,实现前后台分离开发

    在项目开发中,前后台分离,做了假数据,项目使用vue2.0重构,后台也推到重来了,为了不耽误开发进程,我做了虚拟的数据请求,使用vue-cli脚手架搭建的项目文件中dev-server搭建虚拟api请 ...

  4. angular2自学笔记(三)---ng2选项卡

    学习了这些概念就能简单的描述一个选项功能的选项卡按钮: 数据:1.数组:实例化一个数组的类,如果想要使用这个类中的数据,需要在组件中 使用一个公共属性来暴漏这个类如 heroes=HEROES;con ...

  5. Angular: 使用 RxJS Observables 来实现简易版的无限滚动加载指令

    我使用 angular-cli 来搭建项目. ng new infinite-scroller-poc --style=scss 项目生成好后,进入 infinite-scroller-poc 目录下 ...

  6. 基于angular2+ 的 http服务封装

    1.定义http-interceptor.service.ts服务,统一处理http请求 /** * name:http服务 * describe:对http请求做统一处理 * author:Angu ...

  7. Java中HashSet的解读

    一. HashSet源代码 HashSet 的实现   对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的 ...

  8. [转]如何选择Html.RenderPartial和Html.RenderAction

    Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. Html.RenderPartial是直接将用户控件嵌入到界面上: <%Htm ...

  9. OpenGL开发入门

    1.OpenGL简介: OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设计.该API ...

  10. 认识Groovy

    什么是groovy: Groovy 是 JVM 的一个替代语言 —替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同. 在编写新应用 ...