前言:
今天来分享下学到的蓝桥杯的一些答题技巧,方法叫做:手算法,看到这里很多人会以为什么是手算法,是不是掰指头拿手算有手就行?,非也,今天介绍的方法是结合蓝桥杯的竞赛环境中特有的工具来辅助我们,再通过简单用手操作,即可得到结果。话不多说,先看一题。
题目2:
X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10 \times 1010×10 相互连通的小房间组成的。
房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:
- LL 表示走到左边的房间,
- RR 表示走到右边的房间,
- UU 表示走到上坡方向的房间,
- DD 表示走到下坡方向的房间。
X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把 100100 名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。
迷宫地图如下:
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR请你计算一下,最后,有多少玩家会走出迷宫,而不是在里边兜圈子
提示:
如果你还没明白游戏规则,可以参看下面一个简化的 4x4 迷宫的解说图:
解析:
这道题是典型的 DFS,编码至少 10 分钟。不过因为是个填空题,而且迷宫很简单,只有 100 个字符,可以直接数,从左往右数,从上往下数,约 2 分钟就能数完。数出来的结果见下面,红色字符上的人能走出来。
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
题目2:
小蓝要为一条街的住户制作门牌号。
这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。
小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。
请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?
解题思路:
这确实是个送分题,编码也很简单:判断每个数字中有几个 2,然后把所有数字中 2 的个数加起来。编码大概 5 分钟。
但是有更简单的做法:先编码打印出 1~2020 这 2020 个数字。
#include<bits/stdc++.h>
using namespace std;
int main(){
int k=0;
for(int i=1;i<=2020;i++)
cout<<i;
}
然后,将输出结果粘贴到编辑器中(比赛时可以选择:Word、Codeblocks 都行)中,选搜索功能,搜索字符「2」,共搜索出结果 624 次,这就是答案
小结:
这种不用编码的填空题称为手算题。
竞赛的时间极为紧张,应选用最快的实现方式。能节省几分钟就节省几分钟,更重要的是,如果能投机取巧尽快搞出答案,会让人感觉特别爽!然后带着愉快的心情开始做后面的难题。
每次比赛都有「送分题」,只需要几分钟就能做出来。特别是部分填空题,只需要填答案,不用提交代码,那么可以用包括编码在内的多种方法。
今天的手算法先讲到这里,后续会补充,如有错误,还请大家指正。