CSDN同步

原题链接

简要题意:

现在河面上有 \(n+2\) 块石头,编号 \(0\) 到 \(n+1\),\(1\)~\(n\) 块石头每块上有一个方向,如果是 \(L\),那么青蛙到这块石头上之后只能往左跳,如果是 \(R\) 只能往右,当然,第 \(0\) 块石头的方向是 \(R\).

现在青蛙要从 \(0\) 跳到 \(n+1\),请问他应该怎么跳才能让他跳跃过程中跳跃距离最长的最小呢?输出这个距离。

显然,我们考虑贪心。

C题一点也不难啊

你想,如果你既可以跳到 \(L\) 点,又可以跳到 \(R\) 点,那么你会选哪个呢?

当然是 \(R\) 点啦!

如何说明呢?(严谨点)

如果 \(L\) 在 \(R\) 的左边,那跳到 \(L\) 之后,只能一直往左,直到跳到一个 \(R\) 为止(总不能跳回去)。那么,你在跳这若干个 \(L\) 的第一个 \(L\) 的时候,既然能跳到 \(L\),那你直接选那个 \(R\) 不就行了,还浪费这么多步。

如果 \(L\) 在 \(R\) 的右边,那跳到 \(L\) 之后,你只能回到这个 \(R\) 点;否则你只能一直往后跳,直到另一个 \(R\);那么你跳过来的路径又被你从跳回去了,还得再跳回来,那有什么意思,还浪费这么多步。

所以,上述已经说明,我们不跳 \(L\),只跳 \(R\) 是最优的。(最少步数)

那么,最小的最长跳跃距离是多少呢?不就是相邻两个 \(R\) 的最大距离吗?

分析了这么多,终于找到了题目的本质,直接可以解决问题了!

时间复杂度: \(O(T \times n)\).

因为总长度不超过 \(10^5\),所以是 \(O(10^5)\).

空间复杂度: \(O(n)\).

实际得分:\(100pts\).

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std; const int N=2e5+1; inline int read(){char ch=getchar();int f=1;while(ch<'0' || ch>'9') {if(ch=='-') f=-f; ch=getchar();}
int x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;} int T,n;
char s[N]; int main(){
T=read(); while(T--) {
scanf("%s",s);
n=strlen(s);
int k=-1,maxi=0; //k是上一个 R 的位置。因为 s 数组从 0 开始,所以这里从 -1 开始
for(int i=0;i<n;i++)
if(s[i]=='R') {
maxi=max(i-k,maxi); //与上一个 R 的位置的距离
k=i; //更新 R 的位置
}
printf("%d\n",max(maxi,n-k)); //最后一个 R 到终点的距离也算一个答案
}
return 0;
}

CF1324C Frog Jumps 题解的更多相关文章

  1. CF1407D Discrete Centrifugal Jumps 题解

    蒟蒻语 写了 \(100\) 行的 线段树上ST表维护二分维护单调栈维护dp, 结果最后发现只要俩单调栈就好了 = = 蒟蒻解 首先 \(dp_i\) 表示从 \(1\) 楼到 \(i\) 楼要跳几次 ...

  2. Codeforces Round #627 (Div. 3) C - Frog Jumps(逻辑)

    题意: 有一个每个单元标明移动方向的长为n的序列,每次移动不能超过距离k,问能够从0移动到n+1的k的最小值. 思路: k=最长连续L序列长度+1. #include <bits/stdc++. ...

  3. CF1077A Frog Jumping 题解

    Content 在一个数轴上有一个动点,初始时在 \(0\) 这个位置上,接下来有若干次操作,对于第 \(i\) 次操作: 如果 \(i\) 是奇数,那么动点往右移 \(a\) 个单位. 如果 \(i ...

  4. Codeforces Round #342 (Div 2) 解题报告

    除夕夜之有生之年CF第一场 下午从奶奶家回到姥姥家,一看还有些时间,先吃点水果陪姥姥姥爷聊了会儿,再一看表,5:20....woc已经开场20分钟了...于是抓紧时间乱搞.. **A. Guest F ...

  5. Groovy脚本基础全攻略

    1 背景 Groovy脚本基于Java且拓展了Java,所以从某种程度来说掌握Java是学习Groovy的前提,故本文适用于不熟悉Groovy却想快速得到Groovy核心基础干货的Java开发者(注意 ...

  6. Codeforces Round #627 (Div. 3)

    1324A - Yet Another Tetris Problem(思维) 题意 给一个数组,每一个数组中的元素大小表示在竖直方向的方块数量,元素相邻怎竖直方向的方块也相邻,类似于俄罗斯方块当底层被 ...

  7. Groovy系列(5)- Groovy IO操作

    IO操作 Groovy为I/O操作提供了许多帮助方法,虽然你可以在Groovy中用标准Java代码来实现I/O操作,不过Groovy提供了大量的方便的方式来操作File.Stream.Reader等等 ...

  8. 2017-2018 ACM-ICPC Latin American Regional Programming Contest J - Jumping frog 题解(gcd)

    题目链接 题目大意 一只青蛙在长度为N的字符串上跳跃,"R"可以跳上去,"P"不可以跳上去. 字符串是环形的,N-1和0相连. 青蛙的跳跃距离K的取值范围是[1 ...

  9. CF53C Little Frog 题解

    Content 有一只小青蛙想游历 \(n\) 块土堆,它现在在 \(1\) 号土堆上,每次可以跳跃任意距离到达另外的一个土堆.它想让每次跳跃的距离都不相等,试找到这样的一个方案. 数据范围:\(1\ ...

随机推荐

  1. CentOS使用epel安装不同版本php-fpm

    针对CentOS使用epel安装 yum -y install epel-release安装好后可以通过如下命令查看yum info epel-releaseyum repolist查看php版本ph ...

  2. HTC“卖身”:那些辉煌、落寞与终结

    9月21日,HTC董事会决议通过与谷歌签订合作协议书.前者专注Pixel手机设计研发人才加入谷歌,HTC知识产权非专属授权予Google使用,交易作价11亿美元.事实上,这与微软收购诺基亚不同,并非是 ...

  3. Ftp Centos · GitBook

    これよくない pyftpdlibをつかおう sudo easy_install pyftpdlib nohup python -m pyftpdlib > pyftpdlib.log 2> ...

  4. 【原创】从零开始搭建Electron+Vue+Webpack项目框架(六)Electron打包,同时构建客户端和web端

    导航: (一)Electron跑起来(二)从零搭建Vue全家桶+webpack项目框架(三)Electron+Vue+Webpack,联合调试整个项目(四)Electron配置润色(五)预加载及自动更 ...

  5. PyMuPDF库(处理PDF)

    昨天在公司需要把一份PDF格式认证表转换为图片JPEG格式,所以在网上查询了一些与此相关的python库,最后看网上大多都是使用Wand和PyMuPDF,在安装了Wand库后,导入相应的模块后报错了, ...

  6. 《前端面试加分项目》系列 企业级Vue瀑布流

    本文 GitHub github.com/ponkans/F2E 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习.文末有福利~~ 前言 接水怪又来 ...

  7. python 临时文件

    1. TemporaryFile 临时文件 TemporaryFile 不在硬盘上的生成真正文件,而是写在内存中 from tempfile import TemporaryFile # , Name ...

  8. 用 Python 生成 HTML 表格

    在 邮件报表 之类的开发任务中,需要生成 HTML 表格. 使用 Python 生成 HTML 表格基本没啥难度, for 循环遍历一遍数据并输出标签即可. 如果需要实现合并单元格,或者按需调整表格样 ...

  9. mysql 存储过程 执行存储过程修改了表中所有行的信息

    存储过程中的where条件语句,如果传入的参数和表字段名相同,存储过程就会把这个约束条件忽略.小结:存储过程中传递的参数名不要和字段名相同.特别是修改.删除等操作,可能会对整张表产生影响.后果会很严重 ...

  10. spring boot 过滤器 前后端分离跨域sessionId不一致

      import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http ...