全部评论 3

  • 1.你声明了 pear[MAXN][MAXN] 这样的二维数组,其中 MAXN = 1e6 + 10,那么这个数组总共会占用约8TB这显然远远超出了任何正常程序允许的内存限制(通常只有几百 MB)。所以,即使逻辑正确,程序也会因为内存超限(MLE)而失败。
    2.你在主循环里用了三重嵌套的 for 循环结构(虽然中间变量名重复了,但我们先忽略语法细节),外层遍历 n 次,内层又分别遍历所有点来找最小值、再遍历所有点做松弛。这意味着时间复杂度接近 O(n的2次方),当n=10的6次方时,次数将达到 10的12次方,远超现代计算机在 1 秒内的处理能力
    3.你在外层循环用了变量 j,然后在内部两个循环也用了同名变量 j,而且嵌套层级不同。C++ 中这种写法会导致变量覆盖,使得外层循环的 j 被修改,从而可能造成死循环或不可预测的行为
    4.你将初始距离设为 N = 2e9,但注意边权最大可以达到10的9次方,且最多有2*10的6次方条边,最坏情况下路径长度可能是10的15次方,所以你设置的“无穷大”是否足够大?会不会在比较时发生误判?,此外,dis 数组只初始化到了 n,但下标是从 1 开始使用的,这点需要注意数组越界风险。

    1周前 来自 天津

    1
  • 1.你声明了 pear[MAXN][MAXN] 这样的二维数组,其中 MAXN = 1e6 + 10,那么这个数组总共会占用约8TB这显然远远超出了任何正常程序允许的内存限制(通常只有几百 MB)。所以,即使逻辑正确,程序也会因为内存超限(MLE)而失败。
    2.你在主循环里用了三重嵌套的 for 循环结构(虽然中间变量名重复了,但我们先忽略语法细节),外层遍历 n 次,内层又分别遍历所有点来找最小值、再遍历所有点做松弛。这意味着时间复杂度接近 O(n的2次方),当n=10的6次方时,次数将达到 10的12次方,远超现代计算机在 1 秒内的处理能力
    3.你在外层循环用了变量 j,然后在内部两个循环也用了同名变量 j,而且嵌套层级不同。C++ 中这种写法会导致变量覆盖,使得外层循环的 j 被修改,从而可能造成死循环或不可预测的行为
    4.你将初始距离设为 N = 2e9,但注意边权最大可以达到10的9次方,且最多有2*10的6次方条边,最坏情况下路径长度可能是10的15次方,所以你设置的“无穷大”是否足够大?会不会在比较时发生误判?,此外,dis 数组只初始化到了 n,但下标是从 1 开始使用的,这点需要注意数组越界风险。

    以上皆为AI生成

    1周前 来自 浙江

    0
  • 问题:

    1.你声明了 pear[MAXN][MAXN] 这样的二维数组,其中 MAXN = 1e6 + 10,那么这个数组总共会占用约8TB这显然远远超出了任何正常程序允许的内存限制(通常只有几百 MB)。所以,即使逻辑正确,程序也会因为内存超限(MLE)而失败。
    2.你在主循环里用了三重嵌套的 for 循环结构(虽然中间变量名重复了,但我们先忽略语法细节),外层遍历 n 次,内层又分别遍历所有点来找最小值、再遍历所有点做松弛。这意味着时间复杂度接近 O(n的2次方),当n=10的6次方时,次数将达到 10的12次方,远超现代计算机在 1 秒内的处理能力
    3.你在外层循环用了变量 j,然后在内部两个循环也用了同名变量 j,而且嵌套层级不同。C++ 中这种写法会导致变量覆盖,使得外层循环的 j 被修改,从而可能造成死循环或不可预测的行为
    4.你将初始距离设为 N = 2e9,但注意边权最大可以达到10的9次方,且最多有2*10的6次方条边,最坏情况下路径长度可能是10的15次方,所以你设置的“无穷大”是否足够大?会不会在比较时发生误判?,此外,dis 数组只初始化到了 n,但下标是从 1 开始使用的,这点需要注意数组越界风险。

    以上皆为AI生成

    1周前 来自 四川

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页