上周的CCF/CSP认证成绩出来了,第四题用粗暴的Dijkstra的思想强行遍历,本来估计能拿个60分,结果爆0分,耿耿于怀。
我考试用的是C++。
#include<iostream> using namespace std; int main() { int dis[8000][8000]; //代码 }
没记错的话,当时是因为像上面代码一样在main函数里面开了个8000*8000的数组(这道题用Vector来模拟链表确实是很省空间的做法,但既然用了O(n^2)的算法,就不指望能过60分以后的数据了,还有,这篇文章的重心不在怎么解题,所以我就不放题目了),结果DEV-CPP编译每次都报溢出,我就想着估计是DEV-CPP的问题吧,毕竟我平时用的都是CodeBlocks。当时还仔细算了下:
8000*8000*4/1024/1024≈244 MB.
8192*8192*4/1024/1024≈256 MB.
题目给了256MB的内存,能开8192*8192的数组,只开8000*8000怎么样都不应该爆空间吧。于是开着100*100的小数组,将各种可能的样例测试通过后,我就提交了代码,提交前刻意把100*100的改回8000*8000,想尽可能地蹭分。
结果——这道题0分了。
我不服,于是我用CodeBlocks将代码重新敲了一遍……呐,结果如下,看来不是代码编辑器配置的问题了。