题目链接:http://codeforces.com/gym/101550/attachments

总的来说就是要:

极大值卖出,极小值买入, 再加上端点时的特判. 还有就是会有连续几天股票价格相同的情况,这里就是判断的时候是严格的大于小于号的功劳了

首先手里肯定是没有股票的, 尝试买入第一天的股票, 如果下一天的股票价格低于当天的股票价格,我们就再卖出当前的所有股票来让下一天再去尝试买入股票.

除了第一天尝试买入股票的时候, 买入股票的时候应该是极小值, 我们可以一次次尝试:(如果当天的价格低于前一天的价格,就说明呈递减状态,就有可能遇到极小值,如果当前不是极小值,我们就再将买入的股票卖出就好了,然后继续尝试). 如果当前的价格高于后一天的价格,就可以卖出.

总之,买入的时候和上一天价格比较判断呈现什么状态,若递减,就可以尝试买入,(不符合条件就再卖出去么~). 卖出的时候和下一天价格比较判断呈现什么状态,若递减就说明可以卖出去,(注意:不能和上一天的价格比较看是否是递增状态就卖,因为卖出后股票就没有了,就需要重新买入,若后一天还是递增就不行了)

实现最精华的就是那个,尝试部分,(若当前尝试买入的不是最优的,就需要重新卖出,这也就是为什么循环里,两个if都要判断一下的原因,而且还是尝试买入为

a[i-1]和a[i]判断状态,卖出时为a[i]和a[i+1]判断状态的原因.)

自己在本子上画上几个图,横轴代表时间,纵轴代表价格, 折线图即可,画出每种状态的简图,自己模拟一下,应该就可以了.

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int maxn = 1e4 + ;

ll arr[maxn];

int main(){
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++) scanf("%lld", &arr[i]);
ll all = , now = ;
for(int i = ; i <= n; i++) {
if(i == || arr[i-] > arr[i]) {//尝试买入
ll t = all / arr[i];
now += t;
all -= t*arr[i];
if(now > ) {
all += (now-)*arr[i];
now = ;
}
}
if(i == n || arr[i+] < arr[i]) all += arr[i]*now, now = ;
}
printf("%lld\n", all);
return ;
}

D - Daydreaming Stockbroker Gym - 101550D的更多相关文章

  1. Daydreaming Stockbroker(2016 NCPC 贪心)

    题目: Gina Reed, the famous stockbroker, is having a slow day at work, and between rounds of solitaire ...

  2. Urozero Autumn 2016. NCPC 2016

    A. Artwork 倒过来并查集维护即可. #include<cstdio> #include<algorithm> using namespace std; const i ...

  3. NCPC 2016:简单题解

    A .Artwork pro:给定N*M的白色格子,然后Q次黑棒,输出每次加黑棒后白色连通块的数量.(N,M<1e3, Q<1e4) sol:倒着离线做,并查集即可. (在线做法:http ...

  4. Nordic Collegiate Programming Contest (NCPC) 2016

    A Artwork B Bless You Autocorrect! C Card Hand Sorting D Daydreaming Stockbroker 贪心,低买高卖,不要爆int. #in ...

  5. ACM ICPC 2017 Warmup Contest 1 D

    Daydreaming Stockbroker Gina Reed, the famous stockbroker, is having a slow day at work, and between ...

  6. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力

     Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Fo ...

  7. ACM: Gym 101047K Training with Phuket's larvae - 思维题

     Gym 101047K Training with Phuket's larvae Time Limit:2000MS     Memory Limit:65536KB     64bit IO F ...

  8. ACM: Gym 101047E Escape from Ayutthaya - BFS

    Gym 101047E Escape from Ayutthaya Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  9. ACM: Gym 101047B Renzo and the palindromic decoration - 手速题

     Gym 101047B  Renzo and the palindromic decoration Time Limit:2000MS     Memory Limit:65536KB     64 ...

随机推荐

  1. Java工程师面试题

    1. J2EE 是什么?它包括哪些技术?解答:从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物.适用于企业级应用的 J2E ...

  2. Sublime Text与LaTeX的结合

    1.通过Command Palette安装LaTeXTools 2.通过Command Palette查找LaTeXTools: Reconfigure and migrate settings,回车

  3. Java9,8,7中接口的内容

    在Java 9+版本中,接口的内容可以有: 1:成员变量其实是常量格式:[public][static][final] 数据类型 常量名称 =数据值:注意: 常量必须进行赋值,而且一旦赋值不能改变 常 ...

  4. 【分类问题中模型的性能度量(二)】超强整理,超详细解析,一文彻底搞懂ROC、AUC

    文章目录 1.背景 2.ROC曲线 2.1 ROC名称溯源(选看) 2.2 ROC曲线的绘制 3.AUC(Area Under ROC Curve) 3.1 AUC来历 3.2 AUC几何意义 3.3 ...

  5. vue仿写taobao

    1.less () cnpm install less less-loader --save ()在webpack.base.conf.js里 { test:/\.less$/, loader:'st ...

  6. shell字典使用

    1.shell界面或脚本中 pcode=(["10"]="BeiJing" ["22"]="TianJin") echo ...

  7. Arduino学习——u8glib库资料整理

    第一部分,u8glib标准语法格式: 本文使用的是DFRobot出品的LCD12864 Shield V1.0 端口占用情况: SPI Com: SCK = 13, MOSI = 11, CS = 1 ...

  8. 尝试解决 : Microsoft Visual C++ 14.0 is required 的问题

    当在pycharm  中安装  gevent 的时候 发生了  错误   晚上搜索的时候发现  解决问题有两种 方法 1  是   下载  whl  文件  通过二进制的方式 导入模块的包   想了想 ...

  9. HashMap面试总结

    作者:孤独烟 出处: http://rjzheng.cnblogs.com/ 文章由点及线再及面,写的非常好.修改部分内容 (1) HashMap的实现原理 看过HashMap源码吗,知道原理吗? h ...

  10. HTML超链接实例介绍

    <html><head><title>第六节课</title><meta charset="UTF-8"></he ...