2017年西南民族大学程序设计竞赛-网络同步赛 C 装进肚子【贪心】
2017-12-30 18:53
169 查看
C 装进肚子
题目描述
自从ZZZZone吃完糖果后,他开始改吃巧克力了,他每天想吃n个巧克力增在甜蜜值,他决定早上吃K个巧克力,晚上吃n - K个巧克力,每个巧克力在早上吃和在晚上吃的甜蜜值是不一样的,他想让自己得到的甜蜜值最大,并想知道最大是多少。请你编程帮助他。
输入描述:
第一行包含两个数n,K表示每天要吃的巧克力数量和要在早上吃的数量。(n <= 100000, K <= n)第二行包含n个整数Ai(1 <= i <= n) 表示个第i个巧克力在早上吃可得到的甜蜜值 (Ai <= 100000)
第三行包含n个整数Bi(1 <= i <= n) 表示个第i个巧克力在晚上吃可得到的甜蜜值 (Bi <= 100000)
输出描述:
输出仅一行包含一个整数表示ZZZZone能获得的最大甜蜜值。示例1
输入
2 13 6
2 8
输出
11说明
早上吃第一个巧克力得到3甜蜜值,晚上吃第2个巧克力得到8的甜蜜值,所以最大可得到11的甜蜜值。题意: 给你天数,和第i天上午和下午的甜蜜值,让你选择那天上午吃,或下午吃,使得得到的甜蜜值最大
分析: 贪心的按照差值来排序,即可,考虑前k个数只需要前 差值最大的 即可,后面的都是下午来选即可
参考代码
#include<bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; typedef long long ll; struct S { ll a,b; }a[100010]; ll res; bool cmp(S x, S y) { int t1 = x.a - x.b; int t2 = y.a - y.b; return t1 > t2; } int main(){ int n,k;cin>>n>>k; for(int i = 0;i < n;i++) cin>>a[i].a; for(int i = 0;i < n;i++) cin>>a[i].b; sort(a,a+n,cmp); for(int i = 0;i < k;i++) res += a[i].a; for(int i = k;i < n;i++) res += a[i].b; cout<<res<<endl; return 0; }
如有错误或遗漏,请私聊下UP,ths
相关文章推荐
- 2017年西南民族大学程序设计竞赛-网络同步赛-C:装进肚子(思维)
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年西南民族大学程序设计竞赛-网络同步赛 E 开心的涂刷【排列 + 快速幂】
- 2017年西南民族大学程序设计竞赛-网络同步赛(代码)
- 2017年西南民族大学程序设计竞赛-网络同步赛 A 星图【思维维护】
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年西南民族大学程序设计竞赛-网络同步赛-(A~K)
- 【2017年西南民族大学程序设计竞赛-网络同步赛】A C D E I J
- 杭州电子科技大学程序设计竞赛(2016’12)- 网络同步赛 1001
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 J 栗酱和火柴【water】
- 杭州电子科技大学程序设计竞赛(2016’12)- 网络同步赛 1002
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 K qwb的骚扰【分类讨论】
- 杭州电子科技大学程序设计竞赛(2016’12)- 网络同步赛 1003
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 L qwb与电阻【dfs】
- 2017年西南民族大学程序设计竞赛 A-星图
- 杭州电子科技大学程序设计竞赛(2016’12)- 网络同步赛 1004