1 条题解

  • 0
    @ 2024-10-5 21:59:24

    这是一道贪心题,对大家的成绩排序后,使用双指针,一个指向最低分,一个指向最高分,看两个成绩有没有达到上限,如果没有就放在一组,如果有就单独放一组,直到全部分完组。

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	int T,count=0;
    	int left,right,i;
    	int n,a[30001];
        scanf("%d",&T);
        scanf("%d",&n); 
        for(i=1;i<=n;i++){
        	scanf("%d",&a[i]);
    	}
          
        sort(a+1,a+n+1);
        left=1;  
    	right=n;
        while(left<=right)
        {
            if(a[left]+a[right]<=T)   
              left++,right--,count++;
            else
              right--,count++;  
        }
        printf("%d",count);
        return 0;
    }
    
    • 1

    信息

    ID
    111
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    49
    已通过
    28
    上传者