• <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久久九九精品无码| 91精品国产高清久久久久久国产嫩草| 久久亚洲中文字幕精品有坂深雪| 一本久久a久久精品综合香蕉| 亚洲伊人久久综合中文成人网| 久久伊人亚洲AV无码网站| 久久亚洲AV无码精品色午夜麻豆 | 久久久精品免费国产四虎| 国产成人精品久久亚洲高清不卡 | 久久电影网一区| 久久精品国产清自在天天线| 久久久久久综合一区中文字幕 | 996久久国产精品线观看| 国产精品va久久久久久久| 午夜视频久久久久一区| 精品国产一区二区三区久久| 无夜精品久久久久久| 久久国产精品-久久精品| 久久经典免费视频| 少妇久久久久久被弄到高潮 | A狠狠久久蜜臀婷色中文网| 久久久久高潮综合影院| 国产精品中文久久久久久久| 亚洲国产婷婷香蕉久久久久久| 一本久久a久久精品综合夜夜 | 久久99精品久久只有精品| 2021国产精品午夜久久 | 久久国产热精品波多野结衣AV| 国产激情久久久久久熟女老人| 性做久久久久久久久久久| 久久一本综合| 久久久久久伊人高潮影院| 77777亚洲午夜久久多人| 亚洲精品无码久久久久去q| 亚洲综合熟女久久久30p| 国产精品久久久久久| 久久久精品视频免费观看| 亚洲?V乱码久久精品蜜桃| 久久精品国产清高在天天线| 久久99精品久久久久久久不卡 | 久久夜色精品国产欧美乱|