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

            QuXiao

            每天進(jìn)步一點(diǎn)點(diǎn)!

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              50 隨筆 :: 0 文章 :: 27 評(píng)論 :: 0 Trackbacks

            題目大意:

                給定一個(gè)時(shí)間期間n,電腦的價(jià)格c,以及電腦的維修費(fèi)用m(y,z)(第y臺(tái)電腦從y年用到第z年總的維修費(fèi)用)。讓你求出在期限n中使用電腦的最低費(fèi)用。

            思路:
                為了讓總費(fèi)用最低,你必須作出這樣的決策:假設(shè)你正在使用某一臺(tái)電腦已用到y(tǒng)年,你y+1年是繼續(xù)用這臺(tái)電腦,還是重新買第y+1臺(tái)電腦(注意,這里的y+1是指輸入中的第y+1行電腦,而不是指你已購(gòu)買了y+1臺(tái)電腦,因?yàn)閥年只能買輸入中的第y行電腦,為了不產(chǎn)生混淆,將電腦用編號(hào)表示)。顯然,某一階段的最優(yōu)解并不能一定導(dǎo)致全局的最優(yōu)解,所以肯定不能用貪心。
                我們從最后的情況來(lái)考慮,最后必然是某一個(gè)編號(hào)為y的電腦,從第y年使用到第n年,而前面的1~y-1年,自己只可能購(gòu)買編號(hào)為1~y-1的電腦使用到y(tǒng)-1年。這樣,問(wèn)題的范圍就減小了,從編號(hào)為1~n的電腦使用n年,降低到了編號(hào)為1~y-1的電腦使用y-1年。經(jīng)分析,可推出遞推式:
                F[n] = min { F[i] + c + m[i+1][n] | 0<=i<=n-1 }
            F[n]表示n臺(tái)電腦使用n年的最低費(fèi)用

            代碼:

            #include <cstdio>
            #include <climits>
            #include <cstring>

            const int MAX = 1005;
            int n, c;
            int mend[MAX][MAX];
            int f[MAX];
            int cost;

            bool Input ()
            {
                if ( scanf("%d", &c) == EOF )
                    return false;
                scanf("%d", &n);
                int i, j;
                for (i=1; i<=n; i++)
                {
                    for (j=i; j<=n; j++)
                        scanf("%d", &mend[i][j]);
                }
                return true;
            }


            void Solve ()
            {
                int i, j;
                memset(f, 0, sizeof(f));
                for (i=1; i<=n; i++)
                {
                    f[i] = INT_MAX;
                    for (j=0; j<i; j++)
                    {
                        if ( f[j] + mend[j+1][i] + c < f[i] )
                            f[i] = f[j] + mend[j+1][i] + c;
                    }
                }
                printf("%d\n", f[n]);
            }

            int main ()
            {
                while ( Input() )
                {
                    Solve ();
                }

                return 0;
            }
            posted on 2008-01-28 14:45 quxiao 閱讀(482) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACM
            精品久久久久久国产| 亚洲欧美日韩久久精品第一区| 久久精品黄AA片一区二区三区| 狠狠狠色丁香婷婷综合久久五月 | 国产精品一区二区久久精品无码| 久久国产精品国语对白| 亚洲AV无码久久精品狠狠爱浪潮| 久久精品中文字幕久久| 日韩亚洲国产综合久久久| 亚洲AV日韩精品久久久久| 91久久九九无码成人网站| 无遮挡粉嫩小泬久久久久久久| 国产免费久久精品99久久| 久久精品国产亚洲av影院| 日本精品久久久久影院日本| 久久不射电影网| 久久99久久99精品免视看动漫| 精品久久人人妻人人做精品| 精品久久久久久无码中文字幕一区| 欧美成人免费观看久久| 久久99精品久久久久久不卡| 99久久综合狠狠综合久久止| 日产精品久久久久久久| 亚洲国产成人精品女人久久久| 一级做a爰片久久毛片16| 久久超乳爆乳中文字幕| 无码精品久久久久久人妻中字| 亚洲国产高清精品线久久 | 伊人 久久 精品| 久久久久亚洲AV成人网人人网站| 久久久91精品国产一区二区三区| 国产精品久久久亚洲| 91久久婷婷国产综合精品青草| 亚洲人成伊人成综合网久久久| 久久久SS麻豆欧美国产日韩| 日本五月天婷久久网站| 色婷婷久久综合中文久久蜜桃av | 亚洲国产成人久久一区WWW| 亚洲国产日韩欧美综合久久| 欧美伊人久久大香线蕉综合 | 99久久久久|