NI______ 2024-03-11 19:47 采纳率: 0%
浏览 49
已结题

L2-044 大众情人 测试点4

为什么最后一个测试点过不去TT

img

#include <bits/stdc++.h>
using namespace std;

int n;
int d[510][510];
int sex[510];
int xlike[510];

int main(){
    cin>>n;
    memset(sex,0,sizeof(sex));
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            d[i][j]=0x3f3f3f3f;
        }
    }
    for(int i=1;i<=n;i++){
        char x;
        cin>>x;
        if(x=='M')
            sex[i]=1;
        int k;
        cin>>k;
        for(int j=0;j<k;j++){
            int num,dis;
            char xx;
            cin>>num>>xx>>dis;
            d[i][num]=dis;
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            for(int k=1;k<=n;k++){
                if(d[i][j]>d[i][k]+d[k][j])
                    d[i][j]=d[i][k]+d[k][j];
            }
        }
    }
    for(int i=0;i<=1;i++){
        int minall=0x3f3f3f3f;
        for(int j=1;j<=n;j++){
            if(sex[j]==i){
                int maxd=0;
                for(int k=1;k<=n;k++){
                    if(sex[k]!=i&&d[k][j]>maxd)
                        maxd=d[k][j];
                }
                xlike[j]=maxd;
                if(maxd<minall)
                    minall=maxd;
            }
        }
        int flag=0;
        for(int j=1;j<=n;j++){
            if(sex[j]==i&&xlike[j]==minall){
                if(flag!=0)
                    cout<<" ";
                cout<<j;
                flag++;
            }
        }
        cout<<endl;
    }
    return 0;
}

img

  • 写回答

1条回答 默认 最新

  • GISer Liu 2024-03-11 19:49
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    根据你提供的代码,我来分析一下可能导致最后一个测试点无法通过的原因。
    在代码中,首先通过输入数据构建了一个图,然后使用了 Floyd-Warshall 算法计算了所有点对之间的最短路径。接着,通过遍历每个性别(0 或
    1),找到每个性别中喜欢的异性的最长距离,最后输出距离最小的人的编号。
    可能的问题及解决方案如下:

    1. 内存溢出问题: 在题目中给出的测试数据中,可能存在比较大的数据量,导致数组 d 大小超过了内存限制,引发内存溢出。解决方法是优化算法或者使用动态内存分配。
    2. 计算过程中的错误: 在使用 Floyd-Warshall 算法计算最短路径时,有可能出现计算错误或者死循环的情况。这可能是由于图的数据特性导致的,需要检查算法实现的正确性。可以通过手动计算一些简单的测试数据来验证算法的正确性。
    3. 边界条件处理不当: 在遍历性别时,可能存在边界条件处理不当导致程序错误。例如,可能存在没有男性或女性的情况,但代码没有进行处理。需要确保程序对各种情况都进行了正确的处理。
    4. 输出格式问题: 最后输出结果时,可能存在格式不正确导致判断错误的情况。确保输出格式符合题目要求,每个数字后面有且只有一个空格,并且每个性别的结果单独一行。
    5. 代码逻辑错误: 可能存在逻辑错误导致程序不能正确输出结果。这需要仔细检查代码逻辑,特别是关键的条件判断和循环部分。
      针对以上可能的问题,你可以逐一检查并进行调试和修改。如果有具体的报错信息或者程序输出的错误结果,可以提供更多信息以便进行更具体的分析和解决。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月11日
  • 创建了问题 3月11日

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题