1 条题解
-
0
一道很简单的贪心题
要想压缩歌曲尽可能少,每次压缩大小就要尽可能大,所以先算出当前歌曲占用空间,再用一个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; }
信息
- ID
- 455
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者