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个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫 ...
随机推荐
- pythonBasic
1,judgment in deciding(if...:,if..else:,if else...else:),loop(for...:,while True...:) break,continu ...
- struts2的<constant/>标签使用
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...
- LR如何利用siteScope监控MySQL性能
本次实验,是在自己的电脑上使用APMServ5.2.6部署Discuz2.X论坛下,对该论坛的数据库MySQL5.1进行性能测试的,下面讲述LoadRunner在设计场景时,如何利用siteScope ...
- 【后缀数组】【poj2774】【 Long Long Message】
题意: 求两个串的最长连续子串. 我的想法: 枚举第二个串...在第一个串的后缀数组中二分查找. 复杂度NlogN.最坏情况N^2 题解: (3)height 数组:定义height[i]=suffi ...
- Android服务端本地窗口FramebufferNativeWindow
Android窗口系统 我们知道Android系统采用OpenGL来绘制3D图形,OpenGL ES提供了本地窗口(NativeWindow)的概念,无论是在Android平台中还是其他平台中,只要实 ...
- WinForm常用代码
//ToolStripSplitButton是标准按钮和下拉按钮的组合,各自工作,但有联系,感觉上后者是没有向下箭头ToolStripDropDownButton:ToolStripDropDownB ...
- android——ObjectAnimator动画
在新的android sdk中谷歌为我们提供了新的动画实现方式.化繁为简.将以前的animation动画进一步封装,使用起来更加方便. 先来看XML文件: <RelativeLayout xml ...
- 查看IIS进程id
Windows 2003 cscript C:\windows\system32\iisapp.vbs -a Windows 2008 C:\windows\system32\inetsrv\appc ...
- 反射操作辅助类ReflectionUtil
这篇文章的目的是介绍这样一种方式,就是在写一个函数的时候,传递的参数是object类型的,在这个函数里面想访问这个参数对象的某一属性值,我们知道这个属性值的name,但是一般情况下,object对象是 ...
- CDZSC_2015寒假新人(1)——基础 b
Description The highest building in our city has only one elevator. A request list is made up with N ...