• <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 閱讀(826) 評論(1)  編輯 收藏 引用 所屬分類: 動態規劃
            Comments
             
            亚洲熟妇无码另类久久久| 国产精品欧美亚洲韩国日本久久| 久久香蕉国产线看观看99| 国内精品久久九九国产精品| 国内精品久久久久久麻豆| 久久久久亚洲av成人无码电影| 久久精品成人欧美大片| 久久香蕉国产线看观看99| 欧美伊香蕉久久综合类网站| 日日狠狠久久偷偷色综合0| 色欲av伊人久久大香线蕉影院| 日本精品一区二区久久久| 亚洲国产精品成人久久| 久久综合丁香激情久久| 伊人 久久 精品| 久久久久亚洲精品无码网址| 亚洲狠狠婷婷综合久久久久| 精品久久久久久99人妻| 久久99国产综合精品女同| 久久久www免费人成精品| 嫩草影院久久国产精品| 人妻无码αv中文字幕久久琪琪布| 国内精品久久久久国产盗摄| 久久久亚洲AV波多野结衣| 国产无套内射久久久国产| 日本欧美久久久久免费播放网| 伊人久久亚洲综合影院| 精品乱码久久久久久夜夜嗨| 国产精品久久毛片完整版| 久久久一本精品99久久精品88| 老男人久久青草av高清| 亚洲成色999久久网站| 成人亚洲欧美久久久久| 99久久无码一区人妻a黑| 亚洲AV日韩精品久久久久| 亚洲午夜精品久久久久久app| 97久久精品人人澡人人爽| 国产成人精品久久一区二区三区| 欧美亚洲国产精品久久久久| 伊人伊成久久人综合网777| 久久久精品国产亚洲成人满18免费网站 |