2 条题解

  • 0
    @ 2023-11-14 19:46:42

    用数组储存最终值

    • 用数组储存每一次比赛的ID与成绩,并用一个数组记录此ID 的最终值,和最后出现的位置
    • 储存全部比赛情况后从第一次比赛的ID 进行比较求出贡献值最小的情况 (此时需要注意若两者贡献值相同,则比较不同ID 最后出现的位置,保存较早的一位。
    • 此方法时间复杂度较高
    • 0
      @ 2023-11-11 21:06:25

      这道题要考虑几个地方

      • 第一个:需要将ID和贡献值对应起来。这里我用结构体实现。
      • 第二个:每个ID的贡献值变化可能是多次,输入时要找到同样ID的位置来改变贡献值(这里桶排容易理解,但是结构体更清晰。)
      • 第三个:题目中括号里强调了 (若出现两个选手的贡献值相等的情况下,最终贡献值更早出现的选手为内奸) 要处理这个问题,需要在每次输入时做一个标记,来记录贡献值变化的先后顺序。这是这道题重点。

      基于以上三点完成代码,最后,在输出时,用sort对结构体的贡献值元素进行正排序,把最小的贡献值排在第一个。如果有相同的贡献值的ID,对这个ID的标记进行比较,标记值越小的说明越先达到最小值,那么输出这个标记的ID和贡献值就完成了。

      PS:(对于sort进行结构体排序,需要声明一个bool的函数来对sort排序进行说明,具体方法群里有涛队的文件,需要的可以打开学习学习)

      • 1

      信息

      ID
      932
      时间
      1000ms
      内存
      256MiB
      难度
      9
      标签
      递交数
      490
      已通过
      42
      上传者