lsmCC 发表于 2023-9-30 19:40:26

牛客栗酱的文明2

可以写一下解题思路吗?

Mike_python小 发表于 2023-9-30 19:41:16

栗酱的文明2 C/C++交流题目解析

此题需要统计每个人参加活动的总时间,并按照总时间从大到小排序输出对应的编号和总时间,如果总时间相同则按照编号从小到大输出。

首先,我们可以定义一个结构体来存储每个参与者的信息:

++
struct Player {
    int no; // 编号
    int time; // 总时间
};


然后,我们需要输入每个参与者的信息,并计算出他们的总时间。可以使用一个循环来输入所有参与者的信息,然后在循环中对每个参与者的总时间进行累加。代码如下:

++
int n;
cin >> n;

vector<Player> players(n);

// 输入每个参与者的信息
for (int i = 0; i < n; i++) {
    cin >> players.no;

    int m;
    cin >> m;

    players.time = 0;

    for (int j = 0; j < m; j++) {
      int start_hour, start_minute, end_hour, end_minute;
      cin >> start_hour >> start_minute >> end_hour >> end_minute;

      players.time += (end_hour * 60 + end_minute) - (start_hour * 60 + start_minute);
    }
}


接下来,我们需要对参与者按照总时间从大到小排序。可以使用sort函数来实现,需要自定义比较函数作为参数。具体实现方法是,如果两个参与者的总时间不同,则按照总时间从大到小排序;如果总时间相同,则按照编号从小到大排序。代码如下:

++
bool cmp(const Player& a, const Player& b) {
    if (a.time != b.time) {
      return a.time > b.time;
    }
    return a.no < b.no;
}

sort(players.begin(), players.end(), cmp);


最后,我们可以按照题目要求输出排序后的结果。代码如下:

++
for (int i = 0; i < n; i++) {
    cout << players.no << " " << players.time << endl;
}


这样就完成了本题的解答。

希望这些对你有所帮助!

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

lsmCC 发表于 2023-9-30 19:43:17

isdkz 发表于 2023-9-30 19:40
题目描述:

牛客栗酱在玩文明2,他的文明有n个城市,每个城市都有不同的人口和粮食储备。现在他决定要建 ...

不是同一个题

lsmCC 发表于 2023-9-30 19:46:36

Mike_python小 发表于 2023-9-30 19:41
栗酱的文明2 C/C++交流题目解析

此题需要统计每个人参加活动的总时间,并按照总时间从大到小排序输出对应 ...

佬,不是同一个题

额外减小 发表于 2023-9-30 21:01:15

问问题用图片的话,可以很好地屏蔽掉GPT.
同时建议你自己先去问GPT

https://c.binjie.fun

额外减小 发表于 2023-9-30 21:03:35

题目截图不完整,能再发一次吗

陶远航 发表于 2023-10-1 08:36:44

额外减小 发表于 2023-9-30 21:01
问问题用图片的话,可以很好地屏蔽掉GPT.
同时建议你自己先去问GPT



啥时候加一个OCR...

额外减小 发表于 2023-10-1 12:55:22

陶远航 发表于 2023-10-1 08:36
啥时候加一个OCR...

6.这样的话只好用音频问问题了。

陶远航 发表于 2023-10-1 13:26:48

额外减小 发表于 2023-10-1 12:55
6.这样的话只好用音频问问题了。

那就没人回答了

额外减小 发表于 2023-10-1 13:30:27

陶远航 发表于 2023-10-1 13:26
那就没人回答了

好吧。其实GPT有时候还是能正经回答问题的,没必要这么反对。
页: [1]
查看完整版本: 牛客栗酱的文明2