题目出处

题目描述:

这个题的意思是:

给出一段时间内 某个股票的每天的价格

每天可以进行的操作有:买一股,卖掉所有股,不作为

问在给定的序列里怎样让价值最大

数据规模:

每组数据包含case数 T(<=10)

每个case中 股票的天数n(<=50000)

每个股票的价格vi(1<=vi<=100000)

弱智思路:

本人的弱智思路是这样的,因为这一个题目被分在了dp分类之中,于是各种蛋疼,dp[i]表示在第i天能达到的最大价值,于是有转移方程:

dp[i] = dp[j]+v[i]*(i-j+1)-从i-j的股票价格之和(j从0到i)

然后悠然自得地写了如下代码交了:

 #include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std; const int MAXN = ; int a[MAXN];
long long dp[MAXN];
int n; void input(){
cin>>n;
for ( int i = ; i <= n; i++ ){
cin>>a[i];
}
memset(,sizeof(dp),);
} long long MAX( long long a, long long b ){
return a > b ? a : b ;
} void solve(){
for ( int i = ; i <= n; i++ ){
long long v = ;
dp[i] = dp[i-];
if ( a[i] > a[i-] ){
for ( int j = i-; j >= ; j-- ){
v += a[j];
dp[i] = MAX(dp[i],dp[j]-v+a[i]*(i-j));
}
}
}
cout<<dp[n]<<endl;
} void deal(){
int t;
cin>>t;
while ( t-- ){
input();
solve();
} } int main() {
deal();
return ;
}

弱爆了

然后就超时了

思考了好几天状态压缩的DP,还是各种WA,无奈之下做了伸手党要来了Lazy的代码:

  #include <cstdio>
using namespace std; const int MAXN = + ; int N;
int p[MAXN]; void input() {
scanf("%d", &N);
for (int i=; i<N; ++i) {
scanf("%d", &p[i]);
}
} void solve() {
long long rev = ;
int max_p = p[N-];
for (int i=N-; i>=; --i) {
if (p[i] < max_p) {
rev += max_p - p[i];
} else {
max_p = p[i];
}
} printf("%lld\n", rev);
} int main() {
int t;
scanf("%d", &t);
for (int i=; i<t; ++i) {
input();
solve();
}
}
快捷回复给:转身/;!孤单

碉堡了

然后恍然大悟:

这题目实际上是一个贪心,最后的价格最大就可以保证总价值最大,因此从后往前扫,并且更新max_p的值。最后输出结果

反省一下:

在思考这个题目的时候上述规律我也是发现了的,但是没有犯过头来倒着想,对编码和思考带来了很大的难度,最后还是失败了。以后思维还是灵活一点比较好.

gg~~

逆向思维Stock Maximize的更多相关文章

  1. HackerRank# Stock Maximize

    原题地址 不知道为什么要用动态规划做,明明是扫几遍就行了啊 HackerRank上的题目特别喜欢long long类型啊,不用就爆.. 代码: #include <cmath> #incl ...

  2. Introduction to Financial Management

    Recently,i am learning some useful things about financial management by reading <Essentials of Co ...

  3. LeetCode_Best Time to Buy and Sell Stock III

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  4. Leetcode - 309. Best Time to Buy and Sell Stock with Cooldown

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  5. zoj 2921 Stock(贪心)

    Optiver sponsored problem. After years of hard work Optiver has developed a mathematical model that ...

  6. USACO Stock Market

    洛谷 P2938 [USACO09FEB]股票市场Stock Market 洛谷传送门 JDOJ 2625: USACO 2009 Feb Gold 2.Stock Market JDOJ传送门 题目 ...

  7. Leetcode No.121 Best Time to Buy and Sell Stock(c++实现)

    1. 题目 1.1 英文题目 You are given an array prices where prices[i] is the price of a given stock on the it ...

  8. 【leetcode】121. Best Time to Buy and Sell Stock(股票问题)

    You are given an array prices where prices[i] is the price of a given stock on the ith day. You want ...

  9. [LeetCode] Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

随机推荐

  1. 完美解决Android完全退出程序(转)

    背景:假说有两个Activity, Activity1和Activity2, 1跳转到2,如果要在2退出程序,一般网上比较常见的说法是用 System.exit(0) 或是 android.os.Pr ...

  2. 动态用javascript来修改单选框性别

    <script> window.onload=function(){ if(<{$data.sex}>==0){//<{$data.sex}>是在数据读出来: do ...

  3. 对话框 自定义 IOS风格 包青天

    activity     private void showDialog1() {         message = "您输入的邮箱后缀不是公司邮箱地址\n将导致您的借款审核不通过,请重新 ...

  4. net 关于系统性能调优了解和看法

    系统性能调优这是每个大中型项目的必要手段,当系统运行积累到一定量的时候 这个时候就需要一个质变的过程那这个时候就少不了优化和调整 (前几天看了一篇文章 感觉写的挺好,也挺实在的  链接:http:// ...

  5. Jquery分步学习一

    <script type="text/javascript" src="../js/jquery-1.11.0.js"></script> ...

  6. 获取Html中所有img的src

    /// <summary> /// 获取所有Img中的Src /// </summary> /// <param name="htmlText"> ...

  7. 使用OpenFileDialog实现图片上传

    demo效果图:

  8. 使用第三方框架 Masonry 实现自动布局

    使用第三方框架 Masonry 实现自动布局 时间:2015-02-10 11:08:41      阅读:4595      评论:0      收藏:0      [点我收藏+] 标签: 由于前两 ...

  9. Cloud Foundry中 JasperReports service集成

    Cloud Foundry作为业界第一个开源的PaaS解决方案,正越来越多的被业界接受和认可.随着PaaS的发展,Cloud Foundry顺应潮流,充分发挥开源项目的特点,到目前为止,已经支持了大批 ...

  10. (转载)最实用的清除浮动代码 css的文字过长裁剪后面跟着省略号

    css: .clearfloat:after{display:block;clear:both;content:"";visibility:hidden;} .clearfloat ...