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

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>
            免费久久久一本精品久久区| 欧美日韩一区在线播放| 欧美一区二区三区免费视| 一区二区久久| 亚洲午夜精品| 欧美在线视频在线播放完整版免费观看 | 亚洲永久免费视频| 日韩视频在线观看一区二区| 亚洲免费av电影| 亚洲系列中文字幕| 久久精品成人| 欧美高清影院| 国产农村妇女精品一区二区| 极品少妇一区二区三区| 红桃视频亚洲| 国产精品99久久99久久久二8| 性色av香蕉一区二区| 噜噜噜在线观看免费视频日韩 | 欧美在线播放一区| 美腿丝袜亚洲色图| 国产精品―色哟哟| 亚洲人成网站在线播| 欧美一区二区三区男人的天堂 | 久久久99国产精品免费| 欧美国产日韩一二三区| 国产日韩在线不卡| 一区二区成人精品| 欧美69wwwcom| 亚洲欧美中文日韩在线| 欧美综合第一页| 亚洲午夜一二三区视频| 亚洲九九九在线观看| 欧美一区二区三区啪啪| 亚洲电影成人| 久久激情网站| 国产精品你懂得| 日韩亚洲欧美在线观看| 久久亚洲私人国产精品va| 亚洲视频每日更新| 欧美另类视频在线| 永久免费毛片在线播放不卡| 欧美在线免费观看亚洲| 一区二区高清视频在线观看| 欧美精品自拍| 亚洲免费av观看| 欧美激情在线狂野欧美精品| 久久国产精品久久w女人spa| 国产精品久久国产三级国电话系列| 亚洲清纯自拍| 欧美激情一区二区三区蜜桃视频| 久久精品国产免费观看| 国产午夜一区二区三区| 午夜久久影院| 亚洲欧美日韩另类| 国产女主播视频一区二区| 亚洲欧美视频一区二区三区| 亚洲无亚洲人成网站77777 | 欧美精品色一区二区三区| 在线观看亚洲a| 久久五月天婷婷| 久久精品国产综合精品| 国产亚洲精品综合一区91| 欧美在线观看视频在线| 小嫩嫩精品导航| 好看不卡的中文字幕| 美女图片一区二区| 欧美不卡一区| 日韩亚洲欧美中文三级| 日韩午夜中文字幕| 国产精品自拍三区| 久久夜色精品国产| 欧美 日韩 国产一区二区在线视频| 亚洲人www| 日韩视频免费在线| 国产精品永久免费| 美女91精品| 欧美成人一区二区| 亚洲视频自拍偷拍| 香蕉久久精品日日躁夜夜躁| 永久免费精品影视网站| 最新亚洲一区| 国产美女高潮久久白浆| 久久色在线观看| 欧美成人性网| 久久成人免费网| 美日韩精品免费| 亚洲一区久久久| 欧美一区精品| 9久re热视频在线精品| 夜夜夜久久久| 欧美国产1区2区| 欧美激情一区二区三区| 午夜欧美大片免费观看| 欧美在线日韩| 亚洲精品一区二区三区四区高清| 艳妇臀荡乳欲伦亚洲一区| 国产亚洲毛片| 99www免费人成精品| 韩国福利一区| 一区二区三区日韩在线观看| 激情综合亚洲| 亚洲一区二区在线免费观看视频| 亚洲成人在线视频网站| 亚洲一区免费看| 亚洲人成人一区二区在线观看| 正在播放亚洲一区| 亚洲日韩欧美视频| 久久精品在线播放| 亚洲欧美一区二区在线观看| 久久综合影视| 欧美在线观看一区| 欧美日韩一区二区三区| 美玉足脚交一区二区三区图片| 欧美午夜精品久久久久久人妖| 免费成人小视频| 国产一区二区三区久久精品| 一本色道久久综合精品竹菊| 亚洲麻豆av| 免费不卡在线观看av| 久久久久9999亚洲精品| 国产精品入口福利| 99国产欧美久久久精品| 亚洲激情在线视频| 久久综合一区| 欧美欧美在线| 久久久久网址| 国产色视频一区| 在线视频一区二区| 亚洲视频一区二区在线观看| 欧美成人一区二区三区在线观看| 久久久久久久网站| 国产一区二区三区直播精品电影| 亚洲综合欧美日韩| 性做久久久久久久久| 国产精品久久久久免费a∨ | 亚洲欧洲精品天堂一级| 欧美人成网站| 亚洲免费观看高清完整版在线观看| 亚洲激情网站免费观看| 男女激情久久| 亚洲日本成人女熟在线观看| 日韩视频免费大全中文字幕| 欧美精品网站| 一区二区三区久久| 欧美一区二区在线免费播放| 国产亚洲免费的视频看| 久久久久久亚洲精品不卡4k岛国| 免费观看久久久4p| 99视频国产精品免费观看| 欧美久久影院| 亚洲影院高清在线| 暖暖成人免费视频| 99精品99久久久久久宅男| 欧美在线精品免播放器视频| 亚洲视频1区| 久久福利毛片| 亚洲第一福利在线观看| 欧美大片一区二区三区| 一本久久a久久精品亚洲| 亚洲综合视频在线| 国产一区二区三区直播精品电影 | 久久国产乱子精品免费女| 欧美成人亚洲| 亚洲一区二区毛片| 国产亚洲一区在线| 欧美高清视频www夜色资源网| 一区二区高清| 欧美aa在线视频| 亚洲专区一区| 伊人色综合久久天天五月婷| 欧美日本亚洲视频| 久久久久99| 亚洲一区二区免费视频| 欧美福利影院| 久久国产精品网站| 99国产精品久久久久久久| 国产视频一区欧美| 欧美日韩另类国产亚洲欧美一级| 欧美与欧洲交xxxx免费观看| 亚洲乱码精品一二三四区日韩在线| 久久成人精品一区二区三区| 亚洲精品美女免费| 狠狠色综合网| 国产日本欧美一区二区| 欧美日本在线观看| 老牛国产精品一区的观看方式| 亚洲一区二区三区免费观看| 欧美**字幕| 久久久久一区二区| 午夜精品网站| 中文av字幕一区| 99国产精品| 亚洲精选在线观看| 亚洲精品123区| 亚洲第一区中文99精品| 国产一区二区三区免费不卡| 国产精品伊人日日| 国产精品美女久久久浪潮软件 | 在线精品视频免费观看| 国产午夜精品福利|