• <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>

            雁過無痕

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::

            《編程之美》讀書筆記041.8 小飛的電梯調度算法

             

            假設電梯有n層,上樓要消耗能量k1,下樓要消耗能量k2,用a[i]表示要在第i層下的人數,Si為到i層時已經下(包括i層)的總人數,則總人數S=Sn。若用F(i)表示電梯在i層停時要消耗的總能量,則電梯在i+1層停時,有Si人要多下一層,(S-Si)人少上一層。則:  

            F(i+1) = F(i) + k2*Si - k1*(S-Si) = F(i) + (k2+k1)*Si – k1*S F(i) + G(i)

            (定義G(i) = (k2+k1)*Si – k1*S

             

            由于Si是遞增的,G(i)也是遞增的,當G(i) <= 0F(i+1) <= F(i),“求使F(i)最小的i”問題等同于 “求使G(i)(k2+k1)*Si – k1*S  <= 0的最大i”(所得i+1即為原問題的解),或 “求使G(i)(k2+k1)*Si – k1*S  >= 0的最小i”(所得i值即為原問題的解)。注意:等號可取可不取。

             

            對書上原題:k1=k2=1G(i)=2*Si – S >= 0,可以掃描數組兩遍,第一遍算出S,第二遍算出使 2*Si – S < 0 的最大i值。也可以只掃找一遍,用兩個指針分別指向數組的開頭和結尾,一個向前移動,一個向后移動,并同時開始計算最前幾個數的和S2, i和最后幾個數的和Sj, n,通過調整兩個指針位置,使S2, i<= Sj, n總成立并使i盡可能的大,這樣掃描完畢,

            2*S2, i <= S2, i + Si+1, n = S,且 2*S2, i+1 >= S

             

            (書中解法二的分析與給出的代碼不對應,只有證明“使N1 + N2 >= N3成立的第一個i值就是全局最優解”,才能保證給出的代碼的正確性。)


            程序代碼


            posted on 2010-08-15 23:54 flyinghearts 閱讀(1087) 評論(0)  編輯 收藏 引用 所屬分類: 編程之美
            品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久综合久久综合久久综合| 国产精品久久久久影院色| 国内精品伊人久久久久| av无码久久久久不卡免费网站 | 久久精品亚洲一区二区三区浴池| 精品熟女少妇a∨免费久久| 国产亚州精品女人久久久久久 | 中文字幕亚洲综合久久2| 日本五月天婷久久网站| aaa级精品久久久国产片| 伊人色综合久久天天网| 伊人久久免费视频| 久久久久成人精品无码中文字幕 | 中文字幕日本人妻久久久免费| 嫩草影院久久国产精品| 久久精品极品盛宴观看| 国产精品内射久久久久欢欢| 久久精品国产亚洲av麻豆小说 | 久久久久18| 爱做久久久久久| 2021精品国产综合久久| 日韩精品无码久久久久久| 性做久久久久久久久久久| 久久精品国产精品青草app| 少妇高潮惨叫久久久久久| 亚洲人成网站999久久久综合| 91麻豆精品国产91久久久久久| 久久精品人人槡人妻人人玩AV | 国产日产久久高清欧美一区| 中文字幕久久精品无码| 日韩欧美亚洲综合久久 | 99久久中文字幕| 老司机国内精品久久久久| 狠狠综合久久综合中文88 | 国产精品久久久久乳精品爆| 色综合久久久久| 国产福利电影一区二区三区久久久久成人精品综合 | 久久精品中文字幕有码| 色噜噜狠狠先锋影音久久| 91久久九九无码成人网站|