题目出处

题目描述:

这个题的意思是:

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

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

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

数据规模:

每组数据包含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. Java中的浅复制和深复制 Cloneable clone

    先看一个简单案例 public class Test {     public static void main(String args[]) {         Student stu1 = new ...

  2. ASP.NET-FineUI开发实践-15

    1.按条件控制Grid不可编辑     Grid编辑其实用到的不多...但是也有要控制权限或者其他条件不能编辑的情况其实挺简单,学过extjs的知道,我现在也只是写前台了,没有写到后台事件,有时间再说 ...

  3. document.all用法

    document.all用法 一. document.all是页面内所有元素的一个集合.例如:       document.all(0)表示页面内第一个元素二.document.all可以判断浏览器 ...

  4. 生成PDF并下载。

    例子是生成一个pdf格式的证书: //创建Document Document document = null; //为该Document创建一个Writer实例 PdfWriter writer = ...

  5. Linux下svn命令switch用法

    # svn info /data/www/49you/api.49you.com Path: /data/www/49you/api.49you.comURL: svn://192.168.10.81 ...

  6. Java多线程和线程池

    转自:http://blog.csdn.net/u013142781/article/details/51387749 1.为什么要使用线程池 在Java中,如果每个请求到达就创建一个新线程,开销是相 ...

  7. 跟我学android-Android应用基本组件介绍(五)

    Activity activity 是最基本的模块,我们成为活动,一个activity通常就是一个单独的屏幕,每一个活动都被实现为一个独立的类,且都继承活动的基类.在activity的实现类里显示用户 ...

  8. php把excel数值格式转成日期格式问题

    在excel中:40847对应2011-10-31,是日期的数值型表现形式. 在PHP中,echo date('Y-m-d H:i:s',40847);//结果1970-01-01 11:52:30 ...

  9. mysql操作之二

    特殊数据类型 表约束 表连接 索引 触发器 安全性 DB设计 alter table student modify id int primary key; 主銉不可重复修改 alter table s ...

  10. 简化的nginx多进程模型demo

    //version 1:以下代码仅演示nginx多进程模型[test@vm c]$ cat mynginx.c#include <stdio.h> #include <string. ...