• <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 閱讀(838) 評論(1)  編輯 收藏 引用 所屬分類: 動態規劃
            Comments
             
            欧美日韩中文字幕久久伊人| 亚洲人成网站999久久久综合| 久久精品九九亚洲精品| 国产美女久久精品香蕉69| 精品无码人妻久久久久久 | 2021少妇久久久久久久久久| 国产91久久精品一区二区| 亚洲国产精品成人久久蜜臀 | 精品久久亚洲中文无码| 99久久精品国产一区二区三区| 一级a性色生活片久久无| 亚洲综合精品香蕉久久网97| 久久人人爽人人爽人人片AV东京热 | 久久精品国产清自在天天线| 一本久久a久久精品综合夜夜 | 久久高潮一级毛片免费| 久久不见久久见免费视频7| 无码8090精品久久一区| 国内精品久久久久久麻豆| 国产成人精品久久免费动漫 | 久久久免费精品re6| 欧美黑人激情性久久| 欧美色综合久久久久久| Xx性欧美肥妇精品久久久久久| 久久ZYZ资源站无码中文动漫| 久久精品日日躁夜夜躁欧美| 亚洲国产视频久久| 精品久久久久成人码免费动漫| 日韩久久久久中文字幕人妻| 久久久久久久久久免免费精品 | 韩国三级大全久久网站| 国产精品18久久久久久vr| 国产精品久久久久久吹潮| 久久久一本精品99久久精品88| 久久久久人妻一区二区三区vr| 中文无码久久精品| 久久亚洲AV成人无码电影| 久久精品国产99久久无毒不卡| 久久精品九九亚洲精品天堂| 一级做a爱片久久毛片| 久久一本综合|