Rabbit的机器人-二分答案
思路 : 可以 推知 挡板的位置与最后 一步的方向有关 。如果是 R 根据题目要求那么最终结果一定是在>0的位置,
因为按照题意要求的最终不能回到重复走过的位置。所以如果有解的话挡板只能放在 < 0 的位置,分析一下就是 放在 >0的位置有
两种情况 1 .在最终结果前面 ,这显然不可以 会直接导致走不过去,2.放在最终结果后面, 这似乎是个无用操作,,
所以 只能是 在<0的位置,而且有一个性质,那放在 <0的情况来说 就是 如果 x位置是正确的那么 x +1 的位置也正确,当然 ( x + 1 ) < 0.
感性理解一下 , 放挡板是为了 让最终能够到达一个新的地方 , 挡板的作用就是 阻止一些向与最终方向相反的行动。分析完这些之后
发现可以二分答案 找一个最左的 放挡板的位置 即可。
#include<bits/stdc++.h>
using namespace std;
#define maxn 1234567
char str[maxn];
int n,l,r,ans;
bool ok(int x)
{
int now=0,ml=0,mr=0;
for(int i=0; i<n; i++)
{
if(str[i]=='R')
{
now++;
if(now==x)now--;
}
else
{
now--;
if(now==x)now++;
}
if(i<n-1)
{
ml=min(now,ml);
mr=max(now,mr);
}
}
if(str[n-1]=='R'&&now>mr)return true;
if(str[n-1]=='L'&&now<ml)return true;
return false;
}
int main()
{
scanf("%d",&n);
scanf("%s",str);
if(str[n-1]=='R')
{
r=n;
while(l-1<r)
{
int mid=(r+l)/2;
if(ok(mid))
r=mid-1;
else l=mid+1;
}
if(l>=0)
printf("-1\n");
else if(l==-n)printf("0 1\n");
else printf("1 %d\n",-l);
}
else
{
r=n;
while(l-1<r)
{
int mid=(r+l)/2;
if(ok(mid))
l=mid+1;
else r=mid-1;
}
if(r<=0)
printf("-1\n");
else if(r==n)printf("0 1\n");
else printf("1 %d\n",r);
}
return 0;
}
Rabbit的机器人-二分答案的更多相关文章
- 【HDU 5030】Rabbit's String (二分+后缀数组)
Rabbit's String Problem Description Long long ago, there lived a lot of rabbits in the forest. One d ...
- 【BZOJ3993】星际战争(网络流,二分答案)
[BZOJ3993]星际战争(网络流,二分答案) 题面 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团 ...
- 【二分答案】Google Code Jam Round 1A 2018
题意:有R个机器人,去买B件商品,有C个收银员,每个收银员有能处理的商品数量上限mi,处理单件商品所需的时间si,以及最后的装袋时间pi. 每个收银员最多只能对应一个机器人,每个机器人也最多只能对应一 ...
- 洛谷P3975 跳房子 [DP,单调队列优化,二分答案]
题目传送门 跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一 ...
- 二分答案:Poweroj2461-入门基础之二分答案(二分法的应用)
传送门:点击打开链接 入门基础之二分答案 Time Limit: 1000 MS Memory Limit: 65536 KBTotal Submit: 179 Accepted: 33 Page V ...
- CH Round #72树洞[二分答案 DFS&&BFS]
树洞 CH Round #72 - NOIP夏季划水赛 描述 在一片栖息地上有N棵树,每棵树下住着一只兔子,有M条路径连接这些树.更特殊地是,只有一棵树有3条或更多的路径与它相连,其它的树只有1条或2 ...
- [CF752E]Santa Claus and Tangerines(二分答案,dp)
题目链接:http://codeforces.com/contest/752/problem/E 题意:给n个橘子,每个橘子a(i)片,要分给k个人,问每个人最多分多少片.每个橘子每次对半分,偶数的话 ...
- [NOIP2011] 聪明的质检员(二分答案)
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...
- Codeforces Round #377 (Div. 2) D. Exams(二分答案)
D. Exams Problem Description: Vasiliy has an exam period which will continue for n days. He has to p ...
随机推荐
- mac 端口占用问题
查看端口号 终端输入:sudo lsof -i tcp:port 将port换成被占用的端口(如:8086.9998) 将会出现占用端口的进程信息. 杀死占用端口的PID进程 找到进程的PID,使用k ...
- redis-cluster集群搭建
Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用 ( HA ),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Sha ...
- Linux下vsftpd的安装,Java上传文件实现。
首先我们需要查看是否已经安装vsftpd,输入命令 :vsftpd -v.如果出现以下信息,那么就说明已经安装vsftpd 如果没有安装,那么输入命令 : yum install vsftpd ...
- hdu1540 区间合并+询问某点的最大连续块
询问操作需要搞一下 今天被区间合并降智了 /* D a: 摧毁第a个点 Q a:询问a所在的点的块大小 R :修复最后被破坏的点 对于所有的点需要进行一次更新 更新比较容易,tag用来表示区间是否是完 ...
- bzoj 1002
表示我这种蒟蒻面对这种递推第一思想显然是打表啊 先贴个用来打表的暴力: #include <cstdio> struct node { int l,r; }p[]; ]; ]; i ...
- Hadoop ConnectTimeoutException
晚上继续学习tfidf示例.在跑TwoJob的时候报如下错误,开始以为是node02的防火墙没关好,但看了一下防火墙确实是关了的. 2019-03-30 23:48:19,705 INFO retry ...
- Redis的搭建和Redis的集群搭建
1.Redis的官网:https://redis.io/ Redis的测试网站:http://try.redis.io/ 2.参考博客:https://www.cnblogs.com/maf ...
- Elasticsearch 备忘
Elasticsearch7.0版本在查询时需要增加 “track_total_hits”:true 来强制进行准确的计数,默认为 “track_total_hits”:10000, 而且返回的hit ...
- spring的4种事务特性,5种隔离级别,7种传播行为
spring事务: 事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 事务特性(4种): 原子性 (atomicity):强调事务的不可分割. 一致性 (con ...
- 【译】异步JavaScript的演变史:从回调到Promises再到Async/Await
我最喜欢的网站之一是BerkshireHathaway.com--它简单,有效,并且自1997年推出以来一直正常运行.更值得注意的是,在过去的20年中,这个网站很有可能从未出现过错误.为什么?因为它都 ...