青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Tim's Programming Space  
Tim's Programming Space
日歷
<2010年1月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
統計
  • 隨筆 - 20
  • 文章 - 1
  • 評論 - 40
  • 引用 - 0

導航

常用鏈接

留言簿(3)

隨筆檔案

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 

股票交易

 

題目描述】

最近lxhgww又迷上了投資股票,通過一段時間的觀察和學習,他總結出了股票行情的一些規律。

通過一段時間的觀察,lxhgww預測到了未來T天內某只股票的走勢,第i天的股票買入價為每股APi,第i天的股票賣出價為每股BPi(數據保證對于每個i,都有APi>=BPi),但是每天不能無限制地交易,于是股票交易所規定第i天的一次買入至多只能購買ASi股,一次賣出至多只能賣出BSi股。

另外,股票交易所還制定了兩個規定。為了避免大家瘋狂交易,股票交易所規定在兩次交易(某一天的買入或者賣出均算是一次交易)之間,至少要間隔W天,也就是說如果在第i天發生了交易,那么從第i+1天到第i+W天,均不能發生交易。同時,為了避免壟斷,股票交易所還規定在任何時間,一個人的手里的股票數不能超過MaxP

在第1天之前,lxhgww手里有一大筆錢(可以認為錢的數目無限),但是沒有任何股票,當然,T天以后,lxhgww想要賺到最多的錢,聰明的程序員們,你們能幫助他嗎?

【輸入】

輸入數據第一行包括3個整數,分別是TMaxPW

接下來T行,第i行代表第i-1天的股票走勢,每行4個整數,分別表示APiBPiASiBSi

【輸出】

輸出數據為一行,包括1個數字,表示lxhgww能賺到的最多的錢數。

【樣例輸入】

5 2 0

2 1 1 1

2 1 1 1

3 2 1 1

4 3 1 1

5 4 1 1

【樣例輸出】

    3

【數據范圍】

   對于30%的數據,0<=W<T<=50,1<=MaxP<=50

   對于50%的數據,0<=W<T<=2000,1<=MaxP<=50

   對于100%的數據,0<=W<T<=2000,1<=MaxP<=2000

 

   對于所有的數據,1<=BPi<=APi<=1000,1<=ASi,BSi<=MaxP

 =================================================================================
首先寫個裸的DP:
f[i][j] 表示前i天并且第i天可以操作,手里有j股股票的時候最多能賺多少錢,轉移為:
f[i][j] = max{f[i-1][j],  //不干事
                  f[i-W-1][j-k] - AP[i-W-1] * k, // 買 , i-W-1>=0 && j-k>=0 && k<=AS[i-W-1]
                  f[i-W-1][j+k] + BP[i-W-1] * k} // 賣, i-W-1>=0 && j+k<=MaxP && k<=BS[i-W-1]
復雜度O(T * MaxP^2)
為了優化復雜度,我們考慮在某一天i時,上一次可以操作的時間為t = i-W-1
令g[j] = f[t][j],  h[j] = f[i][j]
不考慮不干事的轉移則有:

   h[j] = max{g[j-k] - AP[t] * k,
                     g[j+k] + BP[t] * k}
令p = j-k則:
   h[j] = max{g[p] - AP[t] * (j-p),  ................(1)
                     g[p] + BP[t] * (p-j)} ................(2)
考慮轉移(1) 發現,h[j]的轉移都是在前面固定的一天的j之前的不超過AS[t]的一段區間轉移過來,于是考慮用單調隊列。
但轉移的值會隨著j的改變而改變,無法用單調隊列,所以考慮化簡式子:
如果有p,q滿足p,q∈[j-AS[t], j-1] 且 g[p] - AP[t] * (j - p) > g[q] - AP[t] * (j - q), 則對于狀態j來說,決策p要優于決策q
化簡得:g[p] + p * AP[t] > g[q] + q * AP[t],即決策的好壞由本身決定,與所要轉移的狀態無關。
轉移(2)類似。
所以可以用單調隊列維護g[p] + p * AP[t],使轉移均攤O(1),總復雜度降到O(T * MaxP)

#include <iostream>
#define MAXN 4010
#define MAXP 2010
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define INFINITE (1<<30)
#define MAX(a,b) ((a) > (b) ? (a) : (b))

using namespace std;

int T,MaxP,W;
int AP[MAXN+1], BP[MAXN+1], AS[MAXN+1], BS[MAXN+1];
int n;
void Init(){
     scanf(
"%d%d%d",&n,&MaxP,&W);
     
for (int i = 1; i<=n; i++)
         scanf(
"%d%d%d%d",&AP[i],&BP[i],&AS[i],&BS[i]);
}


int f[MAXN+1][MAXP+1];

int Ans = 0;
void Renew(int i, int j, int v){
     
if (i > n)
        Ans 
= MAX(Ans, v);
     
else
         f[i][j] 
= MAX(f[i][j], v);
}


class Queue{
      
public:
             
int head,tail,len;
             
int v[MAXP+1];
             
int p[MAXP+1];
             
void clear(){
                  head 
= 1, tail = 0;
             }

             
void set(int len){
                  
this->len = len;
             }

             
void push(int pos, int val){
                  
if (head<=tail && abs(pos - p[head])-1 > len) head++;
                  
while (head<=tail && v[tail] <= val) tail--;
                  p[
++tail] = pos, v[tail] = val;
             }

             
int front(int j){
                 
while (head<tail && abs(j-p[head]) > len) head++;
                 
return p[head];
             }

}
q;
void Solve(){
     
for (int i = 0; i<=n+W+1; i++)
         
for (int j = 1; j<=MaxP; j++)
             f[i][j] 
= -INFINITE;
     
for (int i = 1; i<=n; i++){
         
for (int j = 1; j<=AS[i]; j++)
             f[i
+W+1][j] = - AP[i] * j;
         
for (int j = AS[i]+1; j<=MaxP; j++)
             f[i
+W+1][j] = -INFINITE;
     }

     
int asdf = 0;
     
for (int i = 1; i<=n+W+1; i++){
         
for (int j = 0; j<=MaxP; j++)
             f[i][j] 
= MAX(f[i][j], f[i-1][j]);
         
int t;
         
/*
            g[j] - AP * (i - j) > g[k] - AP * (i - k)
            g[j] + AP * j > g[k] + AP * k
            
            g[j] + BP * (j - i) > g[k] + BP * (j - i)
            g[j] + BP * j > g[k] + BP * j
          
*/

         
if ((t = i-W-1>= 1){
             
// Buy
             q.clear(); q.set(AS[t]);
             q.push(
0, f[t][0]);
             
for (int j = 1; j<=MaxP; j++){
                 
int tmp = q.front(j);
                 f[i][j] 
= MAX(f[i][j], f[t][tmp] - AP[t] * (j - tmp));
                 q.push(j, f[t][j] 
+ AP[t] * j);
             }

             
// Sell
             q.clear(); q.set(BS[t]);
             q.push(MaxP,f[t][MaxP] 
+ BP[t] * MaxP);
             
for (int j = MaxP-1; j>=0; j--){
                 
int tmp = q.front(j);
                 f[i][j] 
= MAX(f[i][j], f[t][tmp] + BP[t] * (tmp - j));
                 q.push(j, f[t][j] 
+ BP[t] * j);
             }

             
for (int j = 0; j<=MaxP; j++)
                 Ans 
= MAX(Ans, f[i][j]);
         }

     }

     printf(
"%d\n",Ans);
}


int main(){
    freopen(
"trade.in","r",stdin);
    freopen(
"trade.out","w",stdout);
    Init();
    Solve();
    
return 0;
}


posted on 2010-04-08 09:37 TimTopCoder 閱讀(438) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
Copyright © TimTopCoder Powered by: 博客園 模板提供:滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美韩国| 一区二区黄色| 免费成人av在线| 久久嫩草精品久久久精品| 欧美在线观看你懂的| 性欧美精品高清| 久久精品九九| 欧美超级免费视 在线| 欧美成人官网二区| 欧美日韩三区| 国产视频观看一区| 亚洲国产精品尤物yw在线观看| av成人手机在线| 欧美一进一出视频| 嫩草国产精品入口| 一区二区三区高清在线观看| 久久成人人人人精品欧| 欧美啪啪一区| 国产亚洲欧美另类一区二区三区| 亚洲激情成人在线| 欧美中文字幕第一页| 欧美激情视频给我| 亚洲一区免费在线观看| 蜜桃av一区二区| 国产精品一区在线观看你懂的| 在线观看欧美日韩| 亚洲一区亚洲二区| 亚洲第一页中文字幕| 亚洲啪啪91| 午夜久久久久| 亚洲国产精品国自产拍av秋霞| 亚洲校园激情| 欧美成人资源网| 狠狠久久综合婷婷不卡| 亚洲图中文字幕| 麻豆精品在线观看| 午夜国产欧美理论在线播放| 欧美久久99| 亚洲国产视频一区| 中日韩高清电影网| 欧美国产精品专区| 久久久精彩视频| 国产一区二区三区成人欧美日韩在线观看| 一区二区欧美在线| 亚洲区一区二区三区| 免费看亚洲片| 一区在线播放视频| 久久久久国产一区二区三区四区| 一区二区三区日韩| 欧美日韩国产一区二区| 亚洲国产影院| 欧美国产高潮xxxx1819| 久久久久九九视频| 在线免费观看欧美| 久久综合久久久| 久久久久成人精品免费播放动漫| 国产一区二区三区奇米久涩 | 亚洲社区在线观看| 亚洲第一在线综合在线| 久久综合狠狠综合久久激情| 国内伊人久久久久久网站视频| 欧美在线不卡| 欧美一区日韩一区| 一区二区在线不卡| 免费不卡在线观看av| 久久视频一区二区| 亚洲国产精品成人va在线观看| 欧美国产一区视频在线观看| 欧美国产三区| 亚洲女人av| 午夜视频在线观看一区二区三区 | 欧美国产日韩一区二区| 久色成人在线| 亚洲欧洲一区二区在线观看| 亚洲电影在线免费观看| 欧美极品欧美精品欧美视频| 一区二区三区四区五区在线| 在线亚洲一区二区| 国产美女搞久久| 美女被久久久| 欧美精品久久99| 亚洲欧美日韩爽爽影院| 久久aⅴ国产欧美74aaa| 欧美成人中文字幕在线| 亚洲视频免费看| 性欧美18~19sex高清播放| 激情小说另类小说亚洲欧美 | 欧美影院成人| 亚洲欧洲精品一区| 亚洲一区二区在线免费观看| 极品中文字幕一区| 亚洲乱码国产乱码精品精| 国产精品一区二区三区免费观看| 另类欧美日韩国产在线| 欧美日韩综合另类| 免费不卡亚洲欧美| 国产乱肥老妇国产一区二| 欧美护士18xxxxhd| 国产精品有限公司| 亚洲第一区在线观看| 国产麻豆综合| 亚洲三级色网| 狠狠色综合网| 亚洲视频自拍偷拍| 亚洲人成毛片在线播放| 欧美在线www| 亚洲欧美成人在线| 欧美凹凸一区二区三区视频| 久久精品国产欧美亚洲人人爽| 欧美高清在线观看| 另类av一区二区| 国产精品稀缺呦系列在线| 欧美高清视频在线播放| 极品尤物av久久免费看 | 欧美视频1区| 女女同性精品视频| 国产美女搞久久| 亚洲精品一品区二品区三品区| 国产一区二区三区电影在线观看| 一区二区三区视频在线看| 亚洲精美视频| 久久婷婷影院| 久久久久五月天| 国产午夜精品理论片a级探花| 亚洲欧洲精品一区二区三区| 在线国产精品播放| 欧美在线日韩| 欧美一级视频免费在线观看| 欧美日韩精品在线| 亚洲人成人一区二区三区| 亚洲国产成人精品久久久国产成人一区| 亚洲一区二区三区777| 亚洲午夜在线视频| 欧美日韩1区2区| 亚洲激情在线视频| 亚洲精品之草原avav久久| 久久婷婷国产综合精品青草| 久久视频国产精品免费视频在线| 国产免费成人在线视频| 亚洲午夜在线观看| 欧美尤物巨大精品爽| 国产日产欧美一区| 亚洲永久字幕| 久久精品噜噜噜成人av农村| 国产综合欧美在线看| 欧美在线3区| 欧美成人免费在线观看| 亚洲精品乱码久久久久久日本蜜臀| 亚洲区一区二区三区| 日韩一级精品视频在线观看| 欧美成人精品1314www| 亚洲韩日在线| 亚洲在线观看免费| 国产视频观看一区| 午夜精品久久久久久久99热浪潮 | 亚洲二区在线视频| 最新日韩中文字幕| 欧美高清你懂得| 9久草视频在线视频精品| 亚洲综合视频一区| 国产日韩欧美精品在线| 久久九九久精品国产免费直播| 老色鬼久久亚洲一区二区| 最新日韩在线| 国产精品免费视频xxxx| 久久精品女人天堂| 亚洲欧洲日韩女同| 欧美在线免费播放| 91久久极品少妇xxxxⅹ软件| 欧美三级不卡| 久久久久久黄| 99成人精品| 美女精品在线观看| 一本久久a久久免费精品不卡| 国产欧美一区二区精品仙草咪| 六月婷婷久久| 午夜精品一区二区三区在线播放| 欧美成人日本| 亚洲男女毛片无遮挡| 91久久夜色精品国产九色| 国产九九精品视频| 欧美精品午夜| 久久九九热免费视频| 一个色综合导航| 亚洲国产精品va在线看黑人| 欧美专区在线观看| 一区二区电影免费在线观看| 极品av少妇一区二区| 国产精品成人国产乱一区| 久久综合九色| 午夜视频在线观看一区二区三区| 亚洲靠逼com| 亚洲国产精品女人久久久| 巨乳诱惑日韩免费av| 欧美在线一二三四区| 性色av一区二区三区| 一区二区三区高清在线观看| 亚洲国内自拍| 伊人狠狠色j香婷婷综合| 国产女同一区二区|