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

            pku 2392 Space Elevator 部分背包問(wèn)題,用隊(duì)列記錄更新次數(shù)

             1 # include <cstdio>
             2 # include <cstring>
             3 # include <algorithm>
             4 using namespace std;
             5 struct node
             6 {
             7     int h,c,maxh;
             8 }data[401];
             9 bool cmp(const node &a,const node &b)
            10 {
            11     return a.maxh<b.maxh;
            12 }
            13 bool dp[40001];
            14 int q[40001][2];
            15 int main()
            16 {
            17     int num,maxnum=-1;
            18     scanf("%d",&num);
            19     for(int i=0;i<num;i++)
            20       scanf("%d%d%d",&data[i].h,&data[i].maxh,&data[i].c);
            21     sort(data,data+num,cmp);
            22     maxnum=data[num-1].maxh;
            23     memset(dp,false,sizeof(dp));
            24     memset(q,-1,sizeof(q));
            25     dp[0]=true;
            26     for(int i=0;i<num;i++)
            27     {
            28         for(int j=0;j<=data[i].maxh;j++)
            29         {
            30             if(!dp[j]&&j-data[i].h>=0&&dp[j-data[i].h])
            31             {
            32                 if(q[j-data[i].h][0]!=i)
            33                 {
            34                     q[j][0]=i;
            35                     q[j][1]=1;
            36                     dp[j]=true;
            37                 }
            38                 else if(q[j-data[i].h][1]<data[i].c)
            39                 {
            40                     q[j][0]=i;
            41                     q[j][1]=q[j-data[i].h][1]+1;
            42                     dp[j]=true;
            43                 }
            44             }
            45         }
            46     }
            47     for(int i=maxnum;i>=0;i--)
            48     {
            49         if(dp[i])
            50         {
            51             printf("%d\n",i);
            52             break;
            53         }
            54     }
            55     return 0;
            56 
            57 }
            58 
            題目簡(jiǎn)要解釋一下
            奶牛們用k種積木搭建一個(gè)塔,每種積木有一定的個(gè)數(shù)和一定的高度。還有就是每種積木最高不能超過(guò)高度hi,問(wèn)最高能搭到的高度
            這題可以轉(zhuǎn)化為部分背包模型,先按照h對(duì)積木進(jìn)行排序,狀態(tài)dp[i][j]表示使用了前i種木塊能否搭建到j(luò)的高度。
            狀態(tài)轉(zhuǎn)移為
            dp[i][j]=dp[i-1][j-k*height(i)],k<=num[i],j<h[i]
            直接暴力DP復(fù)雜度高達(dá)n3 ,DP的時(shí)候從前向后更新,并且開(kāi)辟一個(gè)數(shù)組記錄當(dāng)前位置已經(jīng)更新的次數(shù),可以將復(fù)雜度將為n2
            詳情見(jiàn)代碼- -


            posted on 2010-10-22 02:14 yzhw 閱讀(141) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): DP

            <2011年1月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            統(tǒng)計(jì)系統(tǒng)

            留言簿(1)

            隨筆分類(lèi)(227)

            文章分類(lèi)(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            久久国产成人亚洲精品影院| 久久精品无码一区二区日韩AV| 久久综合成人网| 久久精品国产99久久香蕉| 伊人久久综在合线亚洲2019| 久久99国产精品二区不卡| 久久久一本精品99久久精品66 | 精品无码久久久久久久动漫| 国产成人精品综合久久久| 久久午夜福利电影| 欧洲性大片xxxxx久久久| 久久久久久亚洲精品影院| 一本色综合网久久| 99久久精品毛片免费播放| 精品久久久久久无码中文字幕| 国产精品美女久久久久av爽| 免费一级做a爰片久久毛片潮| 亚洲日本va午夜中文字幕久久| 久久久久亚洲av综合波多野结衣 | 欧美亚洲色综久久精品国产| 久久99热只有频精品8| 国产女人aaa级久久久级| 久久亚洲中文字幕精品一区| 国产精品女同久久久久电影院 | 久久亚洲精品成人AV| 999久久久免费国产精品播放| 免费精品国产日韩热久久| 久久久噜噜噜www成人网| 国产精品无码久久久久 | 日韩精品久久久久久久电影蜜臀| 久久99国产精品久久久| 久久天天日天天操综合伊人av| 无码久久精品国产亚洲Av影片 | 亚洲成色WWW久久网站| 久久97久久97精品免视看| 亚洲国产精品久久电影欧美| 国产高潮国产高潮久久久91 | 国内精品久久久久久久涩爱| 色综合久久无码五十路人妻| 欧美粉嫩小泬久久久久久久 | 久久国产成人午夜aⅴ影院|