小俎的股票交易市场

时间: 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;

}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。