• <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
            <2008年4月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            潛心看書研究!

            常用鏈接

            留言簿(19)

            隨筆分類(81)

            文章分類(89)

            相冊

            ACM OJ

            My friends

            搜索

            •  

            積分與排名

            • 積分 - 217940
            • 排名 - 117

            最新評論

            閱讀排行榜

            評論排行榜

            Dominoes
            Time Limit:1000MS? Memory Limit:65536K
            Total Submit:1022 Accepted:333

            Description
            A domino is a flat, thumbsized tile, the face of which is divided into two squares, each left blank or bearing from one to six dots. There is a row of dominoes laid out on a table:


            The number of dots in the top line is 6+1+1+1=9 and the number of dots in the bottom line is 1+5+3+2=11. The gap between the top line and the bottom line is 2. The gap is the absolute value of difference between two sums.

            Each domino can be turned by 180 degrees keeping its face always upwards.

            What is the smallest number of turns needed to minimise the gap between the top line and the bottom line?

            For the figure above it is sufficient to turn the last domino in the row in order to decrease the gap to 0. In this case the answer is 1.
            Write a program that: computes the smallest number of turns needed to minimise the gap between the top line and the bottom line.

            Input
            The first line of the input contains an integer n, 1 <= n <= 1000. This is the number of dominoes laid out on the table.

            Each of the next n lines contains two integers a, b separated by a single space, 0 <= a, b <= 6. The integers a and b written in the line i + 1 of the input file, 1 <= i <= 1000, are the numbers of dots on the i-th domino in the row, respectively, in the top line and in the bottom one.

            Output
            Output the smallest number of turns needed to minimise the gap between the top line and the bottom line.

            Sample Input

            4
            6 1
            1 5
            1 3
            1 2
            

            Sample Output

            1
            

            Source
            CEOI 1997

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

            const ? int ?MAXN? = ? 8000 ;
            const ? int ?INF? = ? 1 ? << ? 28 ;

            struct ?DATA? {
            ????
            int ?da[MAXN];
            ????
            int ?dx;
            ????
            int ?q;
            }
            ;

            DATA?dp[
            2 * MAXN];
            bool ?f[ 2 * MAXN];
            int ?queue[MAXN],?front,?rear;
            int ?main()
            {
            ????
            int ?n;
            ????
            int ?a[MAXN],?x,?y;
            ????
            int ?i,?j,?k,?w,?l;
            ????
            int ?d? = ? 0 ;
            ????
            int ?ans? = ?INF;
            ????scanf(
            " %d " ,? & n);
            ????
            for ?(i = 0 ;?i < n;?i ++ )? {
            ????????scanf(
            " %d%d " ,? & x,? & y);
            ????????a[i]?
            = ?x? - ?y;
            ????????d?
            += ?a[i];
            ????}

            ????memset(f,?
            false ,? sizeof (f));
            ????dp[d
            + 7500 ].dx? = ?d;?dp[d + 7500 ].q? = ? 0 ;?f[d + 7500 ]? = ? true ;
            ????
            for ?(i = 0 ;?i < n;?i ++ )?dp[d + 7500 ].da[i]? = ?a[i];
            ????front?
            = ? 0 ;?rear? = ? 0 ;?w? = ? 0 ;
            ????
            do ? {
            ????????
            for ?(i = 0 ;?i < n;?i ++ )? {
            ????????????j?
            = ?dp[d + 7500 ].da[i];
            ????????????k?
            = ?d?? - ?j? * ? 2 ;
            ????????????
            if ?( ! f[k + 7500 ]? || ?dp[k + 7500 ].q? > ?w? + ? 1 )? {
            ????????????????
            if ?(k? == ? 0 )? {
            ????????????????????printf(
            " %d\n " ,?w? + ? 1 );
            ????????????????????system(
            " pause " );
            ????????????????????
            return ? 0 ;
            ????????????????}

            ????????????????f[k
            + 7500 ]? = ? true ;
            ????????????????queue[rear
            ++ ]? = ?k;
            ????????????????dp[k
            + 7500 ].dx? = ?k;
            ????????????????dp[k
            + 7500 ].q? = ?w? + ? 1 ;
            ????????????????
            for ?(l = 0 ;?l < n;?l ++ )?dp[k + 7500 ].da[l]? = ?dp[d + 7500 ].da[l];
            ????????????????dp[k
            + 7500 ].da[i]? = ? - dp[d + 7500 ].da[i];
            ????????????}

            ????????}

            ????????d?
            = ?queue[front ++ ];
            ????????w?
            = ?dp[d + 7500 ].q;
            ????}
            ? while ?(front? <= ?rear);??
            ????j?
            = ? 7500 ;
            ????
            bool ?isFind? = ? false ;
            ????
            for ?(i = 0 ;?i < 7500 ;?i ++ )? {
            ????????
            if ?(f[j + i])? {
            ????????????isFind?
            = ? true ;
            ????????????
            if ?(ans? > ?dp[j + i].q)?ans? = ?dp[j + i].q;
            ????????}

            ????????
            if ?(f[j - i])? {
            ????????????isFind?
            = ? true ;
            ????????????
            if ?(ans? > ?dp[j - i].q)?ans? = ?dp[j - i].q;
            ????????}

            ????????
            if ?(isFind)? break ;
            ????}

            ????printf(
            " %d\n " ,?ans);
            ????system(
            " pause " );
            ????
            return ? 0 ;
            }

            posted on 2006-10-29 20:42 閱讀(808) 評論(0)  編輯 收藏 引用 所屬分類: ACM題目
            久久成人国产精品免费软件| 久久精品国产91久久综合麻豆自制| 久久久久久国产精品美女| 久久综合五月丁香久久激情| 精品人妻伦九区久久AAA片69| 国产综合久久久久久鬼色| 久久天天躁狠狠躁夜夜2020| 久久久久无码精品国产| 色婷婷综合久久久久中文字幕| 99久久国语露脸精品国产| 热久久视久久精品18| 伊人久久综合热线大杳蕉下载| 亚洲精品乱码久久久久66| 久久嫩草影院免费看夜色| 久久99国产精品尤物| 久久九九久精品国产免费直播| 精品久久久久久国产牛牛app | 国产精品久久久久久久久免费| 超级碰碰碰碰97久久久久| 狠狠久久综合| 国产精品VIDEOSSEX久久发布| 久久婷婷激情综合色综合俺也去| 久久婷婷人人澡人人爽人人爱| 激情综合色综合久久综合| 国内精品久久九九国产精品| 久久香蕉超碰97国产精品| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 亚洲精品久久久www| 性做久久久久久久久| 欧美精品一区二区久久| 青春久久| 91麻豆国产精品91久久久| 久久人人爽人人爽人人爽| 精品久久久无码21p发布| 亚洲乱码中文字幕久久孕妇黑人| 欧美久久久久久| 无码AV中文字幕久久专区| 色偷偷88888欧美精品久久久| 日韩精品久久久肉伦网站| 9久久9久久精品| 久久99久久无码毛片一区二区|