7-39 魔法优惠券
题目链接:
传送门
题目描述:
在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星)
例如,给定一组优惠劵,面值分别为1、2、4、-1;对应一组商品,价值为火星币M$7、6、-2、-3,其中负的价值表示该商品是免费赠品。我们可以将优惠劵3用在商品1上,得到M$28的回报;优惠劵2用在商品2上,得到M$12的回报;优惠劵4用在商品4上,得到M$3的回报。但是如果一不小心把优惠劵3用在商品4上,你必须倒贴给商店M$12。同样,当你一不小心把优惠劵4用在商品1上,你必须倒贴给商店M$7。
规定每张优惠券和每件商品都只能最多被使用一次,求你可以得到的最大回报。
输入格式:
输入有两行。第一行首先给出优惠劵的个数N,随后给出N个优惠劵的整数面值。第二行首先给出商品的个数M,随后给出M个商品的整数价值。N和M在[1, 106 ]之间,所有的数据大小不超过230,数字间以空格分隔。
输出格式:
输出可以得到的最大回报。
输入样例:
4 1 2 4 -1
4 7 6 -2 -3
输出样例:
43
题目思路:
本题可以用贪心算法解决,每次使用绝对值最大且同号的优惠券和商品,若无同号则不使用。
参考代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int n,m;
int a[1000001];
int b[1000001];int cmp(const void *a,const void *b)
{int* pa=(int*)a;int* pb=(int*)b;int num1=*pa;int num2=*pb;return num2-num1;
}int main()
{int i,max=0;memset(a,0,sizeof(a));memset(b,0,sizeof(b));scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);scanf("%d",&m);for(i=0;i<m;i++)scanf("%d",&b[i]);qsort(a,n,sizeof(a[0]),cmp);qsort(b,m,sizeof(b[0]),cmp);int head=0,tail1=n-1,tail2=m-1;//head从最大值起,tail从最小值起(可能为负)while(a[head]>0&&b[head]>0&&head<n&&head<m){//如果最大值同为正数则从最大值(也即绝对值最大)开始累加。max+=a[head]*b[head];head++;}while(a[tail1]<0&&b[tail2]<0&&tail1>head&&tail2>head){//最大值为负数则从末尾开始累加,或从头累加至不同号再继续累加同为负数的情况。max+=a[tail1]*b[tail2];tail1--;tail2--;}printf("%d",max);return 0;
}
参考资料传送门:
传送门
7-39 魔法优惠券相关推荐
- 7-39 魔法优惠券 (25 分)(思路加解释 用容器做的)加油兄弟们
一:题目 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免 ...
- R7-8 魔法优惠券 (25 分)
R7-8 魔法优惠券 (25 分) 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值 ...
- 用JAVA实现魔法优惠券
7-9 魔法优惠券 (25 分) 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的 ...
- 数据结构PTA 基础实验7-2.1 魔法优惠券
基础实验7-2.1 魔法优惠券 题目 解法 题目 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费 ...
- 基础实验 7-2.1 魔法优惠券(25 分)
在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值 K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的 ...
- 基础实验7-2.1 魔法优惠券 (贪心)
在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时 ...
- PTA 7-39 魔法优惠券 (25 分)
7-39 魔法优惠券 (25 分) 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值 ...
- 数据结构与算法题目集7-39 魔法优惠券(c语言实现)
原题链接 这道题最主要的问题其实是排序,再接下来要搞清楚如何求得最大收益. 最大收益=最大正的优惠卷x最大正的商品+最大负的优惠卷x最大负的商品 这里强烈推荐大家使用qsort函数! #include ...
- PTA 数据结构与算法题目集(中文)
一:数据结构与算法题目(中文版) 7-2 一元多项式的乘法与加法运算 (20 分) 7-3 树的同构 (25 分) 7-4 是否同一棵二叉搜索树 (25 分) 7-6 列出连通集 (25 分)(详解) ...
最新文章
- SAP QM 源检验(Source Inspection)功能展示
- 狂汗!售货员竟遭遇到最彪悍的付款方式(转)
- WPF 3D基础学习 - 画布、相机、Model3D(1)
- java内存块_JVM上的并发和Java内存模型之同步块笔记
- 29.类加载机制、类加载过程、加载、验证、准备、解析、初始化、总结
- 《算法竞赛入门经典》习题4-2 正方形 (Squares,ACM,ICPC World Finals 1990,UVa201)——仅提供大体方法
- 数据库原理 知识点总结
- c++ --- 字符串中的标点符号
- 2016年计算机网考,2016年电大:计算机网考(全)练习题.doc
- 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程
- h5页面移动端的社会化分享_Adobe年尾续运H5页面
- python datetime和字符串如何相互转化?
- 故事感悟:管道与挑水
- 修改登录密码html代码,html登录界面设置账号密码
- 计算机辅助翻译实践语料库,《计算机辅助翻译实践》
- 双偶幻方的c语言算法,任意阶幻方的c++实现----奇阶幻方、双偶幻方、单偶幻方。...
- 网络共享计算机怎么连接,网络共享,详细教您电脑怎么设置共享无线网络
- iOS开发 - 使用IJKPlayer时,关于需求要边下边播的缓存功能,退回来后播放缓存不再耗流量
- 计挑赛初赛试题(2020)(一)
- Python 程序示例 - 初学者的简单代码示例