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的机器人-二分答案的更多相关文章

  1. 【HDU 5030】Rabbit's String (二分+后缀数组)

    Rabbit's String Problem Description Long long ago, there lived a lot of rabbits in the forest. One d ...

  2. 【BZOJ3993】星际战争(网络流,二分答案)

    [BZOJ3993]星际战争(网络流,二分答案) 题面 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团 ...

  3. 【二分答案】Google Code Jam Round 1A 2018

    题意:有R个机器人,去买B件商品,有C个收银员,每个收银员有能处理的商品数量上限mi,处理单件商品所需的时间si,以及最后的装袋时间pi. 每个收银员最多只能对应一个机器人,每个机器人也最多只能对应一 ...

  4. 洛谷P3975 跳房子 [DP,单调队列优化,二分答案]

    题目传送门 跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一 ...

  5. 二分答案:Poweroj2461-入门基础之二分答案(二分法的应用)

    传送门:点击打开链接 入门基础之二分答案 Time Limit: 1000 MS Memory Limit: 65536 KBTotal Submit: 179 Accepted: 33 Page V ...

  6. CH Round #72树洞[二分答案 DFS&&BFS]

    树洞 CH Round #72 - NOIP夏季划水赛 描述 在一片栖息地上有N棵树,每棵树下住着一只兔子,有M条路径连接这些树.更特殊地是,只有一棵树有3条或更多的路径与它相连,其它的树只有1条或2 ...

  7. [CF752E]Santa Claus and Tangerines(二分答案,dp)

    题目链接:http://codeforces.com/contest/752/problem/E 题意:给n个橘子,每个橘子a(i)片,要分给k个人,问每个人最多分多少片.每个橘子每次对半分,偶数的话 ...

  8. [NOIP2011] 聪明的质检员(二分答案)

    题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...

  9. 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 ...

随机推荐

  1. windows与mac下安装nginx

    window下 下载链接,自己选一个版本下载 nginx官网下载 本人放在D盘: 启动nginx 有很多种方法启动nginx (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过 (2)打开 ...

  2. 页面初始化的js函数要放在最最最最最最最前边!否则没效果

    简单说一下这个情况,html的页面的各部分都是动态渲染的,所以头部的某些个样式调用函数需要在页面初始化的时候被加载,这个我也是知道的,结果后边代码敲着敲着,就把这个事儿给忘了,然后启动项目的时候,页面 ...

  3. jquery----jquery中的属性的利用

    1.javascript addClass 利用document.getElementById("XX")找到document对象.然后再通过addClass("xxx& ...

  4. str类型

    str:字符串类型,用单引号或双引号. #索引 s1 = s[0] 切片 : 顾头不顾尾 : s[首:尾:步长] 字符串的操作: 1.首字母大写: s = 'alexWUsir' s1 = s.cap ...

  5. pycharm提示This inspection detects any methods which may safely be made static.

    示例代码: class Car(object): # 未定义任何类属性 def move(self): # 方法会出现下划线提示This inspection detects any methods ...

  6. Selenium+PhantomJS使用时报错原因及解决方案

    问题 今天在使用selenium+PhantomJS动态抓取网页时,出现如下报错信息: UserWarning: Selenium support for PhantomJS has been dep ...

  7. OpenCV-Python入门教程2-打开摄像头

    一.打开摄像头 import cv2 # 打开摄像头并灰度化显示 capture = cv2.VideoCapture(0) while(True): # 获取一帧 ret, frame = capt ...

  8. 阻止Java反编译蛋疼方法

    public class landv { private static String companyName="landv测试"; public static void main( ...

  9. MyBatis - 6.Spring整合MyBatis

    1.查看不同MyBatis版本整合Spring时使用的适配包: http://www.mybatis.org/spring/ 2.下载整合适配包 https://github.com/mybatis/ ...

  10. KnocoutJs+Mvc+BootStrap 学习笔记(Mvc)

    Mvc   1.Html 增加扩展方法 using System.Web.Mvc; namespace KnockoutBootstrapMvc.Entensions { public static ...