华为软挑2019总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36049506/article/details/89378207
  1. 对于所有车辆的最短路径求解,数据量小但计算量大,可以使用打表法,一次dijkstra可以得到第i个节点到其他n-1个节点的最短路径,运行n次dijkstra即可得到任意两点间最短路径。比赛中节点数n一直在200以内,而车辆数最少也要10000。
  2. 对于读入的road、cross、car的信息,尤其是car,数据量极大,定义在普通函数solution内部或类成员函数内部会引发栈空间内存不足,此时可以进行扩栈操作https://blog.csdn.net/f_zyj/article/details/51467501,或者直接设置成全局变量,分配在静态堆上。
  3. 输入输出时,注意每行的缓冲数组长度是否足够。同理,注意road、cross、car三个数组开辟的空间是否足够。
  4. 尽量避免头文件互相包含,一定要互相包含时,注意#include的顺序,避免出现重定义。
  5. 需要灵魂调参的参数尽量放在一起,可以考虑使用宏定义
  6. 对于结构体型参,使用引用或指针传参可提高效率
  7. 降低代码不同功能之间的耦合程度,每次修改判题器,可视化都要跟着改一次,很烦。接下来抽空研究一下版本控制
    暂时想到这么多

猜你喜欢

转载自blog.csdn.net/weixin_36049506/article/details/89378207