• <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>
            隨筆 - 87  文章 - 279  trackbacks - 0
            <2007年6月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567

            潛心看書研究!

            常用鏈接

            留言簿(19)

            隨筆分類(81)

            文章分類(89)

            相冊

            ACM OJ

            My friends

            搜索

            •  

            積分與排名

            • 積分 - 217966
            • 排名 - 117

            最新評論

            閱讀排行榜

            評論排行榜

            Cake Cutting
            Time Limit:1000MS? Memory Limit:65536K
            Total Submit:528 Accepted:228

            Description

            You are given a rectangular cake of integral dimensions w × h. Your goal is to divide this cake into m rectangular pieces of integral dimensions such that the area of the largest piece is minimal. Each cut must be a straight line parallel to one of the sides of the original cake and must divide a piece of cake into two new pieces of positive area. Note that since a cut divides only a single piece, exactly m ? 1 cuts are needed.

            If w = 4, h = 4, and m = 4, then the following cuts minimize the area of the largest piece:

            However, if w = 4, h = 4, and m = 3, then the following cuts are optimal:

            Input

            The input test file will contain multiple test cases, each of which consists of three integers w, h, m separated by a single space, with 1 ≤ w, h, m ≤ 20 and mwh. The end-of-file is marked by a test case with w = h = m = 0 and should not be processed.

            Output

            For each test case, write a single line with a positive integer indicating the area of the largest piece.

            Sample Input

            4 4 4
            4 4 3
            0 0 0

            Sample Output

            4
            6

            Source
            Stanford Local 2004

            用了記憶化搜索, 900多ms才過掉, rp好啊..

            #include? < iostream >
            using ? namespace ?std;

            int ?f[ 21 ][ 21 ][ 21 ];

            int ?lookup( int ?w,? int ?h,? int ?k)
            {
            ????
            if ?(f[w][h][k]? > ? 0 )? return ?f[w][h][k];
            ????
            if ?(k? == ? 1 )
            ????
            {
            ????????f[w][h][k]?
            = ?w? * ?h;
            ????????
            return ?f[w][h][k];
            ????}

            ????
            int ?i,?j;
            ????
            int ?max1? = ? 2000000000 ,?max2? = ? 2000000000 ;
            ????
            int ?t;

            ????
            // t?=?0;
            ???? for ?(i = 1 ;?i < w;?i ++ )
            ????
            {
            ????????
            for ?(j = 1 ;?j < k;?j ++ )
            ????????
            {
            ????????????
            if ?(i * h? >= ?j? && ?(w - i) * h? >= ?k - j)
            ????????????
            {
            ????????????????t?
            = ?lookup(i,?h,?j)? > ?lookup(w - i,?h,?k - j)? ? ?lookup(i,?h,?j)?:?lookup(w - i,?h,?k - j);
            ????????????????
            if ?(max1? > ?t)
            ????????????????????max1?
            = ?t;
            ????????????}

            ????????}

            ????}


            ????
            // t?=?0;
            ???? for ?(i = 1 ;?i < h;?i ++ )
            ????
            {
            ????????
            for ?(j = 1 ;?j < k;?j ++ )
            ????????
            {
            ????????????
            if ?(w * i? >= ?j? && ?w * (h - i)? >= ?k - j)
            ????????????
            {
            ????????????????t?
            = ?lookup(w,?i,?j)? > ?lookup(w,?h - i,?k - j)? ? ?lookup(w,?i,?j)?:?lookup(w,?h - i,?k - j);
            ????????????????
            if ?(max2? > ?t)
            ????????????????????max2?
            = ?t;
            ????????????}

            ????????}

            ????}


            ????f[w][h][k]?
            = ?max1? < ?max2? ? ?max1?:?max2;
            ????
            return ?f[w][h][k];
            }


            int ?g( int ?w,? int ?h,? int ?k)
            {
            ????memset(f,?
            0 ,? sizeof (f));
            ????
            return ?lookup(w,?h,?k);
            }


            int ?main()
            {
            ????
            int ?w,?h,?m;

            ????
            while ?(scanf( " %d%d%d " ,? & w,? & h,? & m)? != ?EOF)
            ????
            {
            ????????
            if ?(w? == ? 0 ? && ?h? == ? 0 ? && ?m? == ? 0 )? break ;
            ????????printf(
            " %d\n " ,?g(w,?h,?m));
            ????}

            ????
            return ? 0 ;
            }
            posted on 2006-09-07 23:43 閱讀(578) 評論(0)  編輯 收藏 引用 所屬分類: ACM題目
            久久综合给久久狠狠97色| 国产精品久久久久免费a∨| 久久丝袜精品中文字幕| 日本精品一区二区久久久 | 色综合久久88色综合天天 | 国产成年无码久久久免费| 久久久久国产精品| 日本亚洲色大成网站WWW久久| 中文国产成人精品久久不卡 | 伊人久久无码精品中文字幕| 91亚洲国产成人久久精品| 午夜精品久久久久久久久| 伊人色综合久久天天网| 国产精品久久久久影院嫩草| 亚洲欧美一级久久精品| 国产精品久久波多野结衣| 人人狠狠综合88综合久久| 好久久免费视频高清| 国产人久久人人人人爽| 中文字幕久久波多野结衣av| 久久精品亚洲福利| 亚洲国产精品一区二区三区久久| 久久人人爽爽爽人久久久| 久久免费香蕉视频| 99久久精品费精品国产| 久久精品国产亚洲欧美| 久久99热只有频精品8| 香蕉久久夜色精品国产2020| 久久亚洲AV成人无码| 久久精品中文字幕第23页| 国产AV影片久久久久久| 久久综合亚洲色HEZYO国产 | 粉嫩小泬无遮挡久久久久久| 久久精品国产精品亚洲精品| 亚洲午夜久久久久妓女影院| 伊人久久无码精品中文字幕| 天堂无码久久综合东京热| 久久久久久青草大香综合精品 | 日本加勒比久久精品| 久久午夜综合久久| 久久只有这里有精品4|