小俎的股票交易市场
时间: 1ms 内存:256M
描述:
欢迎来到小俎的股票交易市场,由于我们现在的资源非常紧缺,因此只允许你交易一种股票。当然啦,我们也希望你可以在这里获利。
在清晨时,你有 $n$ 种机会可以购买股票,其中第 $i$ 种需要花费 $s_i$ 枚硬币购买,你可以购买任意数量的股票(硬币足够的情况下)。
在傍晚时,你有 $m$ 种机会可以出售股票,其中第 $i$ 种方案出售获得 $b_i$ 枚硬币,当然,你最多只能卖掉你持有的这些股票。
清晨时,你拥有 $r$ 枚硬币,在傍晚交易结束后请问你最多可以拥有多少枚硬币?
输入:
第一行输入三个整数 $n,m,r\ (1 \leq n \leq 30,1 \leq m \leq 30,1 \leq r \leq 1000)$。
接下来的一行输入 $n$ 个整数 $s_1,s_2,\dots,s_n$,其中 $1\le s_i \le 1000$。
最后的一行输入 $m$ 个整数 $b_1,b_2,\dots,b_m$,其中 $1 \le b_i \le 1000$。
输出:
输出一个整数,代表交易结束后你所能拥有的最大硬币数。
示例输入:
3 4 11
4 2 5
4 4 5 4
示例输出:
26
提示:
参考答案(内存最优[1120]):
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,r,maxn,minn,x;
int main()
{
scanf("%d%d%d",&n,&m,&r);
int minn=9999999,maxn=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
minn=min(minn,x);
}
for(int i=1;i<=m;i++)
{
scanf("%d",&x);
maxn=max(maxn,x);
}
if(minn>=maxn)
printf("%d",r);
else
{
int k=r/minn;
r%=minn;
r+=k*maxn;
printf("%d",r);
}
}
参考答案(时间最优[1]):
#include<stdio.h>
int main()
{
int n,m,r;
int s,b;
scanf("%d%d%d",&n,&m,&r);
int n1[n],m1[m];
int i,s1,s2;
int max=-1,min=1000;
for(i=0;i<n;i++)
{
scanf("%d",&n1[i]);
if(n1[i]<min)
min=n1[i];
}
for(i=0;i<m;i++)
{
scanf("%d",&m1[i]);
if(m1[i]>max)
max=m1[i];
}
s1=r%min;
s2=r/min;
s2=s2*max+s1;
if(s2>r)
{
printf("%d\n",s2);
}
else
printf("%d\n",r);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。