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

            coreBugZJ

            此 blog 已棄。

            POJ 1160 Post Office

            POJ 1160 Post Office
            Time Limit: 1000MS
            Memory Limit: 10000K
            Total Submissions: 10151
            Accepted: 5466

            Description

            There is a straight highway with villages alongside the highway. The highway is represented as an integer axis, and the position of each village is identified with a single integer coordinate. There are no two villages in the same position. The distance between two positions is the absolute value of the difference of their integer coordinates.

            Post offices will be built in some, but not necessarily all of the villages. A village and the post office in it have the same position. For building the post offices, their positions should be chosen so that the total sum of all distances between each village and its nearest post office is minimum.

            You are to write a program which, given the positions of the villages and the number of post offices, computes the least possible sum of all distances between each village and its nearest post office.

            Input

            Your program is to read from standard input. The first line contains two integers: the first is the number of villages V, 1 <= V <= 300, and the second is the number of post offices P, 1 <= P <= 30, P <= V. The second line contains V integers in increasing order. These V integers are the positions of the villages. For each position X it holds that 1 <= X <= 10000.

            Output

            The first line contains one integer S, which is the sum of all distances between each village and its nearest post office.

            Sample Input

            10 5
            1 2 3 6 7 9 11 22 44 50

            Sample Output

            9



            我的代碼 :

            簡(jiǎn)單的 DP,未使用四邊形不等式優(yōu)化 :

            #include <stdio.h>
            #include 
            <string.h>

            #define  N  309
            #define  M  39

            int n, m, x[ N ];

            int solve() {
                    
            int i, j, k, f[ N ][ M ], w[ N ][ N ], tmp;
                    
            int OO = 0x3f3f3f3f;

                    
            int t[ N ];
                    t[ 
            0 ] = 0;
                    
            for ( i = 1; i <= n; ++i ) {
                            t[ i ] 
            = t[ i - 1 ] + x[ i ];
                    }
                    
            for ( i = 1; i <= n; ++i ) {
                            w[ i ][ i ] 
            = 0;
                            
            for ( j = i + 1; j <= n; ++j ) {
                                    k 
            = ( j - i ) / 2 + i;
                                    w[ i ][ j ] 
            = t[ j ] - t[ k ] - t[ k - 1 ] + t[ i - 1 ] + x[ k ] * ( k + k - i - j );
                            }
                    }

                    memset( f, 
            0x3fsizeof(f) );
                    f[ 
            0 ][ 0 ] = 0;
                    
            for ( i = 1; i <= n; ++i ) {
                            
            for ( j = 1; j <= m; ++j ) {
                                    
            for ( k = 0; k < i; ++k ) {
                                            
            if ( f[ k ][ j - 1 ] != OO ) {
                                                    tmp 
            = f[ k ][ j - 1 ] + w[ k + 1 ][ i ];
                                                    
            if ( tmp < f[ i ][ j ] ) {
                                                            f[ i ][ j ] 
            = tmp;
                                                    }
                                            }
                                    }
                            }
                    }
                    
            return f[ n ][ m ];
            }

            int main() {
                    
            int i;
                    scanf( 
            "%d%d"&n, &m );
                    
            for ( i = 1; i <= n; ++i ) {
                            scanf( 
            "%d", x + i );
                    }
                    printf( 
            "%d\n", solve() );
                    
            return 0;
            }

            posted on 2011-03-17 18:59 coreBugZJ 閱讀(1347) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACM

            亚洲精品高清国产一线久久| 国产亚洲欧美成人久久片| 亚洲天堂久久精品| 国产巨作麻豆欧美亚洲综合久久 | 久久综合九色综合网站| 国产精品久久久久9999| 日本精品久久久久中文字幕| 综合久久精品色| 久久精品这里热有精品| 久久精品免费全国观看国产| 日产精品久久久一区二区| 国产成人综合久久久久久| 亚洲欧美日韩久久精品第一区| 9久久9久久精品| 久久精品国产精品亚洲精品 | 久久精品一区二区影院| 久久久久亚洲AV无码网站| 久久天天躁狠狠躁夜夜2020老熟妇| 亚洲va久久久噜噜噜久久狠狠| 91久久福利国产成人精品| 久久久久人妻一区二区三区vr| 久久久久国产精品嫩草影院| 欧美va久久久噜噜噜久久| 色综合久久夜色精品国产| 91精品国产91久久久久久蜜臀| 久久水蜜桃亚洲av无码精品麻豆| 色播久久人人爽人人爽人人片aV | 99久久精品免费国产大片| 无码人妻久久一区二区三区免费 | 久久99国产乱子伦精品免费| 久久人妻AV中文字幕| 久久亚洲视频| 久久99精品久久久久久野外| 久久久久免费精品国产| 99久久国语露脸精品国产| 精品综合久久久久久888蜜芽| 99久久综合国产精品免费| 国产精品久久久久免费a∨| 伊人久久五月天| 亚洲色欲久久久综合网东京热| 久久香综合精品久久伊人|