求助
查看原帖
求助
464570
lamp_forever楼主2021/8/13 20:19

刚刚学完排序接触贪心 发现了此题需要先排序后贪心 于是自己决定用归并排序(因为试了试其他的都TLE了)后贪心 样例过了就是评测了0分 还望大佬们教一教思路和代码

#include<bits/stdc++.h>
using namespace std; 
  long long a[1000001],n,m,t,t1; 
  void qsort(long long a[],long long l,long long r) 
  {
int i,j,mid; 
  i=l; 
  j=r; 
  mid=a[(l+r)/2]; 
  do 
  { while(a[i]<mid) i++;
   while(a[j]>mid) j--; 
  if(i<=j) { swap(a[i],a[j]); i++; j--; }
}while(i<=j); 
  if(l<j) qsort(a,l,j); if(i<r) qsort(a,i,r); }

int main() 
  { cin>>n>>m; 
  for(int i=0;i<n;i++) cin>>a[i];
  qsort(a,0,n-1);

for(int i=0;i<n;i++)
    if(a[i]<1)
    {
    cout<<"No answer!!!"<<endl;

    }
while(m>0)
{   
    for(int i=n-1;i>=0;i--)
    {
        if(m>=a[i])
        {
            t1++;
            m=m-a[i];
            continue;
        }
    }
}
    cout<<t1<<endl;
}
2021/8/13 20:19
加载中...