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

            USACO 3.1 Stamps

            動(dòng)態(tài)規(guī)劃題。開始的時(shí)候用狀態(tài)dp[i][j]表示最多i張郵票,能否組成j元。這樣時(shí)間復(fù)雜度為O(n*n*k*10000)結(jié)果TLE了。
            先貼個(gè)TLE的代碼:
            #include?<iostream>
            #include?
            <fstream>

            using?namespace?std;

            ifstream?fin(
            "stamps.in");
            ofstream?fout(
            "stamps.out");

            #ifdef?_DEBUG
            #define?out?cout
            #define?in?cin
            #else
            #define?out?fout
            #define?in?fin
            #endif

            int?k,n;
            bool?dp[200*10000+1];
            int?stamps[50];

            void?solve()
            {
            ????
            in>>k>>n;

            ????
            for(int?i=0;i<n;++i)
            ????????
            in>>stamps[i];

            ????sort(
            &stamps[0],&stamps[n]);

            ????
            int?maximum?=?stamps[n-1]*k;

            ????dp[
            0]?=?true;
            ????
            for(int?i=0;i<k;++i){
            ????????
            for(int?j=maximum;j>=0;j--){
            ????????????
            if(!dp[j])
            ????????????
            for(int?x=0;x<n;++x){
            ????????????????
            if(j>=stamps[x]&&dp[j-stamps[x]]){
            ????????????????????dp[j]
            =true;
            ????????????????????
            break;
            ????????????????}
            ????????????}
            ????????}
            ????}

            ????
            int?res;
            ????
            for(res=1;res<=maximum&&dp[res];++res);

            ????
            out<<res-1<<endl;
            }

            int?main(int?argc,char?*argv[])
            {
            ????solve();?
            ????
            return?0;
            }


            后來實(shí)在想不出來如何優(yōu)化了。。。看了下去年自己寫的代碼...Orz..
            用dp[i]表示組成i所需要的最少的郵票數(shù)。這樣當(dāng)dp[i]>k時(shí),說明不能用k張郵票組成i了。時(shí)間復(fù)雜度為O(10000*k*n)。
            代碼如下:

            #include?<iostream>
            #include?
            <fstream>

            using?namespace?std;

            ifstream?fin(
            "stamps.in");
            ofstream?fout(
            "stamps.out");

            #ifdef?_DEBUG
            #define?out?cout
            #define?in?cin
            #else
            #define?out?fout
            #define?in?fin
            #endif

            int?k,n;
            int?dp[200*10000+2];
            int?stamps[50];

            void?solve()
            {
            ????
            in>>k>>n;

            ????
            for(int?i=0;i<sizeof(dp)/sizeof(int);++i)
            ????????dp[i]?
            =1000; //1000用作表示infinite足夠了,因?yàn)閗<=200.用INT_MAX表示無窮大,加一個(gè)數(shù)的時(shí)候會(huì)溢出

            ????
            for(int?i=0;i<n;++i){
            ????????
            in>>stamps[i];
            ????}

            ????sort(
            &stamps[0],&stamps[n]);

            ????
            int?maximum?=?stamps[n-1]*k;

            ????dp[
            0]=0;

            ????
            for(int?i=0;i<n;++i)
            ????????
            for(int?j=stamps[i];j<=maximum;++j){??????
            ???????????????dp[j]?
            =min(dp[j],dp[j-stamps[i]]+1);
            ????????}

            ????
            for(int?i=1;i<=maximum;++i){
            ????????
            if(dp[i]>k){
            ????????????
            out<<i-1<<endl;
            ????????????
            return;
            ????????}
            ????}

            ????
            out<<maximum<<endl;
            }

            int?main(int?argc,char?*argv[])
            {
            ????solve();?
            ????
            return?0;
            }


            posted on 2009-06-30 20:37 YZY 閱讀(1540) 評(píng)論(8)  編輯 收藏 引用 所屬分類: AlgorithmUSACO 、動(dòng)態(tài)規(guī)劃

            評(píng)論

            # re: USACO 3.1 Stamps 2009-07-01 08:55 Kevin Lynx

            不要再在首頁發(fā)布這些東西了。基本上只有代碼,不知道發(fā)首頁的目的是什么。我的RSS READER訂閱了CPPBLOG首頁,但全是你的東西。  回復(fù)  更多評(píng)論   

            # re: USACO 3.1 Stamps 2009-07-01 08:59 kuailekaba

            就是,別發(fā)了,全是代碼,沒人看的!  回復(fù)  更多評(píng)論   

            # re: USACO 3.1 Stamps 2009-07-01 09:09 YZY

            @Kevin Lynx
            :-). 不好意思,以后不發(fā)首頁了吧。貌似cppblog中做算法的人不多  回復(fù)  更多評(píng)論   

            # re: USACO 3.1 Stamps 2009-07-01 17:58 Khan's Notebook

            不是做算法的人多少問題
            你給一個(gè)答案之前都要讓人知道問題是什么吧.   回復(fù)  更多評(píng)論   

            # re: USACO 3.1 Stamps 2009-07-01 22:22 Contax

            其實(shí)內(nèi)容還行,但是建議你把答案貼上去的時(shí)候,把題目也附上,否則實(shí)在不知所云  回復(fù)  更多評(píng)論   

            # re: USACO 3.1 Stamps[未登錄] 2009-07-02 09:06 YZY

            @Contax
            題目就是USACO啊。。USACO是美國(guó)給高中生的一個(gè)OI訓(xùn)練題庫。網(wǎng)上搜一下USACO就知道了。  回復(fù)  更多評(píng)論   

            # re: USACO 3.1 Stamps 2009-07-02 21:11 Contax

            怎么說呢,您的博客我有時(shí)候也看,也會(huì)去網(wǎng)上搜題目,不過如果你能把題目也附上的話,能節(jié)約所有人找題目的時(shí)間,而且作者把題目附上的時(shí)間比其他大多數(shù)人找題目的時(shí)間要少得多吧(本來題目就在手上)。

            細(xì)節(jié)決定成敗,個(gè)人僅僅以工程的角度來看待這個(gè)問題,相信樓上的抱怨和我是一樣的心情。  回復(fù)  更多評(píng)論   

            # re: USACO 3.1 Stamps 2009-07-02 22:02 YZY

            @Contax
            呵呵,你說的也有道理,以前我也附過題目,后來就懶得添加了。畢竟題目一般挺長(zhǎng)的,添加上后面也不是很好看。附鏈接的話,是需要usaco的賬號(hào)才能打開的。  回復(fù)  更多評(píng)論   

            導(dǎo)航

            <2009年7月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            久久精品亚洲精品国产色婷 | 亚洲精品国精品久久99热| 亚洲一区中文字幕久久| 精品久久久久久无码中文野结衣| 午夜精品久久久久久影视777| 77777亚洲午夜久久多喷| 日本免费久久久久久久网站| 天天做夜夜做久久做狠狠| 亚洲∧v久久久无码精品| 久久久久亚洲av成人无码电影 | 久久99毛片免费观看不卡| 久久久久国色AV免费看图片| 久久精品麻豆日日躁夜夜躁| 久久青青国产| 亚洲成色999久久网站| 亚洲AV无码久久| 无码任你躁久久久久久老妇| 久久久久久免费一区二区三区| 亚洲一区精品伊人久久伊人| 91久久精品电影| 国内精品九九久久久精品| 国产精品久久久久蜜芽| 久久国产香蕉一区精品| 国产成人精品久久免费动漫| 99久久国产精品免费一区二区| 久久综合精品国产一区二区三区 | 偷偷做久久久久网站| 久久久受www免费人成| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久综合偷偷噜噜噜色| 久久涩综合| 午夜精品久久久久久久无码| 久久久久久av无码免费看大片| 国産精品久久久久久久| 久久99亚洲综合精品首页| 国产精品久久久天天影视香蕉| 亚洲国产精品热久久| 国产免费久久精品丫丫| 国产亚洲精午夜久久久久久| 久久久精品波多野结衣| 18禁黄久久久AAA片|