• <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>

            hdu3440(差分約束)

            題目網址: http://acm.hdu.edu.cn/showproblem.php?pid=3440 

            House Man

            Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
            Total Submission(s): 446    Accepted Submission(s): 157


            Problem Description
            In Fuzhou, there is a crazy super man. He can’t fly, but he could jump from housetop to housetop. Today he plans to use N houses to hone his house hopping skills. He will start at the shortest house and make N-1 jumps, with each jump taking him to a taller house than the one he is jumping from. When finished, he will have been on every house exactly once, traversing them in increasing order of height, and ending up on the tallest house.
            The man can travel for at most a certain horizontal distance D in a single jump. To make this as much fun as possible, the crazy man want to maximize the distance between the positions of the shortest house and the tallest house.
            The crazy super man have an ability—move houses. So he is going to move the houses subject to the following constraints:
            1. All houses are to be moved along a one-dimensional path.
            2. Houses must be moved at integer locations along the path, with no two houses at the same location.
            3. Houses must be arranged so their moved ordering from left to right is the same as their ordering in the input. They must NOT be sorted by height, or reordered in any way. They must be kept in their stated order.
            4. The super man can only jump so far, so every house must be moved close enough to the next taller house. Specifically, they must be no further than D apart on the ground (the difference in their heights doesn't matter).
            Given N houses, in a specified order, each with a distinct integer height, help the super man figure out the maximum possible distance they can put between the shortest house and the tallest house, and be able to use the houses for training.
             

            Input
            In the first line there is an integer T, indicates the number of test cases.(T<=500)
            Each test case begins with a line containing two integers N (1 ≤ N ≤ 1000) and D (1 ≤ D ≤1000000). The next line contains N integer, giving the heights of the N houses, in the order that they should be moved. Within a test case, all heights will be unique.
             

            Output
            For each test case , output “Case %d: “first where d is the case number counted from one, then output a single integer representing the maximum distance between the shortest and tallest house, subject to the constraints above, or -1 if it is impossible to lay out the houses. Do not print any blank lines between answers.
             

            Sample Input
            3 4 4 20 30 10 40 5 6 20 34 54 10 15 4 2 10 20 16 13
             

            Sample Output
            Case 1: 3 Case 2: 3 Case 3: -1

            // Bellman_Ford 
            #include <stdio.h>
            #include 
            <memory>
            #include 
            <iostream>
            #include 
            <algorithm>
            #include 
            <cstring>
            #include 
            <vector>
            #include 
            <map>
            #include 
            <cmath>
            #include 
            <set>
            #include 
            <queue>
            #include 
            <time.h> 
            #include 
            <limits>
            using namespace std;
            #define typev int
            #define N 1005
            #define inf 0x7fffffff 
            #define E (N*5) 
            const double pi = acos(-1.0); 
            struct e{
                
            int st, ed; 
                typev len;  
                
            void set(int _st, int _ed, typev _len){
                    st 
            = _st; 
                    ed 
            = _ed; 
                    len 
            = _len; 
                }
            }es[E];
            struct node{
                
            int h; 
                
            int i; 
            }nodes[N];
            e
            * fir[N]; 
            int n, en, d;
            int st, ed; 
            int vis[N], t[N], que[N]; 
            typev dist[N]; 
            inline 
            bool cmp(node n1, node n2){
                
            return n1.h < n2.h; 
            }
            inline 
            bool relax(int st, int ed, int len){
                
            if(dist[st] < inf && dist[ed] > dist[st] + len){
                    dist[ed] 
            = dist[st] + len;
                    
            return true
                }
                
            return false
            }
            bool Bellman_Ford(int n, int st){  //返回true表示有負環
                int i, j; 
                
            bool flag; 
                
            for(i = 0; i < n; i++) dist[i] = inf; 
                dist[st] 
            = 0
                
            for(i = 0; i < n; i++){
                    flag 
            = false
                    
            for(j = 0; j < en; j++){
                        
            if(relax(es[j].st, es[j].ed, es[j].len)) flag = true
                    }
                    
            if(!flag) break
                }
                
            return flag;  
            }
            int cnt = 0
            int main(){
            #ifndef ONLINE_JUDGE
                freopen(
            "in.txt""r", stdin); 
                
            //freopen("out.txt", "w", stdout); 
            #endif 

                
            int t, i, ans, u, v;
                scanf(
            "%d"&t);
                
            while(t--){
                    scanf(
            "%d%d"&n, &d);
                    
            for(i = 0; i < n; i++){
                        scanf(
            "%d"&nodes[i].h);
                        nodes[i].i 
            = i; 
                    }
                    en 
            = st = ed = 0
                    sort(nodes, nodes
            +n, cmp); 
                    st 
            = nodes[0].i; 
                    ed 
            = nodes[n - 1].i; 
                    
            if(st > ed) swap(st, ed); 
                    
            for(i = 0; i < n; i++) fir[i] = NULL; 
                    
            for(i = 1; i < n; i++){
                        es[en
            ++].set(i, i-1-1); 
                        u 
            = nodes[i].i; 
                        v 
            = nodes[i - 1].i; 
                        
            if(u < v){
                            es[en
            ++].set(u, v, d); 
                        }
            else es[en++].set(v, u, d); 
                    } 
                    
            if(!Bellman_Ford(n, st)) ans = dist[ed];
                    
            else ans = -1
                    printf(
            "Case %d: %d\n"++cnt, ans);

                }
                
            return 0;
            }



            posted on 2011-01-23 01:13 tw 閱讀(490) 評論(0)  編輯 收藏 引用 所屬分類: HDU題解

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            常用鏈接

            留言簿

            文章分類

            文章檔案

            搜索

            最新評論

            狠狠色丁香久久婷婷综合_中 | 要久久爱在线免费观看| 久久国产精品久久| 久久久久国色AV免费看图片 | 7777精品伊人久久久大香线蕉| 久久这里只有精品视频99| 亚洲AV伊人久久青青草原| 亚洲AV日韩AV天堂久久| 久久精品国产半推半就| 无码国内精品久久人妻麻豆按摩| 亚洲精品乱码久久久久久按摩| 精品国产91久久久久久久| 亚洲精品高清一二区久久| 91久久婷婷国产综合精品青草| 国内精品免费久久影院| 日韩精品无码久久久久久| 国产女人aaa级久久久级| 狠狠色狠狠色综合久久| 国产成人久久精品麻豆一区| 亚洲午夜久久久影院伊人| 国产精品免费久久久久久久久| 亚洲色欲久久久综合网东京热| 狠狠久久综合伊人不卡| 久久亚洲精品国产精品| 久久人人爽人人爽人人片AV高清| 中文字幕久久欲求不满| 国产亚洲精品美女久久久| 亚洲乱码精品久久久久..| 一级a性色生活片久久无| 久久久青草青青国产亚洲免观| 久久成人精品视频| 久久精品视频免费| 99久久99这里只有免费费精品| 久久WWW免费人成一看片| 99久久综合国产精品二区| 久久综合中文字幕| 国产高潮国产高潮久久久| 麻豆成人久久精品二区三区免费 | 青青草原1769久久免费播放| 国产精品国色综合久久| 激情伊人五月天久久综合|