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

            POJ 1661 Help Jimmy 有點(diǎn)麻煩的動(dòng)態(tài)規(guī)劃 O(n^2)

               蠻麻煩的一個(gè)題 但是說白了 也就是一個(gè)類似最長上升子序列的東西(可能跳轉(zhuǎn)的跨度大了些) 從底部往上逐層DP,每一層有兩個(gè)狀態(tài) 分別求之。小結(jié)一下吧 做了這么多動(dòng)態(tài)規(guī)劃題 我發(fā)現(xiàn) 動(dòng)態(tài)規(guī)劃的實(shí)質(zhì) 居然是窮舉 ,囧啊,或者更確切的來說是 帶記憶化的窮舉!存儲(chǔ)加遞歸應(yīng)該還是欠妥的,因?yàn)楫吘褂辛俗顑?yōu)子結(jié)構(gòu)以后 后效狀態(tài)便消除了,而且也并沒有揭示出DP解法的全局性(如果用更宏觀的視角來看待它),即它在求得答案的同時(shí),也獲得了其他更多的信息,這些信息不是冗余(redundant 恩GRE高頻詞),形象的說 應(yīng)該是在DP之路上,為答案作出貢獻(xiàn)的朋友,如果我們換一個(gè)問題,也許它們也就成了答案。
               對了,補(bǔ)充一下,我覺得這個(gè)題最重要的地方在于,當(dāng)你找到了一塊板剛好能接住從左側(cè)下降的你時(shí),你便不用再考慮更下層的板了,因?yàn)槟悴豢赡艽Γò澹?
            #include<iostream>
            #include
            <algorithm>
            #include
            <cstdio>
            using namespace std;
            #define INF 999999999

            struct node
            {
                
            int x1;
                
            int x2;
                
            int h;
                
            bool operator <(node other)
                
            {
                    
            return h>other.h;
                }

            }
            a[1005];
            int dp[1001][2];


            int n,x,y,mh;
            int main()
            {

                
            int t;
                
            int i,j,k;
                scanf(
            "%d",&t);
                
            for(k=1;k<=t;k++)
                
            {
                    scanf(
            "%d%d%d%d",&n,&x,&y,&mh);
                    
            for(i=1;i<=n;i++)
                    
            {
                        scanf(
            "%d%d%d",&a[i].x1,&a[i].x2,&a[i].h);
                        dp[i][
            0]=dp[i][1]=INF;
                    }

                    dp[n
            +1][0]=dp[n+1][1]=0;
                    a[n
            +1].x1=-INF;
                    a[n
            +1].x2=INF;
                    sort(a
            +1,a+1+n);
                    
            for(i=n;i>=1;i--)
                    
            {
                        
            bool l=false;
                        
            bool r=false;
                        
            for(j=i+1;j<=n+1;j++)
                        
            {
                            
            if(a[i].h-a[j].h>mh)
                                
            break;
                            
            if(!l&&a[i].x1>=a[j].x1&&a[i].x1<=a[j].x2)
                            
            {
                                
            if(j==n+1) dp[i][0]=0;
                                
            else 
                                
            {
                                    dp[i][
            0]=min(dp[i][0],dp[j][0]+a[i].x1-a[j].x1);
                                    dp[i][
            0]=min(dp[i][0],dp[j][1]+a[j].x2-a[i].x1);
                                    l
            =true;
                                }

                            }

                            
            if(!r&&a[i].x2>=a[j].x1&&a[i].x2<=a[j].x2)
                            
            {
                                
            if(j==n+1) dp[i][1]=0;
                                
            else 
                                
            {
                                    dp[i][
            1]=min(dp[i][1],dp[j][0]+a[i].x2-a[j].x1);
                                    dp[i][
            1]=min(dp[i][1],dp[j][1]+a[j].x2-a[i].x2);
                                    r
            =true;
                                }

                            }

                        }

                    }

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

                        
            if(a[i].x1<=x&&x<=a[i].x2&&y>=a[i].h)
                        
            {
                            res
            =min(x-a[i].x1+dp[i][0],a[i].x2-x+dp[i][1]);
                            
            break;
                        }



                    }

                    res
            +=y;
                    printf(
            "%d\n",res);

                }

                
            return 0;
            }


            posted on 2010-03-23 23:50 abilitytao 閱讀(1305) 評論(2)  編輯 收藏 引用

            評論

            # re: POJ 1661 Help Jimmy 有點(diǎn)麻煩的動(dòng)態(tài)規(guī)劃 O(n^2) 2010-03-24 00:11 schindlerlee

            剛瞄了眼pku web board
            abilitytao 2010-03-23 23:39:11 Problem 1661

            報(bào)告寫的真快。。。  回復(fù)  更多評論   

            # re: POJ 1661 Help Jimmy 有點(diǎn)麻煩的動(dòng)態(tài)規(guī)劃 O(n^2) 2010-03-25 17:18 淘寶皇冠大全

            按時(shí)間的就暗示的啊  回復(fù)  更多評論   

            久久久久AV综合网成人| 久久精品人人做人人爽电影| 日本精品久久久久影院日本| 欧美国产精品久久高清| 久久久一本精品99久久精品88| 久久Av无码精品人妻系列| 国产精品成人久久久久久久| 伊人久久大香线蕉综合影院首页 | 99久久这里只精品国产免费| 日韩久久久久久中文人妻| 91精品日韩人妻无码久久不卡| 久久久精品久久久久影院| 久久综合久久综合久久| 伊人久久综合成人网| 久久久久国产精品麻豆AR影院| 色综合久久久久综合体桃花网 | 国产AV影片久久久久久| 久久精品国产99久久久古代| 久久久久亚洲精品无码网址 | 国内精品伊人久久久久妇| 国产成人精品白浆久久69| 久久久久久综合网天天| 日本高清无卡码一区二区久久| 久久精品成人免费网站| 狠狠色丁香久久婷婷综合五月| 国产69精品久久久久APP下载| 国内精品久久久久久久涩爱| 久久久久无码精品国产不卡| 久久久精品人妻一区二区三区蜜桃| 97精品国产97久久久久久免费| 国产69精品久久久久777| 久久婷婷成人综合色综合| 日本强好片久久久久久AAA| 无码人妻精品一区二区三区久久| 三级韩国一区久久二区综合| 亚洲精品综合久久| 亚洲人成网站999久久久综合| 婷婷国产天堂久久综合五月| 久久亚洲国产最新网站| 一本色道久久综合亚洲精品| 亚洲精品无码久久久久|