【CF 1015C】 Songs Compression

原题地址:http://codeforces.com/contest/1015/problem/C

题意:有n首歌,想要存放到U盘里,每首歌都有压缩前和压缩后的体积ai,bi,U盘的最大容量为m,求把所有歌放进U盘所需压缩最少的次数。

使用结构体记录每首歌压缩前的体积与压缩后的体积x,y,以及体积的差值c,对差值进行排序。求出未压缩总体积后依次减去最大的差值,直到体积小于m。压缩后总体积仍大于m的情况特判。

代码:

#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
struct ac
{
	ll x,y,c;            //数据会爆int,使用long long
}a[100005];
bool cmp(ac x,ac y)
{
	return x.c>y.c;
}
int main()
{
	int i;
	ll n,m,s=0,sum=0;
	cin>>n>>m;
	for(i=0;i<n;i++)
	{
		cin>>a[i].x>>a[i].y;
		a[i].c=a[i].x-a[i].y;
		s+=a[i].x;
		sum+=a[i].y;
	}
	if(sum>m)
	{
		cout<<"-1"<<endl;
		return 0;
	}
	sort(a,a+n,cmp);
	i=0;
	while(s>m)
	{
		s-=a[i].c;
		i++;
	}
	cout<<i<<endl;
	return 0;
}

 

全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
10-15 10:57
已编辑
武昌理工学院 FPGA工程师
狠赚笔第一人:老哥学院本没实习还想拿13k学Java狠赚笔呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务