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

            A O(NM) dynamic programming algorithm is quite apparent after sorting the computers and network interfaces by their coordinates. Furthermore, in any optimized case, for each computer the difference between the the indices of the network interfaces matching to and closest to the computer is never larger than N. So the complexity could be reduced to O(N2)


            有很多細節不好考慮,應該是我的水平原因。最后我向updog要了數據才過的。而且代碼寫的不好。將就看一下吧。

            /*************************************************************************
            Author: WHU_GCC
            Created Time: 2000-9-10 14:03:51
            File Name: pku3375.cpp
            Description: 
            ***********************************************************************
            */

            #include 
            <iostream>
            using namespace std;

            #define out(x) (cout << #x << ": " << x << endl)
            typedef 
            long long int64;
            const int maxint = 0x7FFFFFFF;
            const int64 maxint64 = 0x7FFFFFFFFFFFFFFFLL;
            template 
            <class T> void show(T a, int n) for (int i = 0; i < n; ++i) cout << a[i] << ' '; cout << endl; }
            template 
            <class T> void show(T a, int r, int l) for (int i = 0; i < r; ++i) show(a[i], l); cout << endl; }

            const int maxm = 100010;

            int n, m;
            int interface[maxm];
            int computer[maxm];
            int f[2][maxm];
            int last[2];

            int main()
            {
                
            while (scanf("%d%d"&m, &n) != EOF)
                
            {
                    
            for (int i = 1; i <= m; i++)
                        scanf(
            "%d"&interface[i]);
                    
            for (int i = 1; i <= n; i++)
                        scanf(
            "%d"&computer[i]);
                    
                    sort(
            interface + 1interface + 1 + m);
                    sort(computer 
            + 1, computer + 1 + n);

                    
            for (int i = 0; i <= m; i++)
                        f[
            1][i] = maxint;

                    
            for (int i = 0; i <= m; i++)
                        f[
            0][i] = 0;

                    last[
            0= 0;

                    
            for (int i = 1; i <= n; i++)
                    
            {
                        
            int l = 1;
                        
            int r = m;
                        
            while (l + 1 < r)
                        
            {
                            
            int mid = (l + r) / 2;
                            
            if (interface[mid] >= computer[i])
                                r 
            = mid;
                            
            else
                                l 
            = mid;
                        }

                        
            int st = max(l - n - 11);
                        
            int ed = min(l + n + 1, m);
                        
            int now = i % 2;
                        
            int prev = (i + 1% 2;
                        last[now] 
            = ed;
                        
            for (int j = st; j <= ed; j++)
                        
            {
                            
            if (f[prev][j - 1!= maxint)
                                f[now][j] 
            <?= f[prev][j - 1+ abs(computer[i] - interface[j]);
                            
            else if (last[prev] < j - 1)
                                f[now][j] 
            <?= f[prev][last[prev]] + abs(computer[i] - interface[j]);
                            f[now][j] 
            <?= f[now][j - 1];
                        }

                        
            for (int j = 0; j <= m; j++)
                            f[prev][j] 
            = maxint;
                    }

                    
            int ans = maxint;
                    
            for (int i = 0; i <= m; i++)
                        ans 
            <?= f[n % 2][i];

                    printf(
            "%d\n", ans);
                }

                
            return 0;
            }
            posted on 2007-09-11 22:28 Felicia 閱讀(824) 評論(1)  編輯 收藏 引用 所屬分類: 動態規劃
            Comments
             
            久久久久女人精品毛片| 久久亚洲天堂| 无码精品久久久久久人妻中字 | 亚洲综合伊人久久大杳蕉| 久久国产美女免费观看精品| 国产99久久久国产精品~~牛| 欧美伊香蕉久久综合类网站| 99久久精品免费国产大片| 狠狠色综合网站久久久久久久 | 麻豆一区二区99久久久久| 日韩久久久久久中文人妻| 日产精品久久久一区二区| 久久精品亚洲精品国产色婷| 久久精品无码午夜福利理论片 | 久久亚洲精品成人av无码网站| 亚洲AV无码久久精品成人| 久久w5ww成w人免费| 99久久精品免费观看国产| 天堂无码久久综合东京热| 国产偷久久久精品专区| 久久国产精品无码HDAV| 久久人人爽人人澡人人高潮AV | 亚洲中文字幕伊人久久无码| 午夜天堂av天堂久久久| 色偷偷888欧美精品久久久| 久久中文精品无码中文字幕| 久久婷婷五月综合成人D啪| 国产精品久久久久久搜索| 久久综合亚洲色HEZYO国产| 久久久久亚洲精品天堂| 国产精品欧美亚洲韩国日本久久 | 成人综合久久精品色婷婷| 国产精品国色综合久久| 久久久久久久久久免免费精品 | 久久人人爽人人爽人人片AV麻豆| 亚洲国产欧洲综合997久久| 国产精品久久久99| 狠狠色丁香久久综合婷婷| 国产精品成人久久久| 久久精品国产WWW456C0M| 精品国产一区二区三区久久久狼|