全部评论 1

  • 为什么全WA?样例明明全对!

    2025-07-16 来自 浙江

    0
    • 1.优惠票管理不当:

      • 你使用了一个数组 time[100000] 来存储地铁乘车时间,但没有存储对应的地铁票价。
      • 在公交车乘车时,你需要检查所有未过期的优惠票,并选择最早获得且票价 ≥ 公交车票价的优惠票。
      • 你的代码中 r=0; break; 会导致逻辑错误,因为 r 是循环变量,重置它不会真正回到第一张优惠票。

      2.时间比较错误:

      • 公交车的时间 a.time[j] 应该与地铁的时间 a.time[r] 比较,而不是 a.timesun - a.time[r]。
      • 正确的条件是:a.time[j] - a.time[r] <= 45。

      3.优惠票未正确消耗:

      • 一旦使用了一张优惠票,应该将其从可用优惠票中移除,否则可能会重复使用。

      4.变量命名混乱:

      • chuxing 是 bool 类型,但 0 代表地铁,1 代表公交车,容易混淆。
      • timesun 的命名不清晰,建议改为 last_bus_time 或类似名称。

      2025-07-16 来自 浙江

      0
    • 可以使用以下代码

      #include <bits/stdc++.h>
      using namespace std;
      
      class gongjiao {
      public:
          bool chuxing;  // 0: 地铁, 1: 公交车
          long money;
          long time[100000];  // 存储地铁乘车时间
          long price[100000]; // 存储地铁票价(新增)
          long i = 0;         // 地铁记录数
          long timesun = 0;   // 上一次乘车时间(公交或地铁)
      };
      
      int main() {
          gongjiao a;
          long long sum = 0, s;
          cin >> s;
      
          for (int j = 1; j <= s; j++) {
              cin >> a.chuxing >> a.money >> a.time[j];
              
              if (a.chuxing == false) {  // 地铁
                  sum += a.money;        // 地铁直接付费
                  a.price[++a.i] = a.money; // 记录地铁票价(修正索引从1开始)
              } 
              else {  // 公交车
                  bool used = false;
                  // 遍历所有地铁记录,寻找可用优惠票
                  for (int r = 1; r <= a.i; r++) {
                      if (a.time[j] - a.time[r] <= 45 && a.money <= a.price[r]) {
                          // 使用这张优惠票(移除或标记为已用)
                          // 由于是数组,我们无法直接删除,所以用覆盖法
                          a.price[r] = -1; // 标记为已用
                          used = true;
                          break;
                      }
                  }
                  if (!used) {
                      sum += a.money; // 无可用优惠票,付费
                  }
              }
              a.timesun = a.time[j];
          }
      
          cout << sum << endl;
          return 0;
      }
      

      2025-07-16 来自 浙江

      0
    • <AI生成>

      2025-07-16 来自 浙江

      0

热门讨论