您的位置:首页 > 其它

CF 779 C Dishonest Sellers 贪心,排序

2017-03-06 17:52 323 查看
题目链接:见这里

题意:给了一些物品,每个物品有俩个价格,一个是打折前的,一个是打折后的(打折发生在一周后),现在一个人必须先买k个物品,然后剩下的物品既可以选择现在买,也可以选择一周后买,其中打折后的价格不一定比现有价格低,无良商人,大家都懂。

解法:我们先考虑一下必须买的k个物品,肯定要优先选择那些打折后变贵的物品,并且在变得同等贵的时候,我们要优先买现在价格大的。买完k个之后,剩下的就是俩个价格取个小,这题就做完了。

//CF 779C
#include <bits/stdc++.h>
using namespace std;
struct node{
int x, y;
node(){}
}a[200010];
bool cmp(node a, node b){
if((a.x - a.y) == (b.x - b.y)){
return a.y > b.y;
}
return (a.x - a.y) < (b.x - b.y);
}
int n, k;
int main()
{
scanf("%d%d", &n, &k);
for(int i = 1; i <= n; i++) scanf("%d", &a[i].x);
for(int i = 1; i <= n; i++) scanf("%d", &a[i].y);
sort(a + 1, a + n + 1, cmp);
int ans = 0;
for(int i = 1; i <= n; i++){
if(i <= k) ans += a[i].x;
else ans += min(a[i].x, a[i].y);
}
printf("%d\n", ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: