近段考试分析

1、前言

说是说题解+总结,但是其实这就是依次对最近考试的一个自我总结,并没有什么题解,因为最近的考试都没有提供官方题解,所以我也不能自以为是地去进行分析。最近的考试。。。很令人无语。现在来总结一下考试的各种抽风吧。

 

2、数组开小

这个感觉以前没怎么出现过?可最近已经出现过几次了。。。但是不是那种写明了n<=10^5然后我定义MAXN=10^4+5,而是一些隐性因素或者是根本没那么去考虑的情况,比如说前几天的一道主席树+树状数组,随手开了个2.5*10^4,结果就WA了30分,实际上达到了10^5。这个的解决办法其实还好,因为现在随着科技的进步,题目在一般情况下(起码是在正式比赛中),都会尽可能地扩大空间限制,由以前的32MB,到64MB,到现在的128MB。128MB=128*(2^10)*(2^10) Bytes,如果单开一个int类型的二维数组a[MAXN][MAXN]的话,MAXN约等于5000为上限。在无法明确数组所需范围的情况下,我觉得只要在128MB的范围内,能开多大就开多大吧。

 

3、运算符优先级

说实话一个暑假我的代码还是精简了很多。。。突然对问号式什么的感兴趣。。但是有时候总是忘记打!括!号!因为我不是很清楚不同运算符之间的优先级是什么,在这个不明确的情况下,还是多打打括号吧,前几天有道动态规划的题目,完全可以AC的,结果在秀代码简短的时候忘记打括号了,然而小数据没有一个是有冲突的(我也不知道为什么)。呵呵真是没话讲。

 

4、编译错误

看上去还想有点离谱哦。。。。其实这就是编译器版本之间的区别问题被我碰上了,当然一方面是我自己作死了。因为有个小小的地方要用到幂运算,但是数据不大,于是偷懒直接用了<cmath>库中的pow函数。其实我心里是很清楚这个是在double类型的基础上的。。。但是我在最前面加了个强转int后发现直接编译通过了,于是就随他去了,反正int转double并不会出现答案错误的问题,是是是确实在我的机器上没有出现这个问题。。。但是因为评测机和考试的机器的G++编译器版本不同,评测机的版本对pow函数的类型要求很高,会直接报错。然后嘛。所以啊,人不要作死。当然遇到pipe那样的问题,那真的无力回天了。还是Ubuntu好。

 

5、数据问题

这个确实不管我的事,但是还是想拿出来说一说。因为最近的题目但是栗师胡伟栋时代的题目,十几年了,因为时差问题以及各种其他的因素吧,很多题目都出现过,有的是直接不符合题意,有的是因为C++和Pascal之间的精度问题(C++必须使用long double才行,而Pascal貌似直接real就行了,莫非C++精度不如Pascal?)。这也坑了我好多次了,因为某次两道题的数据问题,我直接快垫底了。

 

6、总结

综上所述啊,能避免的问题,就一定要尽可能去避免,真的被搞死了。

posted @ 2015-10-05 22:58  jinkun113  阅读(168)  评论(0编辑  收藏  举报