• <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 閱讀(812) 評論(1)  編輯 收藏 引用 所屬分類: 動態規劃
            Comments
             
            久久最新精品国产| 久久精品天天中文字幕人妻| 亚洲午夜精品久久久久久人妖| 久久精品一区二区| 青草久久久国产线免观| 久久久久se色偷偷亚洲精品av | 久久久SS麻豆欧美国产日韩| 欧美精品九九99久久在观看| 久久亚洲私人国产精品| 精品人妻伦九区久久AAA片69| 久久久久亚洲av综合波多野结衣| 国产精品久久国产精麻豆99网站| 久久综合日本熟妇| 国产99久久久国产精品~~牛| 久久婷婷是五月综合色狠狠| AA级片免费看视频久久| 人妻少妇久久中文字幕一区二区| 久久影院亚洲一区| 精品久久久久久无码中文野结衣| 久久亚洲熟女cc98cm| 久久精品一区二区影院| AV色综合久久天堂AV色综合在| 亚洲一级Av无码毛片久久精品| 久久亚洲精品中文字幕三区| 久久青青草原亚洲av无码app | 亚洲av日韩精品久久久久久a| 久久99精品久久久久久秒播| 久久精品国产影库免费看| 亚洲精品乱码久久久久久自慰| 模特私拍国产精品久久| 免费一级欧美大片久久网| 精品无码久久久久久久动漫| AAA级久久久精品无码片| 久久精品人人做人人妻人人玩| 国产精品99久久久精品无码| 久久无码中文字幕东京热| 人人狠狠综合久久亚洲高清| 久久精品这里只有精99品| 久久本道综合久久伊人| 久久久久国产一级毛片高清板| 久久久久人妻一区精品|