题目描述

2130年,股神巴菲特投胎了!他投胎到你身上!

你作为股神转世,能力比原股神还要强,你可以预测到今后n天的股价。假设刚开始你的手上有1元钱,你想知道n天后你最多可以赚到多少钱。作为股神转世,你准备自己编程算答案。

每一天你都可以买股票、卖股票,当然也可以什么都不干。(到那时股票可以买卖分数股)

输入输出格式

输入格式

第一行一个数n(n≤1000000)。接下来n行,每行一个小数,代表每天的股价。

输出格式

一个数,代表最多能赚多少钱。(答案四舍五入,保留整数)

样例

INPUT

2

2.00

3.00

OUTPUT

2

HINT

样例解释 Sample Explanation:

第一天有现金1元,股价2.00元,可以买入0.5股;第二天股价3.00元,全部卖出,得现金:0.5*3.00=1.50元,四舍五入后金额为2。

SOLUTION

贪心

一开始我还想一堆乱七八糟的解法,单调性,最长子序列,什么价格一下跌就卖啥的,但是都觉得很奇怪,都可以轻松被自己hack掉,于是瞄了一眼AC的人的评测状态,woc,代码都这么短的吗???但还是没有思路。

最后还是戳了题解看。非常简单的做法。

我们保存两个值,一个是当前可以赚的钱数的最大值,另一个是当前可以持有股份的最大值。因为我们的操作非常单一,只有买进,卖出两种。所以我们要用手上的钱去在合适的时候买进卖出利滚利滚利滚利。

本题利用到了“可以买入,卖出,或者什么也不干”这个性质,于是用最优值更新相当于就是从上一次更新到下一个最优值的出现期间不做任何操作,从而保证可以用最优创造一个新的最优。

#include <iostream>
#include <cstdio>
using namespace std;
#define Min(a,b) ((a<b)?a:b)
#define Max(a,b) ((a>b)?a:b)
double hv=0,ans=1;
int main(){
int i,n;
scanf("%d",&n);
for (i=1;i<=n;++i){double x;
scanf("%lf",&x);
double rec=Max(ans,hv*x);//记录如果现在全部卖出的话的钱数
hv=Max(hv,ans/x);ans=rec;//记录如果用历史最大钱数来买的话能卖多少
}
printf("%0.0lf",ans);
return 0;
}

GYOJ_1812_股票(stock)的更多相关文章

  1. 六.Spring与RabbitMQ集成--stock trading(股票交易系统)

    周末继续写博客,算起来,关于rabbitMQ这个中间件的研究已经持续至两个星期了,上一篇文章使用sring amqp实现了同步和异步的消息接收功能.这一节继续实用spring amqp实现一个股票交易 ...

  2. 使用JSON数据格式模拟股票实时信息

    JQueryStock.html <!DOCTYPE html> <head> <meta charset="UTF-8"> <title ...

  3. Spring 事务详解

    实现购买股票案例: 一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: ? 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  4. Spring事务之详解--三种实现方式

    实现购买股票案例: 一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: /* * 账户 */ public class Accoun ...

  5. Spring 事务

    实现购买股票案例: 一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  6. 一些sql语句的常用总结(重要)

    select primary_flag from tc_contact where primary_flag !=0 select dept_id,dept_name,tree_level,tree_ ...

  7. Spring事务-三种实现方式

    一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  8. DL4J之CNN对今日头条文本分类

    一.数据集介绍 数据来源:今日头条客户端 数据格式如下: 6551700932705387022_!_101_!_news_culture_!_京城最值得你来场文化之旅的博物馆_!_保利集团,马未都, ...

  9. Python1--简介及基础语法

    0. 简介 Python易于学习的编程语言,有很多现成的第三方库可以调用,不用重复造轮子,老话说:"人生苦短,我用 Python" 1. 安装Python Mac:brew ins ...

随机推荐

  1. C#判断两个字符串是否相等的方法 ,还有char赋空值办法。

    string str1="Test"; string str2 = "Test"; if (str1==str2) //第一种判断方式 { //第二种判断方式 ...

  2. JavaSE--【JAVA】unicode为12288字符

    转载:http://blog.csdn.net/zfpigpig/article/details/8186470 今天做一个导入数据功能时发现一个问题,就是一个unicode为12288的字符显示为空 ...

  3. 常用的模型集成方法介绍:bagging、boosting 、stacking

    本文介绍了集成学习的各种概念,并给出了一些必要的关键信息,以便读者能很好地理解和使用相关方法,并且能够在有需要的时候设计出合适的解决方案. 本文将讨论一些众所周知的概念,如自助法.自助聚合(baggi ...

  4. python与mysql部分函数和控制流语法对比

    条件语句 python语法 a=int(input("输入一个数[0,100]成绩:")) if 100>=a>=90: print("优") el ...

  5. Git与IDEA集成

    软件配置: 系统版本:Windows10 JDK版本:1.8 Git版本:2.19.1 IDEA版本:2016.3 Maven版本:3.5.4 Git安装: Git下载地址:https://git-s ...

  6. springmvc register过程

    福建SEO:首先在AbstractHandlerMethodMapping中,在afterPropertiesSet这个钩子函数中,先初始化handlerMethods. 在detectHandler ...

  7. 表查询语句及使用-连表(inner join-left join)-子查询

    一.表的基本查询语句及方法 from. where. group by(分组).having(分组后的筛选).distinct(去重).order by(排序).  limit(限制) 1.单表查询: ...

  8. 画图认识--matplotlib.pyplot

    matplotlib的pyplot模块提供了和MATLAB类似的绘图API,方便用户快速绘制二维图表.我们先看一个简单的 import matplotlib.pyplot as plt import ...

  9. vue项目打包部署elementUI的字体图标丢失问题

    自己搭建的Vue项目,没有使用vue-cli,引入elementUI时,使用的是webpack直接打包工具,发现字体图标丢失你 记录一下解决办法: webpack module配置:(build目录下 ...

  10. spring自带的定时任务功能,基于注解和xml配置

    1.spring的配置文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&quo ...