7-05. 魔法优惠券(25) (数学 ZJU_PAT)
题目链接:http://www.patest.cn/contests/ds/7-05
在火星上有个魔法商店,提供魔法优惠券。每一个优惠劵上印有一个整数面值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。
规定每张优惠券和每件商品都仅仅能最多被使用一次,求你能够得到的最大回报。
输入格式说明:
输入有2行。第1行首先给出优惠劵的个数N。随后给出N个优惠劵的整数面值。第2行首先给出商品的个数M,随后给出M个商品的整数价值。
N和M在[1, 106]之间。全部的数据大小不超过230。数字间以空格分隔。
输出格式说明:
输出能够得到的最大回报。
例子输入与输出:
序号 | 输入 | 输出 |
1 |
4 1 2 4 -1 |
43 |
2 |
4 3 2 6 1 |
49 |
3 |
5 0 0 0 0 -1 |
0 |
4 |
7 3 36 -1 73 2 3 6 |
1 |
PS:
先排好序后在从两头一起扫描一遍就好了!
代码例如以下:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn = 1000017;
int a[maxn], b[maxn];
bool cmp(int a, int b)//从大到小
{
return a > b;
}
int main()
{
int n, m;
while(~scanf("%d",&n))
{
int i, j;
for(i = 0; i < n; i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n,cmp);
scanf("%d",&m);
for(i = 0; i < m; i++)
{
scanf("%d",&b[i]);
}
sort(b,b+n,cmp);
int sum = 0;
int l1 = 0, l2 = 0;
int h1 = n-1, h2 = m-1;
for(i = 0; ;i++)
{
if(a[l1]*b[l2] >= 0)//头
{
if(a[l1]*b[l2]==0)
{
if(a[l1]==0)
l1++;
if(b[l2]==0)
l2++;
}
else
{
sum+=a[l1]*b[l2];
l1++;
l2++;
}
}
else if(a[h1]*b[h2] >= 0)//尾
{
if(a[h1]*b[h2] == 0)
{
if(a[h1]==0)
h1--;
if(b[h2]==0)
h2--;
}
else
{
sum+=a[h1]*b[h2];
h1--;
h2--;
}
}
else//都不符合,就不用当前的优惠券
{
l1++;
h1--;
}
if(l1 > h1 || l2 > h2)
break;
}
printf("%d\n",sum);
}
return 0;
}
7-05. 魔法优惠券(25) (数学 ZJU_PAT)的更多相关文章
- PTA数据结构与算法题目集(中文) 7-39魔法优惠券 (25 分)
PTA数据结构与算法题目集(中文) 7-39魔法优惠券 (25 分) 7-39 魔法优惠券 (25 分) 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商 ...
- 3-07. 求前缀表达式的值(25) (ZJU_PAT数学)
题目链接:http://pat.zju.edu.cn/contests/ds/3-07 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,比如2+3*(7 ...
- 2-08. 用扑克牌计算24点(25) (ZJU_PAT 数学 枚举)
题目链接:http://pat.zju.edu.cn/contests/ds/2-08 一副扑克牌的每张牌表示一个数(J.Q.K分别表示11.12.13,两个司令都表示6).任取4张牌.即得到4个1~ ...
- 3-08. 栈模拟队列(25)(ZJU_PAT 模拟)
主题链接:http://pat.zju.edu.cn/contests/ds/3-08 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操 ...
- PAT Advanced 1024 Palindromic Number (25) [数学问题-⼤整数相加]
题目 A number that will be the same when it is written forwards or backwards is known as a Palindromic ...
- gj3 Python数据模型(魔法函数)
3.1 什么是魔法函数 类里面,实现某些特性的内置函数,类似 def __xx__(): 的形式. 不要自己定义XX,并不是和某个类挂钩的 class Company(object): def __i ...
- 【彩票】彩票预测算法(一):离散型马尔可夫链模型C#实现
前言:彩票是一个坑,千万不要往里面跳.任何预测彩票的方法都不可能100%,都只能说比你盲目去买要多那么一些机会而已. 已经3个月没写博客了,因为业余时间一直在研究彩票,发现还是有很多乐趣,偶尔买买,娱 ...
- 【年终分享】彩票数据预测算法(一):离散型马尔可夫链模型实现【附C#代码】
原文:[年终分享]彩票数据预测算法(一):离散型马尔可夫链模型实现[附C#代码] 前言:彩票是一个坑,千万不要往里面跳.任何预测彩票的方法都不可能100%,都只能说比你盲目去买要多那么一些机会而已. ...
- java实现哈夫曼编码
java实现哈夫曼编码 哈夫曼树 既然是学习哈夫曼编码,我们首先需要知道什么是哈夫曼树:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫 ...
随机推荐
- NicEdit - WYSIWYG Content Editor, Inline Rich Text Application
NicEdit - WYSIWYG Content Editor, Inline Rich Text Application By calling the nicEditors.allTextarea ...
- iOS 7 改变Status Bar 颜色
Set the UIViewControllerBasedStatusBarAppearance to NO in the Info.plist. In ViewDidLoad method or a ...
- java面试题集1
一:单选题 下列哪一种叙述是正确的(D )A. abstract修饰符可修饰字段.方法和类B. 抽象方法的body部分必须用一对大括号{ }包住C. 声明抽象方法,大括号可有可无D. 声明抽象方法不可 ...
- Can you find it?(二分 二分+STL set map)
Can you find it? Time Limit : 10000/3000ms (Java/Other) Memory Limit : 32768/10000K (Java/Other) T ...
- 学习《Python核心编程》做一下知识点提要,方便复习(一)
学习<Python核心编程>做一下知识点提要,方便复习. 计算机语言的本质是什么? a-z.A-Z.符号.数字等等组合成符合语法的字符串.供编译器.解释器翻译. 字母组合后产生各种变化拿p ...
- docker 实战---使用oracle xe作为开发数据库(六)
oracle作为oltp的大佬,非常多行业应用都会用到它.那么在开发的过程中就不可避免的要使用oracle数据库,oracle数据库的版本号有好多,当中express版本号是免费的开发版.它的主要限制 ...
- Hadoop中SequenceFile的使用
1.对于某些应用而言,须要特殊的数据结构来存储自己的数据. 对于基于MapReduce的数据处理.将每一个二进制数据的大对象融入自己的文件里并不能实现非常高的可扩展性,针对上述情况,Hadoop开发了 ...
- RMAN完整全备份
1.以CATALOG模式连接到目标数据库和恢复目录(如:目标数据库为ORCL) C:\Users\Administrator>RMAN TARGET / CATALOG RMANCT/RMANC ...
- RMAN增量备份-备份保留策略-设置备份集属性
RMAN增量备份:增量备份级别:0,1,2,3,4BACKUP DATABASE也是创建数据库的完整备份,但是这种备份不同于增量备份的0级备份.这种备份不包含增量备份的0级备份,并不支持在此基础上再创 ...
- 使用zeranoe的自动化脚本mingw-w64-build-3.6.4在ubutun14.04_64bit上交叉编译ffmpeg 2.5
编译期间,碰到的两个大问题,是环境变量设置问题. 先列出执行脚本是碰到的两个问题,后面给出解决方法并记录执行的命令步骤. 问题1: 编译binutils 2.5出错 ----------------- ...