题目链接: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. location - 修改url后 - 重新加载

    window.location.href = window.location.pathname + search;

  2. 洛谷 P1043 数字游戏

    题目传送门 解题思路: 跟石子合并差不多,区间DP(环形),用f[i][j][s]表示从i到j分成s段所能获得的最大答案,枚举断点k,则f[i][j][s] = min(f[i][j][s],f[i] ...

  3. Python之日志处理(logging模块)《转载》

    Python之日志处理(logging模块): https://www.cnblogs.com/yyds/p/6901864.html

  4. jQuery下拉框联动(JQ遍历&JQ中DOM操作)

    1.下载jQuery,并导入:https://blog.csdn.net/weixin_44718300/article/details/88746796 2.代码实现: <!DOCTYPE h ...

  5. javascript中new操作符的原理

    javascript中的new是一个语法糖,对于学过c++,java 和c#等面向对象语言的人来说,以为js里面是有类和对象的区别的,实现上js并没有类,一切皆对象,比java还来的彻底 new的过程 ...

  6. Unity3D 协程的介绍和使用

    我是快乐的搬运工 http://blog.csdn.net/u011397120/article/details/61236055 ---------------------------------- ...

  7. POJ 1836:Alignment

    Alignment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 14492   Accepted: 4698 Descri ...

  8. 查询内核符号链接的信息的API

    NtOpenSymbolicLinkObject和NtQuerySymbolicLinkObject获取指定符号链接的信息 版权声明:本文为博主原创文章,未经博主允许不得转载.

  9. 基于python的小波阈值去噪算法

    https://blog.csdn.net/alwaystry/article/details/52756051 发表于 2018-01-10 16:32:17 嵌入式设计应用 +关注 小波图像去噪原 ...

  10. Html 常见标签,css基础样式,css的浮动和清流,浏览器的兼容

    1.html模板<!DOCTYPE html><html><head> <meta charset="UTF-8"> <tit ...