• <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
             
            久久久久精品国产亚洲AV无码 | 久久人人爽人人爽人人片AV不 | 日本久久久久亚洲中字幕| 久久99精品久久久久婷婷| www亚洲欲色成人久久精品| 日韩中文久久| 国产精品视频久久| 亚洲欧美久久久久9999| 精品久久久噜噜噜久久久| 久久久久亚洲精品无码网址 | 亚洲精品乱码久久久久66| 国产亚洲精久久久久久无码AV| 久久精品综合网| 亚洲成人精品久久| 久久夜色精品国产噜噜噜亚洲AV| 91精品国产高清久久久久久国产嫩草 | 国内精品久久久久| 亚洲AV无一区二区三区久久| 久久精品国产国产精品四凭| aaa级精品久久久国产片| 久久精品国产精品亚洲精品| 色综合久久天天综线观看| 伊人久久大香线蕉精品| 国产亚洲欧美成人久久片| 精品综合久久久久久888蜜芽| 2021最新久久久视精品爱| 欧美一级久久久久久久大片| 国产成人久久精品麻豆一区| 久久免费线看线看| 久久精品国产99国产电影网 | 无码伊人66久久大杳蕉网站谷歌 | 成人久久综合网| av无码久久久久不卡免费网站 | 精品久久久久一区二区三区 | 免费观看成人久久网免费观看| 久久久久高潮毛片免费全部播放| 伊人色综合久久天天人手人婷| 亚洲精品国精品久久99热一| 久久夜色精品国产噜噜亚洲AV| 久久国产热精品波多野结衣AV| 国产精品9999久久久久|