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

算法學社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0

題目描述:

   由于題目描述過于imba,這里直接給出鏈接吧
   http://acm.hdu.edu.cn/showproblem.php?pid=4060

算法分析:


   先不考慮n == m && w==h的情況:
      對于白色部分,直接算。
      對于黑色部分,長條的話,直接消去對應和行/列。剩下的小格子部分就是喜聞樂見的最小點覆蓋。

   不過如果你認為這道regional的難題到此為止了的話O(w*h+n*m),你就too young,too simple了。
   考慮退化的情況,需要枚舉。但是總復雜度達到O(w^3),ggg...

   我的方法是預處理出(i,j)向上的連續1的個數和連續0的個數。
   這樣枚舉的時候不是一行一行,而是一格一格了。
   退化的復雜度O(w*(w+m))

#include<iostream>
#include<cstdio>
using namespace std;
const int V = 2005;
char ch[V];
const int N = 205;
int cx[N], cy[N], yM[N], G[N][N],n,m,chk[N],tmp[V][V][2];
int flag[N][N];
// match
int dfs(int u){
    for(int v =0; v<=m; v++) if(G[u][v] && !chk[v]){
        chk[v] = 1;
        if(yM[v] == -1 || dfs(yM[v])) {
            yM[v] = u;
            return 1;
        }
    }
    return 0;
}
//work
int h,w,t;
int work(int a,int b){
//    cout<<"work: "<<a<<" "<<b<<endl;
    for(int i=0;i<=n;i++) for(int j=0;j<=m;j++)
        cx[i] = cy[j] = G[i][j] = flag[i][j] = 0;
    for(int i=0;i<=m;i++) yM[i] = -1;
    int ans = 0;
    // visit all matrix
    for(int i = 0,x = 0,y,flaga;;i++,x++) {
        i += b -1;
        for(int j=0;j<w;j++) {
            y = j/(a+b);
            flaga = j%(a+b) < b;
            if(tmp[i][j][0] >= b) continue;
            if(flaga) G[x][y] = 1;
            else if(!cx[x]) ans += (cx[x] = 1);
        }
        i += a;
        if(i >= h) break;
        for(int j=0;j<w;j++) {
            y = j/(a+b);
            flaga = j%(a+b) < b;
            if(flaga && !cy[y] && tmp[i][j][0] < a) ans += (cy[y] = 1);
            else if(!flaga && !flag[x][y] && tmp[i][j][1] < a) ans += (flag[x][y] = 1);
        }
    }
//    cout<<ans<<endl;
    
// solve
    for(int i=0;i<=n;i++) if(cx[i])
        for(int j=0;j<=m;j++) if(G[i][j])
            G[i][j] = 0;
    for(int i=0;i<=m;i++) if(cy[i])
        for(int j=0;j<=n;j++) if(G[j][i])
            G[j][i] = 0;
    for(int i=0;i<=n;i++) {
        for(int j=0;j<=m;j++) chk[j] = 0;
        ans += dfs(i);
    }
    return ans;
}
int main(){
    while(~scanf("%d%d%d%d%d",&h,&w,&n,&m,&t)) {
        for(int i=0;i<h;i++){
            scanf("%s",ch);
            if(i == 0)     
                for(int j=0;j<w;j++) 
                    tmp[i][j][0] = ch[j]=='0', tmp[i][j][1] = ch[j]=='1';
            else 
                for(int j=0;j<w;j++)
                    if(ch[j] == '0') tmp[i][j][0] = tmp[i-1][j][0]+1, tmp[i][j][1] = 0;
                    else tmp[i][j][1] = tmp[i-1][j][1] +1, tmp[i][j][0] = 0;
        }
        int a,b,ans = -1;
        if(n == m && h == w) {
            for(a = 1; a*n < h; a++) if((h - a*n) % (n+1) == 0){
//                cout<<a<<" "<<b<<endl;
                b = (h - a*n) / (n + 1);
                if(a < b) continue;
                int v = work(a,b);
                if(ans == -1 || ans > v) ans = v;
            }
        }
        else {
            if(n == m) ans = -1;
            else if((h*m - w*n) % (m-n) == 0) {
                b = (h*m - w*n) / (m-n);
                if(b <= 0) ans = -1;
                else if((h - (n+1)*b) % n == 0){
                    a = (h - (n+1)*b) / n;
                    if(a < b) ans = -1;
                    else ans = work(a,b);
                }
                else ans = -1;
            }
            else ans = -1;
        }
        printf("%d\n", ans > 0 ?ans * t: ans);
    }
    return 0;
}
posted on 2012-08-04 06:14 西月弦 閱讀(378) 評論(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>
            久久国产精品99精品国产| 日韩视频久久| 狠狠色伊人亚洲综合网站色| 美女任你摸久久| 欧美日韩国产精品自在自线| 亚洲欧美国产不卡| 性欧美长视频| 欧美日韩一区综合| 亚洲欧美一区二区激情| 久久综合网hezyo| 亚洲自拍偷拍福利| 亚洲美女免费精品视频在线观看| 国产乱理伦片在线观看夜一区| 久久综合久久久| 亚洲自拍高清| 美女视频网站黄色亚洲| 亚洲黑丝在线| 国产伦精品一区二区三区| 欧美寡妇偷汉性猛交| 欧美日韩另类丝袜其他| aⅴ色国产欧美| 美女视频黄免费的久久| 久久国产免费看| 午夜精品久久久久久久男人的天堂| 亚洲日韩欧美视频一区| 亚洲人成在线影院| 亚洲精品视频在线看| 亚洲黄色一区| 日韩一级视频免费观看在线| 日韩视频专区| 夜夜嗨av一区二区三区| 亚洲视频一区二区| 亚洲图片激情小说| 91久久精品网| 亚洲黄色一区| 亚洲精品乱码久久久久久| 欧美激情1区| 亚洲精品免费在线播放| 在线亚洲伦理| 欧美在线黄色| 美女图片一区二区| 欧美日韩美女一区二区| 国产伦精品一区二区三区免费迷| 国产精品亚洲一区| 亚洲国产另类 国产精品国产免费| 日韩视频在线免费| 午夜精品99久久免费| 99视频在线精品国自产拍免费观看| 亚洲性视频网址| 久久久久久久久伊人| 亚洲电影一级黄| 欧美激情一级片一区二区| 亚洲精品在线三区| 欧美一区二区三区婷婷月色| 欧美成人精精品一区二区频| 日韩图片一区| 久久久97精品| 国产精品久久久久久久久果冻传媒| 激情综合自拍| 午夜精品久久久久久久男人的天堂| 久久久亚洲一区| 亚洲视频精选| 美女视频黄免费的久久| 国产欧美精品国产国产专区| 日韩一区二区精品| 蜜桃av噜噜一区| 欧美一级成年大片在线观看| 欧美日韩午夜| 亚洲茄子视频| 久久久97精品| 性色av一区二区怡红| 欧美日韩精品免费观看视频完整| 欧美日韩一区二区三区在线视频| 国产日韩视频| 亚洲精品久久久久久久久久久 | 亚洲精品影院在线观看| 夜夜嗨av一区二区三区四季av| 亚洲一区二区三区四区视频| 欧美成年网站| 久久国产精品黑丝| 国产日韩欧美日韩| 香蕉成人啪国产精品视频综合网| 亚洲伦理在线| 欧美美女操人视频| 日韩视频一区二区在线观看| 亚洲美女在线一区| 蜜桃av噜噜一区二区三区| 亚洲另类在线视频| 欧美一级片久久久久久久 | 免费成人小视频| 欧美一区二区性| 国产啪精品视频| 午夜视频在线观看一区| 亚洲综合国产| 国产区二精品视| 欧美在线国产精品| 欧美一区二区三区四区在线观看| 国产日产精品一区二区三区四区的观看方式 | 久热这里只精品99re8久| 99精品福利视频| 久久久久在线观看| 亚洲国产婷婷香蕉久久久久久99| 欧美高清hd18日本| 欧美日韩第一页| 午夜精品剧场| 久久精品国产第一区二区三区| 激情欧美亚洲| 亚洲成人在线免费| 久久久久久久久久久久久久一区 | 午夜精品福利视频| 亚洲免费中文| 国一区二区在线观看| 女同性一区二区三区人了人一| 老司机精品导航| 亚洲图片欧美午夜| 欧美制服丝袜第一页| 亚洲电影av| 看片网站欧美日韩| 久久久亚洲影院你懂的| 日韩亚洲一区在线播放| 亚洲一区二区影院| 黄色成人av在线| 亚洲国产精品一区二区第四页av | 欧美一区午夜精品| 91久久精品国产91久久性色tv| 亚洲另类在线一区| 国产字幕视频一区二区| 亚洲精品国产精品乱码不99| 国产欧美丝祙| 亚洲韩国日本中文字幕| 国产老肥熟一区二区三区| 女主播福利一区| 国产精品久久久久久久久久尿| 久久综合影视| 国产精品入口尤物| 最新精品在线| 国产精品久久久久国产a级| 免费成人性网站| 免费成年人欧美视频| 久久成人精品无人区| 欧美乱大交xxxxx| 欧美在线观看一区| 欧美日韩在线播放三区| 欧美v日韩v国产v| 欧美激情视频一区二区三区在线播放| 9i看片成人免费高清| 久久精品女人的天堂av| 亚洲欧美一区二区精品久久久| 免费在线亚洲| 可以免费看不卡的av网站| 国产日产精品一区二区三区四区的观看方式 | 亚洲午夜精品一区二区| 国产一区二区三区在线观看精品 | 亚洲国产小视频在线观看| 在线综合亚洲| 一区一区视频| 久久国产精品99精品国产| 性色av香蕉一区二区| 欧美日韩一区在线播放| 久久久国产精品一区| 欧美日韩国产一区精品一区| 亚洲欧美一区二区在线观看| 国产精品高清免费在线观看| 亚洲另类一区二区| 欧美淫片网站| 亚洲国产欧洲综合997久久| 欧美经典一区二区| 亚洲三级性片| 欧美亚洲视频| 91久久在线观看| 国产精品伦理| 老司机一区二区| 99精品欧美一区| 亚洲欧美在线x视频| 国产亚洲永久域名| 欧美大片18| 欧美一区二区在线免费观看| 亚洲福利在线看| 欧美亚洲一区二区在线观看| 亚洲电影免费在线观看| 国产精品高潮呻吟久久| 久久久欧美一区二区| 亚洲视屏在线播放| 亚洲成人在线视频网站| 欧美一区二区日韩一区二区| 亚洲日本欧美天堂| 国产日韩欧美一区在线| 欧美欧美在线| 久久亚洲不卡| 欧美一区二区日韩一区二区| 亚洲精选一区二区| 免费日韩一区二区| 久久久精品一品道一区| 亚洲欧美三级在线| 在线综合亚洲| 亚洲最新色图| 亚洲精品小视频| 亚洲国产日韩美| 精品不卡一区二区三区| 国产日韩av一区二区|