青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

The Fourth Dimension Space

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

POJ 1276-Cash Machine 特殊情況下的背包問題+強剪枝

今天又做了一個背包的題目,有點郁悶~如果單純只考算法的話應該是很容易的,可是由于數據范圍太大,一直都過不了。。。汗~
TLE了2個小時,自己嘗試了N種剪枝方法但還是過不去。最后無奈只好到網絡上搜索了一下,借用了網上大牛代碼中的一個剪枝方法,才過掉這道題的。。。
剛開始的時候我是這么寫的,沒有任何剪枝,結果當然是TLE啦:

#include <iostream>
#include
<cstdio>
#include
<cmath>
#include
<algorithm>
using namespace std;
struct node
{
    
int num;
    
int value;

}
a[15];


int dp[100001];
int n,m;
int cash,N;


int main ()
{
    
int i,j,k;
    
while(scanf("%d%d",&cash,&N)!=EOF)
    
{

        memset(dp,
0,sizeof(dp));
        
for(i=1;i<=N;i++)
            scanf(
"%d%d",&a[i].num,&a[i].value);
        
for(i=1;i<=N;i++)
        
{

            
for(j=1;j<=a[i].num;j++)
            
{

                
for(k=0;k<=cash;k++)
                    
if(k+a[i].value<=cash&&dp[a[i].value+k]<a[i].value+dp[k])
                    
{
                        dp[a[i].value
+k]=a[i].value+dp[k];
                    }


            }

        }

        
int max=0;
        
for(i=0;i<=cash;i++)
            
if(dp[cash]>max)
                max
=dp[cash];
        printf(
"%d\n",max);

    }

}





后來思考了一下,把能想到的剪枝方法都用上了,不過還是。。。
雖然這個方法TLE了,不過還是值得說一下,里面
        if (cash==0||N==0)
        
{
            printf(
"0\n");
            
continue;
        }
必須放在輸入之后,因為cash為0的時候N不一定為0;這時后面應該有讀入的操作,如果不加處理會造成程序異常;
另外此處還添加了排序,貌似可以提高一點速度;

#include <iostream>
#include
<cstdio>
#include
<cmath>
#include
<algorithm>
using namespace std;
struct node
{

    
int num;
    
int value;

}
a[15];

int compare(const void* e1,const void* e2)
{
    node
* a = (node*)e1;
    node
* b = (node*)e2;
    
return b->value - a->value;
}



int dp[100001];
int n,m;
int cash,N;


int main ()
{
    
int i,j,k;
    
while(scanf("%d%d",&cash,&N)!=EOF)
    
{
    

        memset(dp,
0,sizeof(dp));
        
for(i=1;i<=N;i++)
            scanf(
"%d%d",&a[i].num,&a[i].value);
        
if (cash==0||N==0)
        
{
            printf(
"0\n");
            
continue;
        }

        qsort(a
+1,N,sizeof(a[1]),compare);
        
for(i=1;i<=N;i++)
        
{

            
for(j=1;j<=a[i].num;j++)
            
{

                
for(k=cash;k>=a[i].value;k--)
                
{
                    
if(dp[k]<dp[k-a[i].value]+a[i].value)
                        dp[k]
=dp[k-a[i].value]+a[i].value;



                }


            }

        }

        
int maxnum=0;
        
for(i=0;i<=cash;i++)
            
if(dp[i]>maxnum)
                maxnum
=dp[i];
        printf(
"%d\n",maxnum);

            

    }

    



}


最后才是AC的代碼:
這個代碼的優點在于含有狀態轉移方程的部分,它用max變量框定搜索的區間范圍(初始值為0),對可以達到的cash值用ture標定后,再取最大的那個數更新max,這樣最大限制的減少變量搜索的范圍,節約了很多時間,強~

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


struct node
{

    
int num;
    
int value;

}
a[15];




bool dp[100001];
int cash,N;


int main ()
{
    
int i,j,k;
    
while(scanf("%d%d",&cash,&N)!=EOF)
    
{


        memset(dp,
0,sizeof(dp));
        
for(i=1;i<=N;i++)
            scanf(
"%d%d",&a[i].num,&a[i].value);
        
if (cash==0||N==0)
        
{
            printf(
"0\n");
            
continue;
        }


        
int max=0;
        dp[
0]=true;
        
for(i=1;i<=N;i++)
        
{
            
if(a[i].value>cash)
                
continue;
            
for(j=max;j>=0;j--)
            
{
                
if(dp[j]==true)
                
for(k=1;k<=a[i].num;k++)
                
{
                

                    
{
                        
int temp=j+k*a[i].value;
                        
if(temp>cash)
                            
break;
                        
if(temp>max)
                        
{
                            max
=temp;
                            
                        }

                        dp[temp]
=true;
                    }

                }

            }

        }

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

    }

    
return 0;
}





 

posted on 2009-02-20 17:46 abilitytao 閱讀(2565) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美午夜片欧美片在线观看| 男女精品网站| 国产视频自拍一区| 国产精品久久久久久久电影| 欧美丝袜一区二区三区| 欧美视频在线一区二区三区| 欧美日韩亚洲一区二区三区| 欧美日韩综合在线| 国产精品美女久久久久久2018 | 欧美日韩在线另类| 欧美a级片网站| 欧美日本免费一区二区三区| 欧美精品日韩一本| 国产精品麻豆欧美日韩ww| 国产美女一区二区| 国产精品综合不卡av| 国内成人自拍视频| 亚洲韩国日本中文字幕| 一区二区三区鲁丝不卡| 欧美一级在线亚洲天堂| 欧美成人综合在线| 一本色道88久久加勒比精品| 亚洲在线免费观看| 免费在线视频一区| 国产精品美女xx| 在线看不卡av| 亚洲在线一区二区| 免费不卡亚洲欧美| 亚洲一区二区免费| 久久综合网hezyo| 欧美视频中文在线看| 国语精品一区| 亚洲男女自偷自拍图片另类| 你懂的网址国产 欧美| 日韩一区二区精品| 久久久久久久精| 国产精品成人v| 亚洲高清视频一区| 欧美在线综合视频| 日韩午夜精品视频| 裸体歌舞表演一区二区| 国产日韩欧美电影在线观看| 国内精品视频在线观看| 这里只有精品丝袜| 欧美激情精品久久久久久| 午夜精品视频一区| 欧美色视频在线| 亚洲区一区二| 免费成人小视频| 先锋影音久久久| 国产精品hd| 一本色道久久88亚洲综合88| 女主播福利一区| 久久精品99国产精品酒店日本| 亚洲精品一区在线| 久久人体大胆视频| 国一区二区在线观看| 午夜精品久久久久久久99热浪潮| 99在线精品视频| 久久人人爽爽爽人久久久| 亚洲私人影院在线观看| 欧美日韩国产综合视频在线观看 | 欧美午夜一区| 亚洲精品在线免费| 亚洲国产成人久久综合| 一本色道久久综合亚洲精品高清| 亚洲国产精品t66y| 久久久久免费视频| 红桃视频成人| 美女图片一区二区| 久久一区国产| 亚洲免费电影在线| 亚洲伦理久久| 欧美视频免费在线| 午夜精品三级视频福利| 亚洲一区二区在线播放| 国产精品视频免费在线观看| 欧美一区=区| 性久久久久久久久| 激情国产一区| 亚洲国内自拍| 国产精品激情| 久久久亚洲人| 欧美成年人网| 亚洲一区在线播放| 亚洲影视综合| 在线观看的日韩av| 亚洲人成在线观看一区二区| 欧美系列电影免费观看| 久久国产精品久久久| 久久久久一区二区| 99精品热视频| 亚洲一区二区在线免费观看视频 | 性欧美video另类hd性玩具| 欧美日韩美女一区二区| 性欧美videos另类喷潮| 另类天堂av| 日韩视频在线一区| 欧美黑人一区二区三区| 久久久久99| 国产精品wwwwww| 亚洲国产mv| 国产精品一卡二卡| 在线一区二区三区四区五区| 亚洲一二三区视频在线观看| 亚洲国产精品激情在线观看| 欧美性大战久久久久| 久久精视频免费在线久久完整在线看 | 亚洲天堂黄色| 中文精品视频| 久久精品男女| 国产精品嫩草影院av蜜臀| 激情欧美日韩| 欧美sm视频| 免费国产一区二区| 亚洲高清视频中文字幕| 亚洲女女女同性video| 欧美人交a欧美精品| 欧美亚洲日本网站| 欧美a级一区| 新67194成人永久网站| 一本色道久久综合亚洲精品不卡| 亚洲福利视频在线| 亚洲视频1区2区| 亚洲区在线播放| 久久精品首页| 亚洲一级在线| 欧美精品精品一区| 久久久久久久999精品视频| 欧美日韩91| 亚洲高清一区二| 在线免费观看欧美| 午夜日韩福利| 欧美一级免费视频| 国产精品日韩欧美一区二区| 一区电影在线观看| 宅男噜噜噜66一区二区| 欧美成人精品一区| 亚洲第一在线| 亚洲精品乱码久久久久久蜜桃麻豆 | 好吊日精品视频| 亚洲一区不卡| 亚洲午夜在线| 欧美激情自拍| 亚洲欧洲日韩在线| 日韩视频免费| 亚洲欧美另类国产| 亚洲精品美女在线| 久久久久久久激情视频| 欧美一区二区三区四区在线观看地址| 欧美精品一区二区三| 亚洲第一精品夜夜躁人人躁| 欧美日韩一区二区国产| 国内精品亚洲| 亚洲视频一区二区| 久久福利影视| 国产精品久久久久永久免费观看| 亚洲欧美亚洲| 欧美国产精品一区| 欧美在线欧美在线| 欧美国产视频在线| 9久re热视频在线精品| 国产精品久久久久毛片大屁完整版| 亚洲高清三级视频| 一本大道久久精品懂色aⅴ| 午夜精品久久久久久久久久久久久| 禁久久精品乱码| 国产精品99久久久久久www| 最新国产の精品合集bt伙计| 午夜亚洲福利| 国产一区二区精品久久| 久久精品国产99| 亚洲欧美日韩在线一区| 欧美www视频在线观看| 久久亚洲午夜电影| 国产日韩欧美高清| 亚洲素人一区二区| 一区二区av在线| 欧美高清一区| 亚洲欧美三级伦理| 亚洲嫩草精品久久| 欧美日韩在线一区二区三区| 欧美电影免费观看高清完整版| 亚洲国产人成综合网站| 亚洲免费观看| 久久亚洲一区| 一区在线播放| 国产精品激情av在线播放| 亚洲伦理在线观看| 99国产精品视频免费观看| 国产日韩欧美在线播放不卡| 亚洲欧美一区二区原创| 欧美一区二区三区视频在线观看 | 最新国产の精品合集bt伙计| 亚洲欧美日韩国产成人| 亚洲男人的天堂在线观看| 欧美午夜美女看片| 亚洲一区在线观看视频| 宅男噜噜噜66一区二区| 国产精品videosex极品|