0.前言
大三上学期给我的感觉就是一个字——快,匆匆结束了大二下学期的考试,在考试的同时穿插专业实习,然后就是一直封闭管理,到了学期末,学校硬是压缩了两周时间,让我们没有了往年的复习周。再加上自己的一些杂事,大三上的时间代码写的太少了,蓝桥杯本来早就打算准备的,一直拖到了现在。好在不晚,两个月的时间混个省奖应该是够了。之前一直用的是Java,所以打算用Java参赛,C/C++留给ACM大佬去卷吧,Python组的话比较新,且不区分AB组,还是很吸引人的,但毕竟之后我要靠Java吃饭,多写写Java代码又没有坏处。之后会把一些题目的解题过程和思路分享于此,与君共勉。
1.前期准备
为了真实模拟比赛时候的环境,我从蓝桥杯官网下载了环境,JDK1.8,Eclipse2020,建议好好熟悉一下eclipse,像我好久都没有用过eclipse了,别到时候在考场整不明白软件了。另外考场还会提供JDK1.8的中文文档
链接:https://pan.baidu.com/s/14auA3bxlsQpiDEI1vwoHQg
提取码:1111
2.几个注意事项
- 输入输出内容
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
//代码
//不换行输出
System.out.print();
//换行输出
System.out.println();
//格式化输出,具体格式可自行百度,非常有用,而且通用
System.out.printf();
sc.close();
- 动态数组
有时候需要一个支持增删改的数组(默认的数组为静态的),可采用ArrayList类,这个列表类本质上就是数据结构中的顺序表。 - 小数问题
学过计算机组成原理的都知道,小数在计算机中的表示是不精确的,因为底层都是二进制表示,十进制下的小数在二进制下不一定还是在特定位数下能表示完全的。举个容易理解的例子,在十进制下 1 3 \frac{1}{3} 31转化为小数就是 0.33333...... 0.33333...... 0.33333......,但是在三进制下,就可以轻易的表达成 0.1 0.1 0.1。所以在某些情况下是不能使用小数的,可以考虑把小数成倍数之后转化为整数,也可以用BigDecimal
精确表示,甚至某些情况下还可以用字符串表示,然后自己模拟小数运算。 - 空间换时间
有时候运行速度太慢了,第一时间考虑空间换时间,比如把中间值存储下来,可以考虑数组或者HashMap
- format问题
一定要巧用format,比如String.format()
和System.out.printf();
,格式化的写法都一样,会了之后可以省很多事,而且根据我的经验,这种写法很通用,不光Java,Python,JavaScript都是支持的。、
总结
好好刷题,蓝桥杯至少拿个省奖,后续再考虑PAT和LeetCode。