• <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 已棄。

            HDOJ 3480 Division

            Division

            Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 999999/400000 K (Java/Others)
            Total Submission(s): 961    Accepted Submission(s): 310


            Problem Description
            Little D is really interested in the theorem of sets recently. There’s a problem that confused him a long time.  
            Let T be a set of integers. Let the MIN be the minimum integer in T and MAX be the maximum, then the cost of set T if defined as (MAX – MIN)^2. Now given an integer set S, we want to find out M subsets S1, S2, …, SM of S, such that



            and the total cost of each subset is minimal.
             

            Input
            The input contains multiple test cases.
            In the first line of the input there’s an integer T which is the number of test cases. Then the description of T test cases will be given.
            For any test case, the first line contains two integers N (≤ 10,000) and M (≤ 5,000). N is the number of elements in S (may be duplicated). M is the number of subsets that we want to get. In the next line, there will be N integers giving set S.

             

            Output
            For each test case, output one line containing exactly one integer, the minimal total cost. Take a look at the sample output for format.

             

            Sample Input
            2 3 2 1 2 4 4 2 4 7 10 1
             

            Sample Output
            Case 1: 1 Case 2: 18
            Hint
            The answer will fit into a 32-bit signed integer.
             

            Source
             


            四邊形不等式優化,我掌握的確實不怎么樣。。。


            #include <iostream>
            #include 
            <cstdio>
            #include 
            <algorithm>

            using namespace std;

            #define  N   10009
            #define  INF 0x3fffffff

            int n, m, a[ N ];

            int solve() {
                    
            static int f[ 2 ][ N ], s[ 2 ][ N ];
                    
            int i, j, k, cur, pre, tmp;

                    cur 
            = 0;
                    
            for ( i = 1; i <= n; ++i ) {
                            f[ cur ][ i ] 
            = (a[i]-a[1])*(a[i]-a[1]);
                            s[ cur ][ i ] 
            = 1;
                    }

                    
            for ( j = 2; j <= m; ++j ) {
                            pre 
            = cur;
                            cur 
            ^= 1;
                            s[ cur ][ n 
            + 1 ] = n - 1;
                            
            for ( i = n; i >= j; --i ) {
                                    f[ cur ][ i ] 
            = INF;
                                    
            for ( k = s[ pre ][ i ]; k <= s[ cur ][ i + 1 ]; ++k ) {
                                            tmp 
            = f[ pre ][ k ] + (a[i]-a[k+1])*(a[i]-a[k+1]);
                                            
            if ( tmp < f[ cur ][ i ] ) {
                                                    f[ cur ][ i ] 
            = tmp;
                                                    s[ cur ][ i ] 
            = k;
                                            }

                                    }

                            }

                    }

                    
            return f[ cur ][ n ];
            }


            int main() {
                    
            int tc, cc, i;
                    scanf( 
            "%d"&tc );
                    
            for ( cc = 1; cc <= tc; ++cc ) {
                            scanf( 
            "%d%d"&n, &m );
                            
            for ( i = 1; i <= n; ++i ) {
                                    scanf( 
            "%d", a + i );
                            }

                            sort( a 
            + 1, a + n + 1 );
                            printf( 
            "Case %d: %d\n", cc, solve() );
                    }

                    
            return 0;
            }

            posted on 2011-03-18 09:38 coreBugZJ 閱讀(1072) 評論(0)  編輯 收藏 引用 所屬分類: ACM

            久久99精品久久久久久噜噜| 久久国产精品99精品国产987| 久久99精品久久久久久水蜜桃| 青青草国产97免久久费观看| 久久午夜夜伦鲁鲁片免费无码影视| 久久久久99精品成人片直播| 久久99精品综合国产首页| 久久乐国产精品亚洲综合| 婷婷伊人久久大香线蕉AV| 久久久WWW免费人成精品| 久久人人爽人人人人爽AV| 久久99国产精品一区二区| 无码任你躁久久久久久久| 国产99久久精品一区二区| 狠狠色丁香婷婷久久综合五月| 狠狠色丁香久久婷婷综| 精品久久亚洲中文无码| 99久久国产综合精品成人影院| 久久久久免费精品国产| 国产亚洲成人久久| AV无码久久久久不卡蜜桃| 久久精品国产99国产精品导航| 中文字幕亚洲综合久久2| 久久精品午夜一区二区福利| 午夜精品久久久久久影视777| 国产精品成人久久久久久久| 欧美精品久久久久久久自慰| 久久WWW免费人成一看片| 免费一级做a爰片久久毛片潮| 91久久精品电影| 国产精品久久久久久久午夜片 | 亚洲国产香蕉人人爽成AV片久久| 久久精品成人免费看| 色综合久久久久无码专区| 一极黄色视频久久网站| 日韩欧美亚洲综合久久影院Ds| 久久国产精品久久国产精品| 亚洲一本综合久久| 999久久久国产精品| 99久久精品免费看国产| 久久久久久久综合日本|