1 条题解

  • 0
    @ 2024-12-24 10:06:20

    C++ :

    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    struct Line{
      int startPoint;
      int endPoint;
    };
    bool Cmpare(Line &lineA,Line &lineB){
      return lineA.startPoint <lineB.startPoint;
    }
    
    int main(void){
      int n = 0;
      // printf("请输入农民数量N:");
      scanf("%d",&n);
      Line line[n];
      for(int i = 0;i<n;i++){
        // printf("%d\n",i);
        int startTime ,endTime = 0;
        scanf("%d%d",&line[i].startPoint,&line[i].endPoint);
      }
      // printf("************\n");
      sort(line,line+n,Cmpare);
      // for(int i = 0;i<n;i++){
      //   printf("%d %d\n",line[i].startPoint,line[i].endPoint);
      // }
      Line lineMerge[n];
      lineMerge[0].startPoint = line[0].startPoint;
      lineMerge[0].endPoint = line[0].endPoint;
      int lineNum = 1;
      for(int i = 1;i<n;i++){
        if(line[i].startPoint <= lineMerge[lineNum-1].endPoint){
        //如果下一段的起始点在上一段终点前,说明有可能可以合并,作判断
          if(line[i].endPoint >= lineMerge[lineNum-1].endPoint){
            lineMerge[lineNum-1].endPoint = line[i].endPoint;
          }
        }else{
          // 如果下一段的起始点超过上一段终点,则计算新的线段
          lineMerge[lineNum].startPoint = line[i].startPoint;
          lineMerge[lineNum].endPoint = line[i].endPoint;
          lineNum = lineNum +1;
        }
      }
      // for(int i = 0;i<lineNum;i++){
      //   printf("%d %d\n",lineMerge[i].startPoint,lineMerge[i].endPoint);
      // }
      int maxTime = lineMerge[0].endPoint - lineMerge[0].startPoint;
      int minTime = 0;
      for(int i = 1;i<lineNum;i++){
        if(lineMerge[i].endPoint - lineMerge[i].startPoint>maxTime){
          maxTime = lineMerge[i].endPoint - lineMerge[i].startPoint;
        }
        if(lineMerge[i].startPoint - lineMerge[i-1].endPoint>minTime){
          minTime = lineMerge[i].startPoint - lineMerge[i-1].endPoint;
        }
      }
      printf("%d %d",maxTime,minTime);
    }
    
    • 1

    信息

    ID
    2710
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者