青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-21  評論-10  文章-21  trackbacks-0
Land Division
官網
提交地址


       感覺以前很少接觸到這種劃分的問題,但是它又好像很經典的樣子。

       本題要求劃分的 k 塊之間盡量一樣。使他們的平均偏差最小。 可以很容易想到o(n^2)的dp。然后經隊友提醒,采用單調隊列優化到o(n)。o(n^2)的dp可以這樣考慮:當第 i 根劃分線緊跟在坐標 j 之后時, 枚舉第 i-1 根劃分線在前面的哪個位置然后轉移。 要把這個dp降一維,首先要去掉絕對值。可以通過分類討論來去掉絕對值。

      可以想像有一個滑動窗口(綠色),窗口內的轉移項始終保持最后一項小于平均值。那么窗口左邊的就始終大于平均值。這樣絕對值就去掉了。然后維護一個滑動窗口里的單調隊列就可以了。




  1 #include <string>
  2 #include <vector>
  3 #include <map>
  4 #include <cstdlib>
  5 #include <cstring>
  6 #include <cassert>
  7 #include <set>
  8 #include <iostream>
  9 #include <sstream>
 10 #include <cstddef>
 11 #include <algorithm>
 12 #include <utility>
 13 #include <iterator>
 14 #include <numeric>
 15 #include <list>
 16 #include <complex>
 17 #include <cstdio>
 18 #include <climits>
 19 #include <cassert>
 20 
 21 
 22 using namespace std;
 23 
 24 const int maxn = 100100;
 25 
 26 int gcd(int a, int b){return b ? gcd(b, a%b) : a; }
 27 
 28 int X[maxn], Y[maxn], V[maxn];
 29 int dp[12][maxn];
 30 
 31 int N, K;
 32 
 33 int que[maxn], bb, ee;
 34 int minx, nowx;
 35 
 36 void init()
 37 {
 38     minx = -1;
 39     nowx = 0;//最小的當前仍然滿足和 < N的下標
 40     bb = 0;
 41     ee = 0;
 42 }
 43 
 44 int solve(int X[])
 45 {
 46     sort(X, X + N);
 47     
 48     V[0= 0;
 49     int cnt = 1, pre = -1
 50     for(int i = 0; i < N; i++)
 51     {
 52         if(X[i] == pre)
 53             V[cnt-1]++;
 54         else
 55         {
 56             V[cnt++= 1;
 57             pre = X[i];
 58         }
 59     }
 60     
 61     //V[0]不是實際的點,是臨時加的點
 62     for(int i = 1; i < cnt; i++)
 63     {
 64         V[i] += V[i-1]; 
 65     }
 66     
 67     for(int i = 0; i < cnt; i++)
 68     {
 69         V[i] *= K; // 擴大倍數,沒有分母
 70     }
 71     
 72     for(int i = 0; i < cnt; i++)
 73     {
 74         dp[1][i] = abs(V[i] - N);
 75     }
 76     
 77     
 78     for(int i = 2; i <= K; i++)
 79     {
 80         init();
 81         for(int j = 0; j < cnt; j++)
 82         {
 83             while(V[j] - V[nowx] >= N)
 84             {
 85                 if(minx==-1 || dp[i-1][minx] + V[nowx] - V[minx]> dp[i-1][nowx])
 86                     minx = nowx;
 87                 nowx++;
 88             }
 89             
 90             while(bb != ee && que[bb] < nowx)bb = (bb+1)%maxn;
 91             
 92             while(bb != ee)
 93             {
 94                 int lastid = ( ee - 1 + maxn ) % maxn;
 95                 int last = que[lastid];
 96                 if(dp[i-1][last] - ( V[j] - V[last]) < dp[i-1][j] )break;
 97                 ee = lastid;
 98             }
 99             que[ee] = j;
100             ee = ( ee + 1 ) % maxn;
101             
102             assert(bb != ee);
103             
104             dp[i][j] = dp[i-1][que[bb]] + N - ( V[j] - V[que[bb]] );
105             
106             if(minx != -1)
107                 dp[i][j] = min( dp[i][j], dp[i-1][minx] + V[j] - V[minx] - N );
108         }
109     }
110     
111     return dp[K][cnt-1];
112 }
113 
114 int main()
115 {
116     int cas = 1;
117     while(scanf("%d %d",&N, &K) != EOF)
118     {
119         if(N == 0 && K == 0)break;
120         for(int i = 0; i < N; i++)
121         {
122             scanf("%d %d",&X[i], &Y[i]);
123         }
124         
125         int n = min( solve(X), solve(Y) );
126         int d = K*K;
127         int g = gcd(n, d);
128         printf("%d. %d/%d\n",cas++, n / g, d / g);
129     }
130 }


posted on 2010-07-18 16:21 wangzhihao 閱讀(258) 評論(0)  編輯 收藏 引用 所屬分類: 單調隊列
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久免费视频一区| 一区二区三区精品| 在线视频欧美精品| aa级大片欧美三级| 午夜伦欧美伦电影理论片| 亚洲精品免费在线播放| 一本久久知道综合久久| 羞羞漫画18久久大片| 久久激情综合网| 亚洲成色999久久网站| 久久影院午夜片一区| 亚洲高清不卡| 中文日韩在线视频| 久久久水蜜桃| 国产精品videosex极品| 国产亚洲精品一区二区| 亚洲精品1234| 亚洲欧美精品一区| 欧美xxxx在线观看| 亚洲夜晚福利在线观看| 麻豆成人av| 国产精品无人区| 亚洲国产欧美不卡在线观看| 亚洲一区二区在线播放| 欧美成人一区二区三区在线观看| 欧美激情1区2区| 亚洲欧美网站| 欧美精品电影| 影音先锋在线一区| 亚洲欧美日韩精品久久久| 欧美成人综合一区| 欧美一区二区观看视频| 欧美视频在线观看免费| 在线观看欧美日韩| 欧美伊人影院| 国产精品爽爽爽| 欧美日韩亚洲综合| 国产精品久久久一本精品| 亚洲高清中文字幕| 性色av一区二区三区红粉影视| 欧美成人a视频| 亚洲一区二区三区免费观看| 欧美精彩视频一区二区三区| 一区二区在线视频| 久久久久久夜精品精品免费| 中文精品视频| 欧美日韩中文| 在线亚洲成人| 亚洲欧洲精品成人久久奇米网| 久久―日本道色综合久久| 国产精品爱久久久久久久| 亚洲国产天堂久久国产91| 久久精品国产99| 亚洲中无吗在线| 国产精品国产馆在线真实露脸| 日韩视频永久免费观看| 欧美99在线视频观看| 欧美怡红院视频| 国产欧美精品在线| 欧美在线二区| 欧美一区二区三区免费在线看| 国产精品户外野外| 亚洲综合另类| 亚洲综合欧美日韩| 国产精品无码专区在线观看| 亚洲欧美日韩一区二区三区在线观看 | 亚洲国产婷婷| 亚洲国产成人porn| 欧美成人精品在线视频| 日韩小视频在线观看专区| 亚洲激情另类| 欧美日韩美女一区二区| 亚洲午夜羞羞片| 亚洲已满18点击进入久久| 国产女精品视频网站免费| 欧美在线视频观看免费网站| 欧美一区二区在线| 亚洲大胆视频| 亚洲精品乱码| 国产精品免费在线| 另类天堂av| 欧美成人69av| 亚洲女爱视频在线| 久久不射网站| 亚洲精品国精品久久99热| 一本色道久久99精品综合 | 国产精品国产亚洲精品看不卡15| 亚洲影院在线观看| 午夜亚洲福利| 999亚洲国产精| 亚洲欧美一级二级三级| 亚洲激情视频在线播放| 国产欧美亚洲日本| 国产一区在线播放| 免费人成精品欧美精品| 欧美激情偷拍| 久久av一区二区三区漫画| 久久三级视频| 午夜精品剧场| 噜噜爱69成人精品| 午夜精品久久| 欧美大片免费观看| 欧美一区二区三区久久精品茉莉花| 久久亚洲影音av资源网| 亚洲在线播放电影| 久久中文在线| 亚洲夜间福利| 欧美不卡福利| 久久亚洲电影| 国产伦精品一区二区三区| 91久久国产精品91久久性色| 国产亚洲一区二区精品| 亚洲免费黄色| 亚洲激情自拍| 久久影视三级福利片| 久久不射中文字幕| 国产精品国产三级国产aⅴ无密码| 欧美国产精品劲爆| 韩日在线一区| 欧美在线观看www| 亚洲欧美日韩国产中文| 欧美啪啪一区| 亚洲经典在线| 亚洲六月丁香色婷婷综合久久| 久久国产免费| 欧美综合国产| 国产日韩免费| 亚洲在线视频免费观看| 亚洲综合色自拍一区| 欧美日韩色婷婷| 亚洲美女电影在线| 亚洲伦伦在线| 欧美日韩免费区域视频在线观看| 欧美成人r级一区二区三区| 国产一区二区三区在线观看网站| 亚洲一区二区三区四区在线观看 | 日韩视频免费| 欧美日韩大片| 日韩西西人体444www| 在线综合亚洲欧美在线视频| 欧美另类视频| 亚洲理论在线| 亚洲欧美激情视频| 国产精品尤物| 欧美在线三区| 嫩草成人www欧美| 亚洲精品国产精品乱码不99按摩| 欧美精品国产一区| 夜夜嗨av色一区二区不卡| 亚洲午夜久久久| 国产精品日日摸夜夜添夜夜av| 亚洲在线播放| 久久综合久久综合久久综合| 一区精品在线| 欧美粗暴jizz性欧美20| 日韩亚洲成人av在线| 国产性做久久久久久| 久久精品国产一区二区三| 国产视频丨精品|在线观看| 久久精品国产96久久久香蕉| 久久综合色8888| 亚洲精品美女在线观看| 欧美日韩精品伦理作品在线免费观看| 亚洲精品国产拍免费91在线| 这里只有精品电影| 国产一区二区剧情av在线| 另类春色校园亚洲| 9国产精品视频| 久久午夜影视| 日韩视频在线你懂得| 国产欧美日韩不卡| 久久综合激情| 亚洲天堂av在线免费| 久久在线视频在线| 一区二区三区国产在线| 国产网站欧美日韩免费精品在线观看 | 免费亚洲婷婷| 亚洲一区二区成人| 欧美高清免费| 久久福利毛片| 99精品欧美一区二区蜜桃免费| 国产欧美一区二区视频| 欧美精品亚洲精品| 欧美一级大片在线观看| 亚洲久久在线| 美女图片一区二区| 亚洲在线一区二区| 亚洲人体偷拍| 国产亚洲综合精品| 欧美日韩亚洲一区二区三区在线观看| 久久精品国产免费观看| 99国产精品久久久久久久久久 | 欧美午夜在线| 欧美国产大片| 久久频这里精品99香蕉| 欧美一区二区三区啪啪| 亚洲一区二区三区高清| 一本久道久久久| 亚洲毛片播放| 亚洲日本va午夜在线电影|