题目看这里

题目大意

简单来讲就是从(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. pytthon + Selenium+chrome linux 部署

    1,centos7 安装 google-chrome (1) 添加chrome的repo源 vi /etc/yum.repos.d/google.repo [google] name=Google-x ...

  2. git线上线下冲突

    今天用git pull来更新代码,遇到了下面的问题: error: Your local changes to the following files would be overwritten by ...

  3. eclipse projectExplorer视图(以包的方式显示)与navigator视图切换(以文件夹的方式显示)及树状视图与平面视图的切换

    projectExplorer与navigator的切换 projectExplorer视图效果 想要此视图效果步骤如下: 分割------------------------------------ ...

  4. 【JS】JS实现时间戳转换成普通时间

    var time = 1514457627; alert(getDate(time)); function getDate(tm){ var tt=new Date(parseInt(tm) * 10 ...

  5. ZendFramework-2.4 源代码 - 关于配置

    $applicationConfig = $serviceManager->setService('ApplicationConfig'); // 获取配置 /data/www/www.doma ...

  6. java util - json转换工具 gson

    需要 gson-2.7.jar 包 package cn.java.gson; import com.google.gson.JsonElement; import com.google.gson.J ...

  7. CI框架 重定向redirect()

    CI框架不能使用$this->redirect(),只能使用redirect():并且默认重定向地址带有index.php,如果需要去掉,请使用绝对地址. 使用示例: 通过发送HTTP头,命令客 ...

  8. php中处理字符串的常见函数

    编写程序的时候,经常要处理字符串,最基本就是字符串的查找,在php检测字符串中是否包含指定字符串可以使用正则,如果你对正则不了解,那么有几个函数可以为您提供方便. 1. strstr strstr() ...

  9. javascript sprintf方法

    转载自: http://demon.tw/programming/javascript-sprintf.html function str_repeat(i, m) { for (var o = [] ...

  10. Python知识点入门笔记——特色数据类型(列表)

    Python中提供了列表这种数据类型(类型为list)来存储多个值构成的序列 用逗号将不同数据分隔开,整体放在一个方括号[]里就创建了列表 列表中的数据类型可以是相同的,也可以是不同的 列表中还可以嵌 ...