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

            hdu3433(dp)

            題目來源:http://acm.hdu.edu.cn/showproblem.php?pid=3433 
            /* 
            題目描述: N個人,第i個人完成一個A任務需要時間ai,完成一個B任務需要時間bi,
            現在又X個任務A和Y個任務B,求完成所有任務所需要的最短時間。
            解法:二分時間t,dp[i][j]表示前i個人完成j個A任務所能夠完成的B任務的數量
            */ 
            #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 XY 205
            #define N 55
            #define inf 0x7fffffff
            int a[N], b[N], dp[XY], n, X, Y; 
            bool check(int t){  //判斷在時間t內是否可以完成所有的任務
                int i, j, k, kMax; 
                
            for(i = 1; i <= X; i++) dp[i] = -1
                dp[
            0= 0
                
            for(i = 0; i < n; i++){
                    kMax 
            = min(X, t / a[i]); 
                    
            if(dp[X] >= Y) return true
                    
            for(j = X; j >= 0; j--){  
                        
            for(k = 0; k <= kMax && j - k>= 0; k++){  //第i個人完成k件
                            if(dp[j-k] < 0continue
                            dp[j] 
            = max(dp[j], dp[j - k] + (t - k * a[i]) / b[i]); 
                        }
                    }
                }
                
            return dp[X] >= Y; 
            }
            int main(){
            #ifndef ONLINE_JUDGE
                freopen(
            "in.txt""r", stdin); 
                
            //freopen("out.txt", "w", stdout); 
            #endif 
                
            int t, i,ca, low, high, mid; 
                scanf(
            "%d"&t);
                
            for(ca = 1; ca <= t; ca++){
                    scanf(
            "%d%d%d"&n, &X, &Y);
                    low 
            = 0
                    high 
            = inf; 
                    
            for(i = 0; i < n; i++){
                        scanf(
            "%d%d", a+i, b+i);
                        high 
            = min(high, a[i] * X + b[i] * Y); 
                    }
                    
            while(low <= high){
                        mid 
            = (low + high) >> 1
                        
            if(check(mid)) high = mid - 1
                        
            else low = mid + 1
                    }
                    printf(
            "Case %d: %d\n", ca, high + 1);
                }
                
            return 0;
            }



            posted on 2011-01-21 16:44 tw 閱讀(239) 評論(0)  編輯 收藏 引用 所屬分類: HDU題解

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            導航

            統計

            常用鏈接

            留言簿

            文章分類

            文章檔案

            搜索

            最新評論

            精品久久久久成人码免费动漫| 少妇久久久久久久久久| 久久99精品国产99久久6男男| 久久精品www人人爽人人| 99久久精品国内| 成人国内精品久久久久影院VR| 国产高潮国产高潮久久久91| 久久青青草原精品国产不卡| 亚洲AⅤ优女AV综合久久久| 久久国内免费视频| 国产精品99久久99久久久| 久久国产精品一区二区| 久久久久亚洲精品天堂久久久久久 | 中文字幕久久精品无码| 亚洲精品成人网久久久久久| 久久精品国产亚洲AV不卡| 久久99热这里只频精品6| 久久狠狠色狠狠色综合| 2021国产精品久久精品| 青青草原综合久久| 伊色综合久久之综合久久| 国产精品久久久久久福利69堂| 亚洲另类欧美综合久久图片区| 99久久99久久| 午夜精品久久久久久毛片| 一本大道久久香蕉成人网| 四虎国产精品免费久久久| 久久久国产精华液| 深夜久久AAAAA级毛片免费看| 久久久青草久久久青草| 国产精品久久久久久吹潮| 伊人久久综合成人网| 色播久久人人爽人人爽人人片AV| 国产综合免费精品久久久| 久久96国产精品久久久| 久久人人爽人人爽人人AV| 亚洲中文字幕无码久久综合网 | 日本亚洲色大成网站WWW久久| 久久成人国产精品二三区| 久久久无码人妻精品无码| 婷婷久久香蕉五月综合加勒比|