题目描述

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. mysql 创建帐号出现 Access denied for user 'root'@'localhost'错误(转载)

    从供应商那边接手一个MySQL数据库(数据库版本为5.7.21 MySQL Community Server (GPL)),在创建账号时遇到了“ERROR 1044 (42000): Access d ...

  2. python3拆包详解

    对于可迭代对象,如元组.列表.字符串.集合.字典这些可迭代对象都可以被拆包,拆包是指将一个结构中的数据拆分为多个单独变量中.拆包的方式大致有两种,一种是以变量的方式来接收,另一种是用'*'号.下面先讲 ...

  3. linux mysql备份数据库

    $ mysqldump -u root -p 数据库名称 > beifen.sql 恢复 source beifen.sql

  4. JavaScript学习笔记 - 进阶篇(6)- JavaScript内置对象

    什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...

  5. List集合分组依据集合中对象的属性

    直接上代码 用到了Spring的BeanWrapper类 public static <T, K> Map<K, List<T>> groupByProperty( ...

  6. Iterator接口(迭代器)的使用

    Iterator接口(迭代器) 前言 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator.Iterator接口也是Java集合中的一 ...

  7. zabbix server in not running

    修改配置文件 vi zabbix.conf.php 修改lochlhost为 自己服务器的IP地址 修改$DB['SERVER']   = '192.168.30.6'; 修改$ZBX_SERVER  ...

  8. 2018 ACM-ICPC 宁夏 C.Caesar Cipher(模拟)

    In cryptography, a Caesar cipher, also known as the shift cipher, is one of the most straightforward ...

  9. winform显示word和ppt文档

    最近所做的项目中需要在Winform窗体中显示Office文档.刚开始就使用webBrowser控件实现的,但是后来发现这个控件在显示Office文档的时候有个限制:只支持Office2003之前的版 ...

  10. 变得“不正经”的CES,竟然越来越好玩了

    在所有科技界的展会中,国人最熟悉的当属CES.作为科技行业的风向指示标,CES一直在扮演着重要的潮流指引者角色.不过,现在的CES似乎变得越来越"不正经"了!原本CES是国际消费类 ...