三届蓝桥杯(2019-2021)——心得小计

举报
红目香薰 发表于 2022/03/24 16:32:39 2022/03/24
【摘要】 ​我主要带的是javaC组的比赛,相对难度还是小一些的,这几年也多少有点心得,接下来给大家分享一下。​目录话说,算法是什么?秘诀一:【海选基数】秘诀二、基础控制秘诀三、刷题量历届数据展示:话说,算法是什么?​也就这么多呗,要是都会了,你真的是顶尖的厉害。秘诀一:【海选基数】其实比赛实际上是比学生,选人是非常重要的,选好人,就已经成功一半了。​秘诀二、基础控制java基础其实就那么点,没多少,...

我主要带的是javaC组的比赛,相对难度还是小一些的,这几年也多少有点心得,接下来给大家分享一下。

目录

话说,算法是什么?

秘诀一:【海选基数】

秘诀二、基础控制

秘诀三、刷题量

历届数据展示:


话说,算法是什么?

也就这么多呗,要是都会了,你真的是顶尖的厉害。

秘诀一:【海选基数】

其实比赛实际上是比学生,选人是非常重要的,选好人,就已经成功一半了。

秘诀二、基础控制

java基础其实就那么点,没多少,能讲到递归也就结束了。第一年我就讲到递归,后面就陪着学生们刷题,在刷题的过程中他们会将递归的各种用法进行完善,什么dfs、bfs、dp啥的,都是应用方法而已。几百个题下来,都熟能生巧了。一定要相信你选出来的【精英】们,他们刷一阵题后就比你强多了。

星辰大海,这个题很经典,这个题搞定了,坐标也就都顺了。

最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成。
  共有四种方格:
  ‘.’ 代表空地,curiosity可以穿过它
  ‘#’ 代表障碍物,不可穿越,不可停留
  ‘S’ 代表curiosity的起始位置
  ‘T’ 代表curiosity的目的地
  NASA将会发送一系列的命令给curiosity,格式如下:“LRUD”分别代表向左,向右,向上,向下走一步。由于地球和火星之间最近时也有55000000km!所以我们必须提前判断这一系列的指令会让curiosity最终处在什么样的状态,请编程完成它。

输入格式

第一行是一个整数T,代表有几个测试样例
  每个测试样例第一行是一个整数N(1<=N<=50))代表迷宫的大小(N*N)。随后的N行每行由N个字符串组成,代表迷宫。接下来的一行是一个整数Q,代表有多少次询问,接下来的Q行每行是一个仅由“LRUD”四个字母的组成的字符串,字符转长度小于1000.

输出格式

对于每个询问输出单独的一行:
  “I get there!”:执行给出的命令后curiosity最终到达了终点。
  “I have no idea!”:执行给出的命令后curiosity未能到达终点。
  “I am dizzy!”:curiosity在执行命令的过程中撞到了障碍物。
  “I am out!”:代表curiosity在执行命令的过程中走出了迷宫的边界。
Sample Input

2
2
S.
#T
2
RD
DR
3
S.#
.#.
.T#
3
RL
DDD
DDRR

Sample Output

I get there!
I am dizzy!
I have no idea!
I am out!
I get there!

下面是源码,我把输出稍微改了一下。

package action;
import java.util.Scanner;
 
public class demo {
	static Scanner sc = new Scanner(System.in);
 
	public static void main(String[] args) {
		String[] arr = new String[999];
		int scount = 0;
 
		int a = sc.nextInt();
		for (int i = 0; i < a; i++) {
			int b = sc.nextInt();
			char[][] bb = new char[b][b];
			for (int j = 0; j < b; j++) {
				bb[j] = sc.next().toCharArray();
 
			}
 
			int c = sc.nextInt();
			String[] cc = new String[c];
			for (int j = 0; j < cc.length; j++) {
				cc[j] = sc.next();
			}
			char[][] ccc = new char[c][1000];
 
			for (int j = 0; j < c; j++) {
				for (int j2 = 0; j2 < cc[j].length(); j2++) {
					ccc[j][j2] = cc[j].charAt(j2);
				}
			}
 
			for (int j = 0; j < c; j++) {
				int h = 0;
				int s = 0;
				zb: for (int j2 = 0; j2 < 1000; j2++) {
					zc: for (int k = 0; k < b; k++) {
						for (int k2 = 0; k2 < b; k2++) {
							if (j2 == 0 && bb[k][k2] == 'S') {
								h = k2;
								s = k;
								break zc;
							}
						}
					}
					if (ccc[j][j2] >= 'A' & ccc[j][j2] <= 'Z') {
						if (ccc[j][j2] == 'L') {
							h--;
							if (s < 0 | s == b | h < 0 | h == b) {
								arr[scount++] = "走出了迷宫的边界!";
								break zb;
							} else if (bb[s][h] == '#') {
								arr[scount++] = "执行命令的过程中撞到了障碍物导致眩晕!";
								break zb;
							} else if (bb[s][h] == 'T') {
								arr[scount++] = "抵达终点!";
								break zb;
							}
						} else if (ccc[j][j2] == 'R') {
							h++;
							if (s < 0 | s == b | h < 0 | h == b) {
								arr[scount++] = "走出了迷宫的边界!";
								break zb;
							} else if (bb[s][h] == '#') {
								arr[scount++] = "执行命令的过程中撞到了障碍物导致眩晕!";
								break zb;
							} else if (bb[s][h] == 'T') {
								arr[scount++] = "抵达终点!";
								break zb;
							}
						} else if (ccc[j][j2] == 'U') {
							s--;
							if (s < 0 | s == b | h < 0 | h == b) {
								arr[scount++] = "走出了迷宫的边界!";
								break zb;
							} else if (bb[s][h] == '#') {
								arr[scount++] = "执行命令的过程中撞到了障碍物导致眩晕!";
								break zb;
							} else if (bb[s][h] == 'T') {
								arr[scount++] = "抵达终点!";
								break zb;
							}
						} else if (ccc[j][j2] == 'D') {
							s++;
							if (s < 0 | s == b | h < 0 | h == b) {
								arr[scount++] = "走出了迷宫的边界!";
								break zb;
							} else if (bb[s][h] == '#') {
								arr[scount++] = "执行命令的过程中撞到了障碍物导致眩晕!";
								break zb;
							} else if (bb[s][h] == 'T') {
								arr[scount++] = "抵达终点!";
								break zb;
							}
						}
 
					} else {
						arr[scount++] = "老师付也不知道路了啊,游戏结束!";
						break zb;
					}
 
				}
			}
		}
		for (int i = 0; i < scount; i++) {
			System.out.println(arr[i]);
		}
	}
 
}

秘诀三、刷题量

这个是当年的手稿,实际上能搞20多个题吧,毕竟很多题不是一下就能搞出来的。

这样算下来20天就能将近400个题目的训练量,读过的题目至少800多个。读题解题能力都训练个差不多,最后再刷一下历届的题目,准备比赛就可以了,基本上成绩都会较为理想。

历届数据展示:

第十届:

第十一届: 

第十二届: 

 

今年第十三届了,今年的目标也很简单,两个省份,省赛的话包揽省一10名左右,国赛保证俩国一。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。