• <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>
            算法學(xué)社
            記錄難忘的征途
            posts - 141,comments - 220,trackbacks - 0
            250pt
               定義大小為N的三角形, 是由若干個等大的圓形構(gòu)成的, 高度和底寬為N.
               三角形的每個圓染三種顏色 r,g,b,相接觸的圓不能染同種顏色.
               問有R個r顏色的球, G個g顏色的球和B個b顏色的球, 最多能染多少個大小為N的三角形.
               r+g+b不爆long long, N不爆int
            算法分析:
               不會

            500pt:
               大小為n*m(n,m<30)的矩陣, 有L,P,.,三種格子, 畫兩個互不相交的矩形, 使兩個矩形L和P的差不超過D, 問這兩個矩形最多能包含的L和P的和.

            算法分析:
               暴力的話是n^8, GG
               不難想到, 兩個矩形之間要么可以劃一條水平分割線, 要么可以畫一條豎直分割線. 
               于是預(yù)處理所有的分割線,左右側(cè)差為d的最多包含的L和P. 預(yù)處理過程是O(n^6).
               然后枚舉兩個矩形的L和P的差, 再枚舉分割線, 復(fù)雜度O(n^5).
               
               預(yù)處理的常數(shù)非常小, 極限數(shù)據(jù)1s出解.

             1 #include<vector>
             2 #include<string>
             3 #include<iostream>
             4 #include<cstring>
             5 using namespace std;
             6 int col[35][2005][2];
             7 int row[35][2005][2];
             8 const int inf = ~0u>>2;
             9 inline void chkmax(int &a,const int& b) {
            10     if(a < b) a = b;
            11 }
            12 class FoxAndFlowerShopDivOne{
            13     public : int theMaxFlowers(vector <string> num, int maxDiff){
            14         int n = num.size(), m = num[0].size();
            15         for(int i = 0; i <35;i++)
            16             for(int j = 0; j<2005; j++)
            17                 for(int p = 0; p<2;p++)
            18                     col[i][j][p] = row[i][j][p] = -inf;
            19         for(int i = 0; i< n; i++)
            20             for(int j  = 0; j< m; j++)
            21                 for(int x = 0; x<= i; x++)
            22                     for(int y = 0; y<= j; y++){
            23                         int suml = 0, sump = 0;
            24                         for(int p = x; p <= i; p++) for(int q = y ; q <= j; q++) suml += num[p][q] == 'L', sump += num[p][q] == 'P';
            25                         int sum = suml+sump;
            26                         int tmp = suml - sump + 1000;
            27                         chkmax(row[i][tmp][0], sum);
            28                         chkmax(row[x][tmp][1], sum);
            29                         chkmax(col[j][tmp][0], sum);
            30                         chkmax(col[y][tmp][1], sum);
            31                     }
            32         for(int j = 0; j< 2005; j++){
            33             for(int i = 1; i< n; i++)
            34                 chkmax(row[i][j][0],row[i-1][j][0]);
            35             for(int i = n-2; i>=0; i--)
            36                 chkmax(row[i][j][1],row[i+1][j][1]);
            37             for(int i = 1; i< m; i++)
            38                 chkmax(col[i][j][0],col[i-1][j][0]);
            39             for(int i= m-2; i>=0; i--)
            40                 chkmax(col[i][j][1],col[i+1][j][1]);
            41         }
            42         int ans = -1;
            43         for(int i = - n*m; i<=n*m; i++)
            44             for(int j = -n*m; j<=n*m; j++) if(abs(i+j) <= maxDiff) {
            45                 for(int r = 0; r< n-1; r++){
            46                     chkmax(ans, row[r][i+1000][0] + row[r+1][j+1000][1]);
            47                 }
            48                 for(int c = 0; c< m-1; c++)
            49                     chkmax(ans, col[c][i+1000][0] + col[c+1][j+1000][1]);
            50             }
            51         return ans;
            52     }
            53 };
            posted on 2012-08-17 13:17 西月弦 閱讀(405) 評論(1)  編輯 收藏 引用 所屬分類: 解題報(bào)告

            FeedBack:
            # re: topcoder srm 552 div1 比賽小記
            2012-08-17 22:16 | wu
            我找規(guī)律過的- -,n%3==0 || n%3==2時,前n行三種顏色的球的數(shù)量是相同的,n%3==1的時候就是最頂上球的那種顏色多了一種
            http://blog.csdn.net/haha593572013/article/details/7876600  回復(fù)  更多評論
              
            久久亚洲AV成人出白浆无码国产| 93精91精品国产综合久久香蕉| 18禁黄久久久AAA片| 久久精品国产免费观看| 久久香蕉国产线看观看精品yw| 国产精品久久久久久久久鸭| 四虎久久影院| 99久久国产综合精品麻豆| 狠狠精品久久久无码中文字幕| 丁香色欲久久久久久综合网| 久久婷婷久久一区二区三区| 久久丝袜精品中文字幕| 久久久久无码精品国产| 久久黄视频| 99久久精品日本一区二区免费| 色99久久久久高潮综合影院| 久久精品国产亚洲AV无码娇色| 久久亚洲欧洲国产综合| 久久精品国产亚洲AV麻豆网站| 国内精品久久久久国产盗摄| 欧美午夜精品久久久久免费视| 久久性精品| 一本久久久久久久| 亚洲欧美成人综合久久久| 色综合久久精品中文字幕首页 | 97精品国产97久久久久久免费| 久久精品国产免费一区| 亚洲中文字幕无码久久精品1| 久久久久久毛片免费看| 国产精品久久久久影视不卡| 亚洲精品无码专区久久久| 国产精品99久久久久久宅男小说| 久久久中文字幕日本| 精品无码久久久久久国产| 亚洲乱亚洲乱淫久久| 久久最新精品国产| 久久精品黄AA片一区二区三区| 国产高潮国产高潮久久久| 久久久久亚洲精品无码蜜桃| 浪潮AV色综合久久天堂| 亚洲女久久久噜噜噜熟女|