蓝桥杯Java-A组参赛建议

写作意图

最近有人问我蓝桥杯 Java A组 (这可怜的孩子,啥也不会还只能报A组+) 的一些注意事项,我随便写写。

emmm,众所周知有些时候(如某些智障竞赛)要求使用低版本JDK,但我们懒得换JRE,所以就可以使用JDK高版本写低版本的语法(只提交源码)。

所以啊,那些我们未曾注意过的版本演进中的语法变化就需要注意啦。

本文大概总结一下这种情况下被Ban掉的的语法和API,假设只能用到JDK1.6。

Java9+被Ban的语法

新特性相关

被Ban常用语法

  1. var语法。。。这个神奇的var,我之前就说别上瘾别上瘾,不然很麻烦的……
  2. 神奇的switch语句,都吹可以使用箭头了,你看,Ban了吧……
  3. 集合工厂方法,这个就别用了吧,不然就会CE的……

其他的你写个OJ也不至于用的着吧。。。

Java8被Ban的语法

新特性相关

Java8新特性

被Ban常用语法

  • Lambda表达式,这个千万别用,因为用着挺香的。
  • 方法引用,这个冒号估计很多人还不熟悉呢,应该还好适应。
  • Stream API,反正你别秀什么流式编程就行。

其他的你写个OJ也不至于用的着吧。。。
再就是HashMap的升级版你用不到了,不过别急,那种性能要求,你会用Map估计都够了,嗯。

适应性改变

我在洛谷写OJ的时候发现它的Java8不识别String的repeat()。虽说这不是洛谷,但我不建议你用,你可以用StringBuilder开循环append(),不过很多新手也就会+吧。。

既然被Ban了Lambda,你想使用自定义的比较器就必须自己手写Comparator了,这需要你会写基本的匿名内部类,也要熟悉这个东西。

Java7被Ban的语法

新特性相关

Java7新特性

被Ban常用语法

  • 菱形语法,这个必须要注意,类型推导没了,泛型两端都要自己手写。
  • 别搞什么0B那种二进制写法。
  • switch不让用String了,所以只能用if…else…
  • 涉及异常的话,如果你想try…catch…,不能一次捕获多个异常了,也没有自动回收资源的try语句了。
  • 数字不能使用下划线分隔了,比如3_1_2,不让用了。

适应性改变

数大数的时候自己数清楚,因为不能加下划线了,别把100W开成1000W结果爆了栈。

总体思考

常用的还被Ban的语法上面都提了,你写个算法题,语法呢,就写的低级一些就行了。

其实我们还是很乐观的不是吗?

  • 整个集合框架我们都可以随便用,那可是现成的数据结构啊。
  • 并发那些、网络通信那些、JDBC那些、反射等等,我们用不到,慌什么(假设你不太会用)?
  • 有强大的String、StrignBuilder,可以很轻松地处理串的问题。
  • 有Arrays、Collections这种好使的工具类,sort()啥的就免于去写了。
  • 只需要避免上面提到的“新版本高级语法”即可 (我就笑笑,蓝桥杯就算升到Java8语法又能怎么简化考生代码,真以为学生都会使用那些东西吗……)
  • 数组也是现成的,不需要搞什么奇奇怪怪的指针。
  • 可以写面向对象,把不好搞的东西拼在一起。
  • 还允许使用Eclipse,直接开Debug呗(好像要idea啊)。
  • 还给你个中文版JDK1.6的API文档,查查文档简直不要太水。
  • 也不卡你性能,暴力出AC呗……
  • ……
  • Java好香啊!

考试范围(A组)

这位朋友,A组的范围是这些:

计算机算法:枚举、排序、搜索、计数、贪心、动态规划、图论、数论、博弈论、概率论、计算几何、字符串算法等。
数据结构:数组、对象/结构、字符串、队列、栈、树、图、堆、平衡树/线段树复杂数据结构嵌套数据结构等。

(标黑的基本上没点基础的人就真的一点儿不会,看来你可能不会啊)

所以,你不会的算法还是不会,你不会的数据结构还是不会……
至于你说你忘了Java的语法,那……你报名干啥呢?

你看,没点ACM的底子,不行吧?

一些技巧

  • 可以打打表(NOIP传言打表出省一)。
  • 可以动动纸笔写写测试用例(因为不给你提供)。
  • 遇到问题别瞎想,像i+j-1这种问题,开一下debug,万事皆宜。
  • 别傻兮兮的排序,试试Arrays.sort()、Collections.sort()、Map、Set这种神奇的东西。
  • 提前准备几个板子,可以套着用。
  • 我觉得那个String、Math那种类的API啥的你现看是不行的,自己平时就得会。
  • BigInteger、BigDecimal,你不用别人用。
  • 暴力出奇迹,暴力出奇迹,暴力出奇迹。

特别强调

  • 不能像LeetCode那样,写个函数就交上去了,要自己写Main类,其他类要写成private static class。
  • 别去写什么package。
  • 别用顺手了就把第三方类当成JDK的部分。
  • 一定注意语法兼容性,不要用JDK1.6以上的语法。
  • 可以多次交,不慌。

美好祝愿

这位读者朋友,祝你蓝桥杯顺利!
在这里插入图片描述

发布了725 篇原创文章 · 获赞 1548 · 访问量 72万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104935835