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

            UESTC D Divide DP

            這個動態(tài)規(guī)劃還要好好研究下,二分+dp,想法很不錯,而且這里有個trick,就是這個最大值可以是負(fù)數(shù),一開始沒有注意到還我傻呆呆的Wa了N次。。。好了,不能再做題了,趕緊看系統(tǒng)結(jié)構(gòu)吧。不然要杯具了。。。

            官方解題報告:
            首先二分答案ans,然后問題變?yōu)槭欠衲軌驅(qū)?/font>N個數(shù)分為不超過M堆,并且每堆的和都不超過ans。因為存在負(fù)數(shù),所以貪心的做法是錯誤的。這可以用動態(tài)規(guī)劃求解,用dp[ i ]表示考慮前i個數(shù),至少需要分dp[ i ]堆才能使每堆和不超過ans.

            dp[0] = 0

            dp[ i ] = min{ dp[ j ] + 1 }, j < i 且 sum(j + 1, i) <= ans.


            #include<iostream>
            #include
            <algorithm>
            using namespace std;
            #define INF 999999999
            int n,m;
            int a[1010];
            int dp[1010];
            int sum[1010];

            bool check(int mid)
            {
                
            int i,j;
                memset(dp,
            0,sizeof(dp));
                
            for(i=1;i<=n;i++)
                
            {
                    dp[i]
            =INF;
                    
            for(j=0;j<i;j++)
                    
            {
                        
            if(sum[i]-sum[j]<=mid)
                                dp[i]
            =min(dp[i],dp[j]+1);
                    }

                }

                
            if(dp[n]<=m)
                    
            return true;
                
            else
                    
            return false;
            }


            int main()
            {
                
            int t;

                
            int i,j;
                scanf(
            "%d",&t);
                
            while(t--)
                
            {
                    scanf(
            "%d%d",&n,&m);
                    
            for(i=1;i<=n;i++)
                    
            {
                        scanf(
            "%d",&a[i]);
                        sum[i]
            =sum[i-1]+a[i];
                    }

                    
            int l=-100000;
                    
            int r=100000;
                    
            int ans=-1;
                    
            while(l<=r)
                    
            {
                        
            int mid=(l+r)>>1;
                        
            if(check(mid))
                        
            {
                            r
            =mid-1;
                            ans
            =mid;
                        }

                        
            else
                        
            {

                            l
            =mid+1;
                        }

                    }

                    printf(
            "%d\n",ans);
                
                }

                
            return 0;


            }



            posted on 2010-05-02 19:55 abilitytao 閱讀(1150) 評論(1)  編輯 收藏 引用

            評論

            # re: UESTC D Divide DP[未登錄] 2010-05-05 09:08 yoyo

            Hi, man.
            The problems and solution or algorithms posted here are terrific, but in most time readers here are hard to see the description of problems.

            Would you provide the problem description or kind of info, before giving your ideas and algorithm code? Or a URL to introduce problems hosted by "UESTC"?

            Thanks in advance!

            yoyo   回復(fù)  更多評論   


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产精品青草久久久久福利99| 中文成人无码精品久久久不卡 | 综合久久精品色| 亚洲熟妇无码另类久久久| 亚洲精品国产字幕久久不卡| 久久er热视频在这里精品| 久久久久婷婷| 久久er热视频在这里精品| 久久91精品国产91| 国产福利电影一区二区三区久久久久成人精品综合 | 国产69精品久久久久观看软件| 久久婷婷五月综合97色一本一本 | 国产激情久久久久影院| 亚洲精品乱码久久久久久中文字幕 | 久久久久国产亚洲AV麻豆| 久久精品aⅴ无码中文字字幕不卡| 久久久无码精品午夜| 久久精品国产99国产精偷| 亚洲精品乱码久久久久久| 亚洲国产精品一区二区三区久久| 久久最近最新中文字幕大全| 色妞色综合久久夜夜| 久久婷婷是五月综合色狠狠| 国产成人AV综合久久| 四虎国产精品免费久久5151| 精品久久久久久无码中文字幕一区| 久久精品国产亚洲αv忘忧草 | 久久久久久精品免费免费自慰| 日韩十八禁一区二区久久| 久久久青草青青国产亚洲免观| 国产精品伦理久久久久久| 日韩欧美亚洲综合久久影院d3| 国产精品久久久久久久| 久久青青草原国产精品免费| 久久狠狠色狠狠色综合| 久久婷婷久久一区二区三区| 亚洲午夜久久久精品影院| 激情五月综合综合久久69| 欧美久久综合九色综合| 怡红院日本一道日本久久 | 亚洲天堂久久久|