2 条题解

  • 0
    @ 2026-6-22 22:20:22
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int a,b,c,d;
    	cin>>a>>b>>c>>d;
    	if(b<d && c>d)cout<<"Yes";
    	else if(b>d && c<d)cout<<"Yes";
    	else cout<<"No";
    	return 0;
    }
    
    • 0
      @ 2026-6-19 10:30:52

      📝 题目大意

      在一条有 NN 个车站的线路上,列车只能单向行驶(上行从 11NN,下行从 NN11)。给定起点 XX、终点 YY 和中间站 ZZ,判断在从 XXYY 的途中是否会经过 ZZ

      💡 解题思路

      1. 题目分析:由于列车只能沿一个方向行驶,从 XXYY 的路径必然经过 XXYY 之间的所有车站。因此问题转化为:ZZ 是否在 XXYY 之间(含端点)?NN 的值实际上不影响结果,唯一的约束是 X,Y,ZX, Y, Z 互不相同且 N100N \le 100,数据范围极小。
      2. 算法推导
        • low = min(X, Y)high = max(X, Y),则区间 [low,high][low, high] 表示从 XXYY 经过的所有车站范围。
        • ZZ 满足 low <= Z && Z <= high,则输出 "Yes",否则输出 "No"
      3. 边界与细节
        • XX 可能大于 YY(下行方向),取 min/max 统一处理。
        • X,Y,ZX, Y, Z 互不相同,无需考虑等于端点的情况(但代码中 <= 仍可兼容)。

      ⏱️ 复杂度分析

      • 时间复杂度O(1)O(1)
      • 空间复杂度O(1)O(1)

      💻 标准代码 (C++)

      #include <iostream>
      using namespace std;
      int main() {
          int N, X, Y, Z;
          cin >> N >> X >> Y >> Z;
          // 计算 X 和 Y 之间的区间范围
          int low = min(X, Y);
          int high = max(X, Y);
          // 判断 Z 是否在该区间内
          if (low <= Z && Z <= high) {
              cout << "Yes" << endl;
          } else {
              cout << "No" << endl;
          }
          return 0;
      }
      
      • 1

      信息

      ID
      792
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      (无)
      递交数
      2
      已通过
      2
      上传者