1 条题解

  • 0
    @ 2025-8-21 21:00:36

    一道很简单的贪心题

    要想压缩歌曲尽可能少,每次压缩大小就要尽可能大,所以先算出当前歌曲占用空间,再用一个a数组存差值后排序,从大到小减直到小于等于目标值即可。

    提示:不开long long见祖宗^-^

    #include<bits/stdc++.h>
          using namespace std;
          const int N=1e5+5;
          int a[N];
          int main(){
          	int n,t;
          	cin>>n>>t;
          	long long sum=0;
          	for(int i=1;i<=n;i++){
          		int x,y;
          		cin>>x>>y;
          		a[i]=x-y;
          		sum+=x;
          	}
          	sort(a+1,a+n+1);
          	int ans=0;
          	for(int i=n;i>=1;i--){
          		if(sum>t){
          			sum-=a[i];
          			ans++;
          		}
          		else{
          			break;
          		}
          	}
          	if(sum>t){ //特判能否成功
          		cout<<-1;
          	}
          	else{
          		cout<<ans;
          	}
          	return 0;
          }
    
  • 1

信息

ID
455
时间
1000ms
内存
64MiB
难度
10
标签
递交数
2
已通过
1
上传者