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

            The Fourth Dimension Space

            枯葉北風(fēng)寒,忽然年以殘,念往昔,語(yǔ)默心酸。二十光陰無(wú)一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢(mèng)令

            POJ 2392-Space Elevator 背包問(wèn)題(多重背包)

            最近好像跟背包問(wèn)題有緣啊,已經(jīng)做了好幾道了。不過(guò)感覺(jué)這個(gè)問(wèn)題確有它值得研究之處,也從中學(xué)到不少東西呵&

            這道題目的大意是:有n種材料,每種材料有數(shù)量c和長(zhǎng)度h還有一個(gè)特殊限制(可以看成一個(gè)背包的容量)
            出題者要你求出用這n種材料可以累加出的最大長(zhǎng)度而且其中的每一種材料中的任何一個(gè)元素都不能高過(guò)這個(gè)限制a.想了想,貌似可以用多重背包來(lái)形容這個(gè)問(wèn)題,當(dāng)然我是非專(zhuān)業(yè)的,說(shuō)得不恰當(dāng)還請(qǐng)大家原諒;

            下面的這段代碼中有幾點(diǎn)值得注意:
            首先是這道題中的關(guān)鍵部分和我寫(xiě)的1276題非常相似(參考了網(wǎng)路上大牛的代碼 先謝過(guò)~)
            通過(guò)這兩個(gè)題我發(fā)現(xiàn):這種方法只適用于(這里我們用背包問(wèn)題的原始定義來(lái)形象的說(shuō)明)物品的重量等于其價(jià)值的情況;
            非這種情況那就請(qǐng)老老實(shí)實(shí)按書(shū)上的方法做吧(如果說(shuō)錯(cuò)了 還望您指出,不過(guò)我是這樣認(rèn)為的);
            這種方法確實(shí)很快,而且比課本上提到的dp方法更牛,一定要掌握呵&

            其次是這道題一定要先排序,再dp;
            為什么呢?我想了想 給出下面一個(gè)例子:
            如果數(shù)據(jù)是這樣的:
            2
            7 40 3
            5 23 1
            如果不排序 那么按照那個(gè)算法26是不可及的
            但是如果排序(按a從小到大)
            變成
            5 23 1
            7 40 3
            那么26就可能了
            是不是很神奇?但這就是區(qū)別 所以本題必須要排序;
            我后來(lái)又想了想 發(fā)現(xiàn)這其實(shí)是一個(gè)策略的問(wèn)題,在實(shí)際中,我們也當(dāng)然會(huì)把安全的部分放在底層,這總方法感覺(jué)上就更穩(wěn)妥些,而且也帶有某種貪心的性質(zhì)我覺(jué)得。
            如果哲學(xué)的來(lái)理解,我引用一句經(jīng)典的話:九層之臺(tái),起于累土,千里之行,始于足下。呵呵,我感覺(jué)還挺符合本題的,不知道您覺(jué)得呢?

            AC CODE:
            #include <iostream>
            #include
            <cmath>
            #include
            <algorithm>
            #include
            <cstdio>
            using namespace std;

            struct node
            {

                
            int h;
                
            int a;
                
            int c;
            }
            a[401];

            int cmp(node a,node b)
            {
                
            return a.a<b.a;
            }



            bool dp[40001];


            int main ()
            {

                
            int n;
                
            int i,j,k;
                scanf(
            "%d",&n);

                
            for(i=1;i<=n;i++)
                
            {
                    scanf(
            "%d%d%d",&a[i].h,&a[i].a,&a[i].c);
                }

                sort(a
            +1,a+1+n,cmp);
                
                
                
            int max=0;
                dp[
            0]=true;
                
            for(i=1;i<=n;i++)
                
            {
                    
            for(k=max;k>=0;k--)
                        
            if(dp[k]==true)
                        
            {
                                
            for(j=1;j<=a[i].c;j++)
                            
            {

                                
            int temp;
                                temp
            =k+j*a[i].h;
                                
            if(temp>a[i].a)
                                    
            break;
                                dp[temp]
            =true;
                                
            if(temp>max)
                                    max
            =temp;



                            }

                        }

                    


                }

                    printf(
            "%d\n",max);
                    
            return 0;


                



            }








            posted on 2009-02-22 01:03 abilitytao 閱讀(2184) 評(píng)論(6)  編輯 收藏 引用

            評(píng)論

            # re: POJ 2392-Space Elevator 背包問(wèn)題(多重背包) 2009-03-09 21:09 金劍

            按從大到小排,題目給的數(shù)據(jù)都不能過(guò),不是么?  回復(fù)  更多評(píng)論   

            # re: POJ 2392-Space Elevator 背包問(wèn)題(多重背包) 2009-03-09 21:16 金劍

            7 40 3
            5 23 8
            2 52 6

            排后

            5 23 8
            7 40 3
            2 52 6

            5*4+2*7+2*6=46
            而正確解應(yīng)該是
            5*3+7*3+2*6=48


            我是看見(jiàn)你寫(xiě)得思路(沒(méi)看程序)然后自己寫(xiě)了個(gè)程序,結(jié)果WA。問(wèn)問(wèn)
              回復(fù)  更多評(píng)論   

            # re: POJ 2392-Space Elevator 背包問(wèn)題(多重背包)[未登錄](méi) 2009-03-09 22:34 abilitytao

            我的程序運(yùn)行顯示 你給出的數(shù)據(jù)答案是48...可能你細(xì)節(jié)上處理有問(wèn)題吧  回復(fù)  更多評(píng)論   

            # re: POJ 2392-Space Elevator 背包問(wèn)題(多重背包) 2009-03-13 14:50 金劍

            原來(lái)是這樣
            | 1st:
            | 0 5 10 15 20
            | 2nd:
            | 7 12 17 22 27
            | 14 19 24 29 34
            | 21 26 31 36
            |
            | 3rd
            ↓ .................
            .................

            不好意思用你博客打了個(gè)草稿

              回復(fù)  更多評(píng)論   

            # re: POJ 2392-Space Elevator 背包問(wèn)題(多重背包)[未登錄](méi) 2009-03-13 17:17 abilitytao

            呵呵 沒(méi)關(guān)系 我很樂(lè)意和你探討 如果還需要交流的話加我的qq:64076241  回復(fù)  更多評(píng)論   

            # re: POJ 2392-Space Elevator 背包問(wèn)題(多重背包) 2011-03-03 19:45 123456

            解釋真得很好。。。  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            jizzjizz国产精品久久| 婷婷久久五月天| 久久精品国产99国产精偷| 久久久综合九色合综国产| 久久久久久综合一区中文字幕 | 久久国产精品77777| 国产成人无码精品久久久性色| 亚洲第一极品精品无码久久| 国产精品久久久久无码av| 亚洲精品无码久久毛片| 无码人妻久久一区二区三区免费丨 | 日本欧美国产精品第一页久久| 伊人久久成人成综合网222| 久久亚洲精品中文字幕| 久久无码国产| 久久99国产精品久久久| 久久久精品国产免大香伊| 国产精品激情综合久久| 久久这里只有精品18| 欧美日韩精品久久久免费观看| 国产精品内射久久久久欢欢| 性欧美丰满熟妇XXXX性久久久| 欧美粉嫩小泬久久久久久久 | 热RE99久久精品国产66热| 久久精品麻豆日日躁夜夜躁| 久久精品免费全国观看国产| 精品人妻伦一二三区久久 | 亚洲国产精品久久久久| 亚洲伊人久久大香线蕉综合图片| 久久国产视屏| 岛国搬运www久久| 精品久久久久久无码人妻蜜桃| 国产91色综合久久免费| 中文字幕无码久久久| 精品伊人久久久| 久久综合亚洲色一区二区三区| 日日狠狠久久偷偷色综合0| 人妻丰满?V无码久久不卡| 理论片午午伦夜理片久久 | 色综合久久久久久久久五月| 久久人人添人人爽添人人片牛牛|