传送门
思维:这个题思想就是贪心,获得局部最大然后达到总体最大。我们假设每天都存2倍的货,再与原来的比较,那么我们只要找出增值大的数即可。增值大的数即为最优选择。
#include<algorithm>
#include<iostream>
using namespace std;
struct node
{
long long num, cp;
long long w;
} s[100005];
bool cmp(node x, node y)
{
return x.w > y.w;
}
int main()
{
long long n, m, sum = 0;
cin >> n >> m;
for(int i = 1; i <= n; i++)
{
cin >> s[i].cp >> s[i].num;
s[i].w = (s[i].cp * 2 < s[i].num ? 2 * s[i].cp : s[i].num) - (s[i].cp < s[i].num ? s[i].cp : s[i].num); //w的增值
}
sort(s + 1, s + n + 1 ,cmp);
for(int i = 1; i <= n; i++)
{
if(m)
{
m--;
sum += min(s[i].cp * 2 ,s[i].num);
}
else
sum += min(s[i].cp, s[i].num);
}
cout << sum << endl;
return 0;
}