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

            浙大月賽 3264 DP

            如果一開(kāi)始我也用兩個(gè)dp數(shù)組就好了,但是我錯(cuò)誤地認(rèn)為如果從后往前掃描數(shù)組的話是不會(huì)出現(xiàn)相互影響的情況的,事實(shí)上我錯(cuò)了,原來(lái)數(shù)據(jù)里有重量為0的數(shù)據(jù),如果有一對(duì)寶藏他們有兩種取法(如第二種情況)而這兩件寶物的重量又恰好為0,那么用 dp[j]=dp[j-w]+v[i] 這個(gè)狀態(tài)轉(zhuǎn)移方程相當(dāng)于兩件寶物都取了,這違背了題意,除了這一種情況之外,其他的情況都可以直接用上面的轉(zhuǎn)移方程式(所以說(shuō)這個(gè)題真的很猥瑣,但也體現(xiàn)出我對(duì)背包問(wèn)題掌握的不全面)。
            當(dāng)我知道了這個(gè)陷阱后,我極力的想證明只有都是0的情況才不能用上面的方法,所以我只開(kāi)了一個(gè)dp數(shù)組,事實(shí)上證明我是正確的!這個(gè)題糾結(jié)了較長(zhǎng)時(shí)間,雖然能比當(dāng)場(chǎng)做出來(lái)的同學(xué)想的更清晰,但是總是現(xiàn)場(chǎng)卡題也不是個(gè)好現(xiàn)象,有則改之吧。

            #include<iostream>
            using namespace std;
            #define max(a,b) (a>b?a:b)
            #define MAX 10001
            struct node
            {
                
            int w1,v1,w2,v2,flag;
            }
            l[MAX];

            int dp[50001];

            int main()
            {

                
            int bagw;
                
            int n;
                
            int i,j;
                
            while(scanf("%d%d",&bagw,&n)!=EOF)
                
            {
                    bagw
            /=100;
                    memset(dp,
            0,sizeof(dp));
                    
            for(i=1;i<=n;i++)
                    
            {

                        scanf(
            "%d%d%d%d%d",&l[i].w1,&l[i].v1,&l[i].w2,&l[i].v2,&l[i].flag);
                        l[i].w1
            /=100;
                        l[i].w2
            /=100;
                    }

                    
            for(i=1;i<=n;i++)
                    
            {

                        
            for(j=bagw;j>=0;j--)
                        
            {
                            
            int temp=dp[j];

                            
            if(l[i].flag==1)
                            
            {
                                
            int pos=j-l[i].w1-l[i].w2;
                                
            if(pos>=0)
                                dp[j]
            =max(dp[j],dp[pos]+l[i].v1+l[i].v2);
                            }

                            
            if(l[i].flag==2)
                            
            {
                                
            int pos=j-l[i].w1;
                                
            if(pos>=0)
                                
            {
                                    
            if(max(dp[j],dp[pos]+l[i].v1)>temp)
                                    
            {

                                        temp
            =max(dp[j],dp[pos]+l[i].v1);
                                    }

                                }


                                pos
            =j-l[i].w2;
                                
            if(pos>=0)
                                
            {
                                    
            if(max(dp[j],dp[pos]+l[i].v2)>temp)
                                        temp
            =max(dp[j],dp[pos]+l[i].v2);
                                }

                                dp[j]
            =temp;

                            }

                            
            if(l[i].flag==3)
                            
            {
                                
            int pos=j-l[i].w1;
                                
            if(pos>=0)
                                
            {
                                    
            if(max(dp[j],dp[pos]+l[i].v1)>temp) 
                                    
            {
                                        temp
            =max(dp[j],dp[pos]+l[i].v1);
                                    }

                                }


                                
                                pos
            =j-l[i].w1-l[i].w2;
                                
            if(pos>=0)
                                
            {
                                    
            if(max(dp[j],dp[pos]+l[i].v1+l[i].v2)>temp)
                                    
            {

                                        temp
            =max(dp[j],dp[pos]+l[i].v1+l[i].v2);
                                    }

                                }

                                dp[j]
            =temp;
                            }

                        }


                    }


                    
            int res=0;
                    
            for(i=1;i<=bagw;i++)
                    
            {

                        
            if(res<dp[i])
                            res
            =dp[i];
                    }

                    printf(
            "%d\n",res);

                    
                }

                
            return 0;
            }








            topcoder SRM 又快到了,希望自己能正常發(fā)揮,不過(guò)這次是DIV 1了,希望題目不要太難 ,呵呵 加油啦 ^_^ 

            posted on 2009-11-17 01:39 abilitytao 閱讀(1550) 評(píng)論(5)  編輯 收藏 引用

            評(píng)論

            # re: 浙大月賽 3264 DP 2009-11-18 09:01 tp

            最好把題目一起發(fā)出來(lái),,,
              回復(fù)  更多評(píng)論   

            # re: 浙大月賽 3264 DP 2009-11-18 16:30 Best

            學(xué)習(xí)了,頂個(gè)。。。。  回復(fù)  更多評(píng)論   

            # re: 浙大月賽 3264 DP 2009-11-18 22:18 littletom

            難怪我用
            f[j]=max(f[j],f[j-w1]+v1);
            f[j]=max(f[j],f[j-w2]+v2);
            就WA

            int tp = f[j];
            tp=max(tp,f[j-w1]+v1);
            tp=max(tp,f[j-w2]+v2);
            f[j]=tp;
            就AC了
            強(qiáng) !!你是怎么知道數(shù)據(jù)中有0這組的,太強(qiáng)大了!我就沒(méi)有想到,只是覺(jué)得自己發(fā)現(xiàn)了問(wèn)題,可是沒(méi)有繼續(xù)追尋啊!!學(xué)習(xí)。。。。  回復(fù)  更多評(píng)論   

            # re: 浙大月賽 3264 DP 2009-11-19 12:32 swcai

            還是兩維dp數(shù)組比較好,壓根就沒(méi)想到這個(gè)事情。做這些題目給我一個(gè)印象就是不要管細(xì)節(jié)的執(zhí)行效率和內(nèi)存使用效率,能跑,AC就行那  回復(fù)  更多評(píng)論   

            # re: 浙大月賽 3264 DP 2009-11-22 14:29 夢(mèng)芭莎內(nèi)衣

            圣誕節(jié)快放假看電視  回復(fù)  更多評(píng)論   


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


            色99久久久久高潮综合影院| 久久久亚洲裙底偷窥综合| 精品久久8x国产免费观看| 国产91久久精品一区二区| 国产精品激情综合久久| 精品伊人久久久| 久久久久久久综合日本亚洲| 久久久网中文字幕| 久久婷婷五月综合国产尤物app| 人人狠狠综合久久亚洲婷婷| 亚洲а∨天堂久久精品9966| 精品国产VA久久久久久久冰| 久久影视综合亚洲| 欧美激情精品久久久久| 国产精品久久久久免费a∨| 青青草国产精品久久久久| 亚洲欧洲久久久精品| 亚洲午夜精品久久久久久人妖| 一本一本久久a久久综合精品蜜桃 一本一道久久综合狠狠老 | 久久久久亚洲AV成人网| 久久精品人妻中文系列| 久久久久亚洲AV成人网人人软件| 国产一区二区三区久久| 久久久久久精品免费看SSS| 久久e热在这里只有国产中文精品99| 久久综合国产乱子伦精品免费| 久久精品国产99久久久古代| 久久精品国产精品亚洲下载| AA级片免费看视频久久| av国内精品久久久久影院| 亚洲精品tv久久久久久久久| 18禁黄久久久AAA片| 国产69精品久久久久APP下载| 精品久久久久久久久久久久久久久| 国产精品久久自在自线观看| 久久亚洲精精品中文字幕| 亚洲AV日韩精品久久久久| 亚洲中文久久精品无码| 色88久久久久高潮综合影院| 久久夜色精品国产噜噜噜亚洲AV| 99久久国产综合精品女同图片|