• <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
             
            91视频国产91久久久| 99久久婷婷国产综合精品草原| 久久精品国产福利国产琪琪| 久久久久亚洲?V成人无码| 欧美精品一区二区久久| 亚洲人成伊人成综合网久久久| 国产成人综合久久综合| 四虎亚洲国产成人久久精品| 久久夜色精品国产网站| 久久996热精品xxxx| 久久亚洲国产成人精品性色| 国产精品日韩欧美久久综合| 中文字幕无码免费久久| 国产精品99久久久久久猫咪| 久久久无码精品亚洲日韩蜜臀浪潮| 久久久久亚洲av成人网人人软件| 国产精品女同久久久久电影院| 久久国产视屏| 久久综合九色综合97_久久久| 久久99热这里只有精品66| 伊人久久精品线影院| 久久久久亚洲AV无码麻豆| 香蕉久久夜色精品国产2020| 亚洲乱亚洲乱淫久久| 精品久久久久久成人AV| 无码AV波多野结衣久久| 性做久久久久久免费观看| 亚洲综合精品香蕉久久网97| 国产精品久久久久久久久免费| 国产成人精品综合久久久| 久久精品中文无码资源站| 亚洲国产视频久久| 久久人妻少妇嫩草AV无码蜜桃| 爱做久久久久久| 国产精品一区二区久久精品无码| 色偷偷888欧美精品久久久| 狠狠色噜噜狠狠狠狠狠色综合久久| 久久久久亚洲AV成人片| 亚洲国产精品成人久久| 99久久99久久精品免费看蜜桃| 久久夜色精品国产www|