CodeForces - 910A The Way to Home

这就是我那个心心念的青蛙跳了…这是我大一第一次训练赛的最后一个题。那之后隔了两个月才a出来。也有点感情了…毕竟当时样例各种错…而且也是从这道题让我知道cf可以看错误样例。也能看别人代码…
下图,说多了都是累
在这里插入图片描述
在这里插入图片描述
题目其实并不难,可是对于那时候不知道为什么感觉就是写不出来。

做加热器,了解到一个index索引并维护的方法:https://blog.csdn.net/weixin_44031744/article/details/88861954

对于这个题又让我跃跃欲试了。
怎么说,时隔3个月。思路比以前清晰了好多,以至于现在看以前a出来代码都怀疑那是我以前写的?这写的什么啊,一会++,一会- -。这样也能对!!!???
然后莫名的佩服了一下曾经…

这个题挺不错的,对于初涉刷题的我,输入是一个坑,而且这个坑遇到了两次。
今年打蓝桥杯的时候也遇到了,虽然在赛场时发现了错误。但确实耽误了老长时间,
如今重新做,还是遇见了这个坑…

这个坑就是这个输入。它这一串axis是01串。因为没有空格,所以如果用整型保存的话输入那么长的一串就是一个数,所以这个要用字符保存。
今年蓝桥杯的迷宫也是这样的…输入怎么也不出结果。记住这个教训了!!!

这个贪心策略其实还是很简单的,从出发点最远的地方跳,如果是0就回退,直到回退到1,如果又回退到了出发点,说明forg跳不过去。输出-1,return就行了。

之后又是些小bug,调试之后就a出来了。

虽说我重新做了一遍,但实不相瞒花了快一个小时做出来的…

只要思路清晰,哪里该break的break,哪里return的return,问题不大。
在这里插入图片描述

#include <iostream>

using namespace std;

char axi[120];

int main(){

    int n, d;
    cin >> n >> d >> axi+1;

    int cnt = 0, cur = 1;
    while(true){
    
        int index = 0;
        if(cur+d >= n){
            cnt++; cout << cnt << endl; return 0;
        }
        for(int i = cur+d; i >= cur; --i)
            if(axi[i]-'0'){
                index = i;
                if(i == cur) index = 0;
                break;
            }
        if(index == 0){
            cout << -1 << endl; return 0;
        }
        cnt++;
        cur = index;
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值