• <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>
            我叫張小黑
            張小黑的掙扎生活
            posts - 66,  comments - 109,  trackbacks - 0
            http://202.120.80.191/problem.php?problemid=1238
            昨業(yè)里的一道dp,開始一直不想做,因?yàn)槁犝f是樹形dp,而且又聽說樹形dp很難的呀,于是,我跳過了他,不想做,看都不想看
            但是,始終我是要做的,剩余作業(yè)里就剩它了,好吧,我看題。
            看完題后腦子全是樹,煩吶,于是我找了點(diǎn)資料,突然覺得這不就是個(gè)矩陣連乘么,再回想記得好像看過矩陣連乘的原型其實(shí)就是個(gè)樹型結(jié)構(gòu)。應(yīng)該說這道題不算難,如果跳不出樹這個(gè)框架就會(huì)想復(fù)雜 。
            狀態(tài)轉(zhuǎn)移方程和矩陣連乘是很相似的,不同的是,這道題要求做個(gè)前序遍歷。
            這個(gè)遍歷讓我學(xué)到了點(diǎn)東西,就是每次的" "和"\n"的處理
            以下是我的代碼,有點(diǎn)冗長,我沒有用記憶化搜索,要慢慢學(xué)會(huì)迭代寫
            #include<iostream>
            #define MaxN 
            31
            __int64 num[MaxN][MaxN];
            int root[MaxN][MaxN],n,k=0;
            void solve()
            {
                
            int i,j,r,t;
                __int64 tmp;
                
            for(r=2;r<=n;r++)
                    
            for(i=1;i<=n-r+1;i++){
                        j
            =i+r-1;
                        num[i][j]
            =num[i][i]+num[i+1][j];
                        root[i][j]
            =i;
                        
            for(t=i+1;t<j;t++){
                            tmp
            =num[i][t-1]*num[t+1][j]+num[t][t];
                            
            if(tmp>num[i][j]){
                                num[i][j]
            =tmp;
                                root[i][j]
            =t;}
                        }
                        tmp
            =num[i][j-1]+num[j][j];
                        
            if(tmp>num[i][j]){
                            num[i][j]
            =tmp;
                            root[i][j]
            =t;
                        }
                    }
            }
            void print_tree(
            int fis,int end)
            {
                
            if(fis<=end){
                    
            if(!k){printf("%d",root[fis][end]);k=1;}
                    
            else printf(" %d",root[fis][end]);
                    print_tree(fis,root[fis][
            end]-1);
                    print_tree(root[fis][
            end]+1,end);
                }
            }
            int main()
            {
                
            int i;
                memset(num,
            -1,sizeof(num));
                scanf(
            "%d",&n);
                
            for(i=1;i<=n;i++){
                    scanf(
            "%I64d",&num[i][i]);
                    root[i][i]
            =i;}
                solve();
                printf(
            "%I64d\n",num[1][n]);
                print_tree(
            1,n);
                printf(
            "\n");
                return 
            0;
            }

            下面一道是我昨天心情不好的時(shí)候去做的一題,呵呵
            discuss里說要用母函數(shù),這個(gè)離散學(xué)過,手算我都煩吶,用程序?qū)懢透屛覠M大數(shù)相乘的貌似是,提起大數(shù)又讓我想到我還要做的一件事,方格取數(shù)阿,要rewrite
            #include<iostream>
            #define MaxN 
            100
            using namespace std;
            int num[MaxN+1][MaxN+1];
            void init()
            {
                
            int i,j;
                
            for(i=0;i<=MaxN;i++)
                    num[
            0][i]=1;
                
            for(i=1;i<=MaxN;i++)
                    
            for(j=1;j<=MaxN;j++)
                        
            if(i>=j)num[i][j]=num[i-j][j]+num[i][j-1];
                        
            else num[i][j]=num[i][i];
            }
            int main()
            {
                init();
                
            int N;
                
            while(scanf("%d",&N)!=EOF)
                    printf(
            "%d\n",num[N][N]);
                return 
            0;
            }
            慢慢熟悉這種模型的dp
            posted on 2008-04-23 17:38 zoyi 閱讀(334) 評(píng)論(0)  編輯 收藏 引用 所屬分類: acm動(dòng)態(tài)規(guī)劃
            歡迎光臨 我的白菜菜園

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(8)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            acmer

            online judge

            隊(duì)友

            技術(shù)

            朋友

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            日韩精品久久无码人妻中文字幕| 中文字幕热久久久久久久| 国产精品日韩深夜福利久久 | 久久天天婷婷五月俺也去| 精品多毛少妇人妻AV免费久久| 欧美大香线蕉线伊人久久| 99久久久久| 午夜不卡久久精品无码免费| 国产成人精品久久一区二区三区av | 狠狠精品干练久久久无码中文字幕 | 久久综合综合久久狠狠狠97色88| 日本久久久久久久久久| 青青草原1769久久免费播放| 97久久婷婷五月综合色d啪蜜芽 | 久久午夜电影网| 久久久久久久久久久| 久久久久国产一区二区| av无码久久久久不卡免费网站| 亚洲欧美国产日韩综合久久| 国产精品免费久久久久电影网| 久久亚洲中文字幕精品有坂深雪| 久久无码人妻精品一区二区三区| 久久综合九色综合97_久久久| 亚洲精品乱码久久久久久中文字幕| 中文字幕精品久久| 9久久9久久精品| 亚洲中文精品久久久久久不卡| 成人精品一区二区久久久| 欧洲精品久久久av无码电影 | 中文字幕热久久久久久久| 三级三级久久三级久久| 久久久WWW成人免费精品| 国内精品久久久久影院免费| 99热成人精品热久久669| 日本精品久久久久中文字幕8| 国产精品一区二区久久国产| 久久午夜羞羞影院免费观看| 久久综合九色综合网站| 色婷婷综合久久久中文字幕| 97精品久久天干天天天按摩| 国产成人久久精品区一区二区|