题目看这里

题目大意

简单来讲就是从(1,1)向左或右或下走,经过所有草坪的最短路程

思路:

由于在第一行只能向右走,那么我们就知道,在单数行和双数行分别是向右走和向左走,那么我们在单数行就只需要统计最右边的数,在双数行就只要统计最左边的数,我们储存了"上"一行的位置,那么如果是在单数行,就扫到其最右端,相反,如果是双数行,就扫到其最左端

特判情况

如果我们扫了一行后,发现其后面没有草了,这个时候我们就要停止继续向下寻找了

如何实现呢?

按照我的思路

我们用一个bool数组来储存每一行是否有草,由于这个行走是单向的只能向下走,所以特判的情况只在最后几行

我们用while(b[len]==false&&len>0) len--来计算

这样我们循环是就只要循环到len行就可以了

我们用一个ans来统计最后的步数

这道题目就讲完啦

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[][];
bool b[];
int c[];
int star=,sum=,ans;
int main()
{
cin>>n>>m;
char h;
for(int i=;i<=n+;i++)
{
b[i]=false;
a[i][]=;
a[i][]=m;
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
cin>>h;
if(h=='W') b[i]=true;
if(h=='W'&&j>a[i][])
a[i][]=j;
if(h=='W'&&j<a[i][]) a[i][]=j;
}
}
star=;
sum=;
ans=;
int len=n;
while(b[len]==false&&len>) len--;
for(int i=;i<=len-;i++)
{
++ans;
if(i%==)
{
while(star<a[i][] || star<a[i+][]) ++star,++ans;
// cout<<star<<" "<<ans<<endl;
continue;
}
while(star>a[i][] || star>a[i+][]) --star,++ans;
//cout<<star<<" "<<ans<<endl;
}
// cout<<len<<endl;
if(len==)
{
cout<<;
return ; }
if(len%==)
while (star<a[len][]) ++star,++ans;
else while(star>a[len][]) --star,++ans;
cout<<ans;
return ;
} /*
思考一下怎么特判.....
如果有单数行没有的话,并且在我现在位置的左边
我们就要在空的那一行向左走到相应位置
如果空了双数行,我就直接穿过当做不存在
我们还要记录"1"的个数,方便随时结束我们的寻找....
大概是这样子的吧...
*/

代码

Lawnmower(洛谷 CF115B)的更多相关文章

  1. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  2. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  3. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  4. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  5. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  6. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  7. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  8. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

  9. 洛谷 P1379 八数码难题 Label:判重&&bfs

    特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...

随机推荐

  1. jstl(c)标签

    一.EL表达式: Expression Language提供了在 JSP 脚本编制元素范围外(例如:脚本标签)使用运行时表达式的功能.脚本编制元素是指页面中能够用于在JSP 文件中嵌入 Java 代码 ...

  2. python 时间加8小时后的时间

    eta_temp = one['arrival'].encode('utf-8') fd = datetime.datetime.strptime(eta_temp, "%Y-%m-%dT% ...

  3. 服务端Latex解析成图片或者HTML或者SVG方案

    Latex公式表达式在服务端进行转换成可用数据 使用语言与扩展 node.js Mathjax (文档链接) MathJax在nodejs上解决方案 mathjax/MathJax-node(GitH ...

  4. php扩展开发-函数

    我们首先找到快速上手文章里面关于函数定义的代码,以此说明然后开发PHP的函数 //php_myext.h PHP_FUNCTION(myext_hello);//函数申明,所有在myext.c文件定义 ...

  5. 如何用eclipse运行导入的maven项目

    1.配置jdk系统环境变量.找到安装的jdk的安装目录,新建系统环境变量,变量名为JAVA_HOME(作为一个引用),变量值为该路径. 找到Path,将%JAVA_HOME%/bin; 添加到变量值的 ...

  6. Python编写一个程序求2的次方

    #!/usr/bin/env python3 #-*- coding:utf-8 -*- #":"冒号后面为对参数注释,"->"为对整个函数注释 def ...

  7. Cyclic Nacklace HDU - 3746 (kmp)

    Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. CF 497 div 2 B

    B. Turn the Rectangles time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  9. PowerShell批量配置VM端点

    我们可以通过PowerShell脚本批量添加VM端点.请您参考以下方案. 准备工作 – PowerShell连接China Azure 1. 从官网下载页面,下载并安装Windows Azure Po ...

  10. Android设为系统默认的短信应用

    要设为系统默认的短信应用首先要配置一下AndroidManifest.xml文件,添加下列: <!-- BroadcastReceiver that listens for incoming S ...