第一个题很简单的枚举,但我第一次运行结果什么都不输出,原因出在了浮点数的相等比较上,不能直接比较两个浮点数是否相等,之前做历届试题时也遇到过这个问题。于是我两边等式都乘以10化为整数比较,就输出结果了。代入题目检验,结果正确,提交。结果填空题大部分用的穷举,没有很大的难度。一开始我还觉得这次进决赛有希望了,但是后来发生的彻底让我失望。代码填空题一开始跳过去了,后来做完结果填空再回来做,第一个没看懂,试着填写代码,多试了几个测试样例,运行,结果正确,就提交了。第二个是递归填空题,照着填空处的下一行代码写了一条递归语句,测试运行,结果正确,也提交了。第二个真没少花时间,期间记得我脸上发烫。把前面的结果填空,代码填空做完大约只剩下一个半小时了,还剩下三个编程大题,心情又一下子紧张了起来。快速看题目,首先做的是一个DFs题目,觉得代码写得没有问题啊,逻辑上也没错,但就是测试不通过,气死我了。没时间了,开始做第三个题目,第一感觉是冒泡排序,花了一段时间把思路想好了,而且我相信自己的思路是对的,但就是因为冒泡排序写不出来,加上时间紧迫和心情急躁,改了N遍仍然不对,又是以测试用例通不过结束。最后看第一题,题目蚂蚁问题以前见过,但这个和我见过的那个根本不是一个意思,想了想,无解。当时真是急得要死,按着脑海中的第一思路快速写了代码,OMG!测试用例又是没通过!这时候离比赛结束还有十分钟吧,大脑基本上已经是一片空白了,脸上发热,又看了第二个和第三个题,无解,无解,无解,还是无解。无奈地把三道题的“伪代码”给提交了。结束后,彻底懵了!本来想着通过预赛可以去北京参加决赛,已经想了无数遍,但现在现实就摆在眼前,不得不说现实狠狠地打了自己一拳!考完后闷闷不乐,同学们和老师在讨论题目,我只能在一旁木讷地听着。
赛后总结:时间没有掌握好,要是我能留出两个小时来做3道编程大题就好了,也不会搞得心情那么紧张。还有,我的基础真是烂透了,连大一就学过的冒泡排序也写不出来,何况赛前前几天我还写过一次,当时是在轻松无压力得情况下侥幸一次就写对了,就天真地认为自己掌握了,其实自己真正会了吗?还有,是自己的心理问题,总觉得自己缺少自信,觉得自己能力不行,在做什么之前总先想如果不成功会怎么样,有时候甚至会觉得自己在团队赛的时候会拖队友的后腿。另一方面,在紧张和急躁的情况下,我的大脑基本上就跟停止运转了似的,在平常情况下稍微想想就能想出来的解题点在这种情况下死也想不起来,如果这时候给我来个智力题,我觉得自己会一头栽在那儿。没办法,比赛结束就是结束了,已经无法挽回,这场比赛让我认识到了自己是多么“糟糕”,上面列出的问题我以后会一一地去改正,去弥补,去锻炼。
最后,无论怎样,还是那简单的两个字,加油。
最后附上今天写的最后一个大题的代码,离成功只有一步之遥,如果我把冒泡写对了,这题19分就可以拿到手,也基本上可以进决赛了。但是。。。
#include <iostream> #include <string.h> using namespace std; int a[50]; int c[50]; int cifang(int n) { int sum=1; for(int i=1;i<=n;i++) sum*=2; return sum-1; } int main() { memset(c,0,sizeof(c)); int n;cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) { if(a[j]>a[i]) { int temp=a[j]; a[j]=a[i]; a[i]=temp; c[j]++; c[i]++; } } for(int i=1;i<=n;i++) cout<<a[i]<<endl; int count=0; for(int i=1;i<=n;i++) count+=cifang(c[i]); cout<<count<<endl; return 0; }