• <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>

            a tutorial on computer science

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              21 隨筆 :: 0 文章 :: 17 評論 :: 0 Trackbacks
                    題目的意思很簡單,給出N個正整數,求最大的,長度大于K的某一段的平均值。好吧,這句聽起來有點拗口。數學表達式就是 Max(ave(i,j))   (j-i>=K)。
                   這題是去年百度之星第二場比賽的一道題,煞費苦心不會做,那時候看了論文也不會做。過了快一年了,今天終于把它A掉了。。。
                  
                   首先,ave(i,j)可以變形為一個式子, ave(i,j) = (sum[j] - sum[i-1]  ) / (j - i + 1) 。
                   這個式子要表達什么意思呢?表示j點到i點得斜率!如此神奇的想法。。。
                  變成斜率之后,問題遠遠沒有得到解決。問題變成了給出N個點的坐標,求這N個點任意連線的最大斜率。最普通的辦法:從前到后枚舉N個點,再枚舉前0到i-k個點,比較的出最大斜率。但是通過作圖我們可以得出一個結論,對于三個點,a,b,c,如果ca的斜率比cb的大,那么以后任意一個點,到點b的斜率都不可能比到a和c的大。所以這時候要舍棄掉b點。所以在維護前面0,i-K個點得時候,如果出現了上述提到的情況,則刪除點b,好了,這樣復雜度最壞情況下還是N^2。我們繼續想,當出現一個新的點得時候,真的要枚舉前面所有的點嗎?我們只要找到維護的點到當前點得切線就好了,這個可以用二分查找找出來,比較麻煩。最后一步神優化:當當前維護的點得前面的點不是最大斜率的時候,以后的點也不可能是最大斜率。這個自己證明去吧~
                 這個題煞費苦心的想了一天,明白怎么回事了,發現結論很簡單。但是交到hdoj上的時候,TLE了。沒耐心看了discuss,原來是scanf要自己寫。不想寫,百度代碼,發現有個神人寫了五十行的代碼,未自己寫輸入,交,A之。原來是自己的代碼太冗余了。于是便仿照他的寫法,發現問題很簡單,一切很明了~A之。代碼如下:
            //by bigrabbit

            #include 
            <stdio.h>

            typedef 
            struct
            {
              
            int x,y;
            }
            node;
            node queue[
            100010],tmp;
            int head,tail;

            double res;

            int N,K,sum[100010];

            double max(double a,double b)
            {
                
            if(a > b)
                  
            return a;
                
            return b;
            }


            long long xmul(node a,node b,node c)
            {
               
            return (long long)(c.y-a.y)*(b.x-a.x) - (long long)(b.y - a.y)*(c.x - a.x) ;
            }


            int main()
            {
                
            int i;
               
            while(scanf("%d%d",&N,&K)!=EOF)   
               
            {
                 sum[
            0= 0;
                 
            for(i=1;i<=N;i++)
                 
            {
                    scanf(
            "%d",&sum[i]);
                    sum[i] 
            += sum[i-1];
                 }

              
                 head 
            = tail = 0;
                 res 
            = 0.0;
                
                 
            for(i=K;i<=N;i++)
                 
            {
                    tmp.x 
            = i-K;
                    tmp.y 
            = sum[i-K];
                    
            while(head - tail >= 2 && xmul(queue[head-2],queue[head-1],tmp) <= 0 ) 
                     head
            --;
                    queue[head
            ++= tmp;
                    
                     node now;
                    now.x 
            = i;now.y = sum[i];
                    
            while(head - tail >= 2 && xmul(queue[tail],queue[tail+1],now) >= 0 )  
                      tail
            ++;
               
                    res 
            = max(res,(double)(sum[i] - queue[tail].y)/(double)(i - queue[tail].x));
                 }

                printf(
            "%.2f\n",res);
               }

               
            return 0;
            }

            posted on 2012-03-08 16:27 bigrabbit 閱讀(1013) 評論(0)  編輯 收藏 引用
            久久精品国产亚洲AV香蕉| 狠狠色丁香久久综合婷婷| 久久精品国产WWW456C0M| 精品国产婷婷久久久| 国产一区二区久久久| 久久精品国产亚洲av麻豆小说| 久久99精品久久久久久动态图| 狠狠综合久久综合中文88| 国产成年无码久久久免费| 99热都是精品久久久久久| 狠狠色综合网站久久久久久久高清| AV无码久久久久不卡网站下载 | 伊人久久大香线蕉av一区| 国产韩国精品一区二区三区久久 | 久久伊人五月丁香狠狠色| 久久棈精品久久久久久噜噜| 国产精品一区二区久久精品无码 | 香蕉99久久国产综合精品宅男自 | 99精品国产99久久久久久97| 99久久婷婷国产综合精品草原| 久久99热这里只频精品6| 久久本道久久综合伊人| 狠狠色丁香久久综合婷婷| 人妻久久久一区二区三区| 久久人妻少妇嫩草AV无码蜜桃| 精品综合久久久久久97超人 | 久久精品天天中文字幕人妻| 国产69精品久久久久APP下载 | 久久精品国产亚洲AV麻豆网站| 伊人久久大香线蕉精品不卡| 久久99精品九九九久久婷婷| 久久精品国产免费一区| 激情伊人五月天久久综合 | 久久93精品国产91久久综合| 伊人热人久久中文字幕| 国内精品久久国产大陆| 色综合色天天久久婷婷基地| 亚洲国产精品人久久| 久久中文娱乐网| 国产福利电影一区二区三区久久久久成人精品综合 | 99久久国语露脸精品国产|