Lawnmower(洛谷 CF115B)
题目大意
简单来讲就是从(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)的更多相关文章
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
- 洛谷 P1379 八数码难题 Label:判重&&bfs
特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...
随机推荐
- (SSO)单点登录原理和总结
一:什么是单点登录(single Sign-On) SSO 是一种统一认证和授权机制,指访问统一服务器不用应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后, 再访问其他应用中 ...
- 三、Linux 系统目录结构
Linux 系统目录结构 登录系统后,在当前命令窗口下输入命令: ls / 你会看到如下图所示: 树状目录结构: 以下是对这些目录的解释: /bin:bin是Binary的缩写, 这个目录存放着最 ...
- nginx下根据指定路由重定向
前言: 最近在搭建vue后台,后端接口是PHP写的,线上构建好之后,需要请求其他域名下的接口,开发环境已经使用proxytable解决了接口问题,为了开发和生成的代码一致, 编译后的代码,放在ngin ...
- 与SVN相关的程序的调试问题【转】
解决eclipse中出现Resource is out of sync with the file system问题. 分析:有时候因为时间紧迫的原因,所以就没去管它,今天再次遇到它,实在看着不爽,所 ...
- tcl之内容
- JZOJ 2136. 【GDKOI2004】汉诺塔
2136. [GDKOI2004]汉诺塔 (Standard IO) Time Limits: 3000 ms Memory Limits: 128000 KB Detailed Limits ...
- 图学java基础篇之集合
(本文部分图片引用自其他博客,最后有链接,侵删.由于笔记使用markdown记录,格式可能不是太好看,见谅) 集合结构 红字为java.util包下的,绿字为concurrent包下扩展的与并发相关的 ...
- 51、如何提取android代码中的字符串为系统资源文件 (I18N)
工具:android studio 步骤1:找到要转为资源文件的字符串并选中,同时按下option+enter,弹出菜单,我们选中extract string resource 步骤2:在弹窗中输入你 ...
- 【Scramble String】cpp
题目: Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty subs ...
- [oldboy-django][2深入django]学生管理(Form)--查看(分页)
1 需求: 查看所有学生的信息,(分页功能) 2 前端:bootstrap美化前端 <!DOCTYPE html> <html lang="en"> < ...