• <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
             
            亚洲午夜精品久久久久久浪潮| 久久99久久成人免费播放| 午夜精品久久久久| 日韩乱码人妻无码中文字幕久久| 久久天天躁狠狠躁夜夜96流白浆 | 久久精品国产影库免费看| 成人国内精品久久久久影院VR| 亚洲欧洲精品成人久久曰影片| 香蕉久久av一区二区三区| 精品久久久久久国产三级| 久久国产精品一国产精品金尊| 人妻精品久久久久中文字幕| 久久久久四虎国产精品| 色欲久久久天天天综合网| 久久精品中文字幕第23页| 久久国产免费观看精品3| 亚洲欧美国产日韩综合久久| 久久se这里只有精品| 国产成年无码久久久久毛片| 偷窥少妇久久久久久久久| 久久久久九九精品影院| 国产综合免费精品久久久| 国产精品国色综合久久| 久久人爽人人爽人人片AV| 伊人久久大香线蕉亚洲| 亚洲国产婷婷香蕉久久久久久| 国产毛片久久久久久国产毛片 | 久久久久亚洲av成人无码电影| 精品久久久久香蕉网| 精品免费久久久久久久| 青青草原精品99久久精品66| 亚洲国产精品无码久久久不卡| 久久天天躁狠狠躁夜夜不卡| 无码国内精品久久人妻麻豆按摩| 狠狠综合久久综合中文88| 国产视频久久| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久人人爽人人爽人人片AV东京热| 日本久久久久久中文字幕| 国产亚州精品女人久久久久久 | 久久99国产精品久久|