• <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
            <2006年4月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            潛心看書研究!

            常用鏈接

            留言簿(19)

            隨筆分類(81)

            文章分類(89)

            相冊

            ACM OJ

            My friends

            搜索

            •  

            積分與排名

            • 積分 - 217940
            • 排名 - 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題目
            亚洲精品tv久久久久久久久 | 伊人久久综合热线大杳蕉下载| 日本强好片久久久久久AAA| 久久夜色精品国产噜噜麻豆| .精品久久久麻豆国产精品| 国产福利电影一区二区三区久久久久成人精品综合 | 99蜜桃臀久久久欧美精品网站| 99久久精品午夜一区二区| 久久久精品无码专区不卡| 久久99久久99精品免视看动漫 | 久久天天躁狠狠躁夜夜avapp| 久久久久亚洲AV无码永不| 久久强奷乱码老熟女网站| 麻豆AV一区二区三区久久| 久久国产成人| 国产精品一久久香蕉国产线看| 人妻无码久久精品| 久久综合久久久| 久久久久久亚洲精品成人| 久久久久这里只有精品| 91精品国产91久久久久久蜜臀| 天天爽天天狠久久久综合麻豆| 久久精品国产亚洲Aⅴ香蕉| 久久99精品国产一区二区三区| 77777亚洲午夜久久多喷| 亚洲国产综合久久天堂| 国产精品狼人久久久久影院| 久久国产一区二区| 国产精品久久久久久福利漫画| 热re99久久精品国99热| 亚洲精品美女久久777777| 婷婷久久综合九色综合九七| 狠狠色丁香婷婷综合久久来来去| 久久精品国产影库免费看| 久久精品欧美日韩精品| 精品人妻久久久久久888| 久久亚洲私人国产精品| 精品久久久无码人妻中文字幕豆芽 | jizzjizz国产精品久久| 久久久久亚洲AV无码网站| 国产精品久久久久9999|