D - Daydreaming Stockbroker Gym - 101550D
题目链接: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的更多相关文章
- Daydreaming Stockbroker(2016 NCPC 贪心)
题目: Gina Reed, the famous stockbroker, is having a slow day at work, and between rounds of solitaire ...
- Urozero Autumn 2016. NCPC 2016
A. Artwork 倒过来并查集维护即可. #include<cstdio> #include<algorithm> using namespace std; const i ...
- NCPC 2016:简单题解
A .Artwork pro:给定N*M的白色格子,然后Q次黑棒,输出每次加黑棒后白色连通块的数量.(N,M<1e3, Q<1e4) sol:倒着离线做,并查集即可. (在线做法:http ...
- Nordic Collegiate Programming Contest (NCPC) 2016
A Artwork B Bless You Autocorrect! C Card Hand Sorting D Daydreaming Stockbroker 贪心,低买高卖,不要爆int. #in ...
- ACM ICPC 2017 Warmup Contest 1 D
Daydreaming Stockbroker Gina Reed, the famous stockbroker, is having a slow day at work, and between ...
- 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 ...
- ACM: Gym 101047K Training with Phuket's larvae - 思维题
Gym 101047K Training with Phuket's larvae Time Limit:2000MS Memory Limit:65536KB 64bit IO F ...
- ACM: Gym 101047E Escape from Ayutthaya - BFS
Gym 101047E Escape from Ayutthaya Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I6 ...
- ACM: Gym 101047B Renzo and the palindromic decoration - 手速题
Gym 101047B Renzo and the palindromic decoration Time Limit:2000MS Memory Limit:65536KB 64 ...
随机推荐
- Java工程师面试题
1. J2EE 是什么?它包括哪些技术?解答:从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物.适用于企业级应用的 J2E ...
- Sublime Text与LaTeX的结合
1.通过Command Palette安装LaTeXTools 2.通过Command Palette查找LaTeXTools: Reconfigure and migrate settings,回车
- Java9,8,7中接口的内容
在Java 9+版本中,接口的内容可以有: 1:成员变量其实是常量格式:[public][static][final] 数据类型 常量名称 =数据值:注意: 常量必须进行赋值,而且一旦赋值不能改变 常 ...
- 【分类问题中模型的性能度量(二)】超强整理,超详细解析,一文彻底搞懂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 ...
- vue仿写taobao
1.less () cnpm install less less-loader --save ()在webpack.base.conf.js里 { test:/\.less$/, loader:'st ...
- shell字典使用
1.shell界面或脚本中 pcode=(["10"]="BeiJing" ["22"]="TianJin") echo ...
- Arduino学习——u8glib库资料整理
第一部分,u8glib标准语法格式: 本文使用的是DFRobot出品的LCD12864 Shield V1.0 端口占用情况: SPI Com: SCK = 13, MOSI = 11, CS = 1 ...
- 尝试解决 : Microsoft Visual C++ 14.0 is required 的问题
当在pycharm 中安装 gevent 的时候 发生了 错误 晚上搜索的时候发现 解决问题有两种 方法 1 是 下载 whl 文件 通过二进制的方式 导入模块的包 想了想 ...
- HashMap面试总结
作者:孤独烟 出处: http://rjzheng.cnblogs.com/ 文章由点及线再及面,写的非常好.修改部分内容 (1) HashMap的实现原理 看过HashMap源码吗,知道原理吗? h ...
- HTML超链接实例介绍
<html><head><title>第六节课</title><meta charset="UTF-8"></he ...