5 条题解

  • 0
    @ 2025-10-24 8:23:39
    #include<stdio.h>
    int main()
    {
        int n;
        scanf("%d",&n);
        int a[n][2];
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&a[i][0],&a[i][1]);
        }
        for(int i=0;i<n-1;i++)
        {
            for(int j=0;j<n-1-i;j++)
            {//注意:用末时间排序
                if(a[j][1]>a[j+1][1])
                {
                    int tem=a[j+1][0];
                    a[j+1][0]=a[j][0];
                    a[j][0]=tem;
    
                    tem=a[j+1][1];
                    a[j+1][1]=a[j][1];
                    a[j][1]=tem;
                }
            }
        }
        if(n==1)
        {
            printf("1");
            return 0;
        }
        int count=1;
            for(int i=0;i<n-1;i++)
            {
                if(a[0][1]<=a[i+1][0])
                {
                    count++;
                    a[0][1]=a[i+1][1];
                }
            }
        printf("%d",count);
        return 0;
    }
    
    • 0
      @ 2025-10-16 22:55:35

      #include <stdio.h> int main() { int i,j,n,mid,num,mid1; scanf("%d",&n); int arry[n][2]; //区间存为数组 for(i=0;i<n;i++) { scanf("%d %d",&arry[i][0],&arry[i][1]); } //将区间按deadline从小到大排序 for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(arry[j][1]>=arry[j+1][1]) { //交换结束时间 mid=arry[j][1]; arry[j][1]=arry[j+1][1]; arry[j+1][1]=mid; //交换起始时间 mid1=arry[j][0]; arry[j][0]=arry[j+1][0]; arry[j+1][0]=mid1; } } } mid=arry[0][1]; num=1; //如果前一个活动的结束时间小于下一个活动的开始时间,mum++ for(i=0;i<n-1;i++) { if(mid<=arry[i+1][0]) { num++; mid=arry[i+1][1] ; } } printf("%d",num); }

      • 0
        @ 2025-10-15 23:51:21
        #include<bits/stdc++.h>
        using namespace std;
        
        const int N = 100010;
        pair<int, int> activities[N];  // first:结束时间, second:开始时间
        
        int main()
        {
            int n;
            cin >> n;
            
            for(int i = 0; i < n; i++)
            {
                cin >> activities[i].second >> activities[i].first;  // 输入:开始时间,结束时间
            }
            
            sort(activities, activities + n);  // 按结束时间排序
            
            int count = 0, last_end = -2e9;
            for(int i = 0; i < n; i++)
            {
                if(activities[i].second >= last_end)  // 当前活动开始时间 >= 上一个活动结束时间
                {
                    count++;
                    last_end = activities[i].first;  // 更新最后一个活动的结束时间
                }
            }
            
            cout << count;
            return 0;
        }
        
        • 0
          @ 2025-2-28 20:49:21
          #include<bits/stdc++.h>
          using namespace std;
          typedef pair<int,int>PII[100010];
          int main()
          {
              int n;
              cin>>n;
              for(int i=0;i<n;i++)
              {
                  cin>>PII[i].second>>PII[i].first;
              }
              sort(PII,PII+n);
              int ans=0,t=-2e5;
              for(int i=0;i<n;i++)
              {
                  if(t<=PII[i].second)
                  {
                      ans++;
                      t=PII[i].first;
                  }
              }
              cout<<ans;
              return 0;
          }
          和struct一样,pair也可以进行嵌套,储存的是同一个类型的数据
          
          • 0
            @ 2024-10-31 15:59:01

            #include<stdio.h> #include<algorithm> #include <iostream> using namespace std; struct s{ int bi; int ei; }a[10000]; bool cmp(struct s o,struct s p){ return o.ei<p.ei; } int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d %d",&a[i].bi,&a[i].ei); } sort(a,a+n,cmp); int cnt=1; int k=a[0].ei; for(int i=1;i<n;i++){ if(k<=a[i].bi){ cnt++; k=a[i].ei; } // a[i+1].ei=a[i].ei; } printf("%d\n",cnt); return 0; }

            • 1

            信息

            ID
            94
            时间
            1000ms
            内存
            512MiB
            难度
            8
            标签
            (无)
            递交数
            831
            已通过
            127
            上传者