BZOJ-3144: [Hnoi2013]切糕(最小割)

題目:http://www.lydsy.com/JudgeOnline/problem.php?id=3144

挺神奇的一個(gè)最小割模型,對(duì)于限制2自己動(dòng)手畫圖YY一下就可以啦~绢涡。

代碼:

#include <cstdio>
#include <algorithm>
#include <cstring>
 
using namespace std ;
 
#define MAXN 50
#define inf 0x7fffffff
#define MAXV 100010
 
struct network {
      
    struct edge {
        edge *next , *pair ;
        int t , f ;
    } *head[ MAXV ] ;
      
    void Add( int s , int t , int f ) {
        edge *p = new( edge ) ;
        p -> t = t , p -> f = f , p -> next = head[ s ] ;
        head[ s ] = p ;
    }
      
    void AddEdge( int s , int t , int f ) {
        Add( s , t , f ) ,Add( t , s , 0 ) ;
        head[ s ] -> pair = head[ t ] , head[ t ] -> pair = head[ s ] ;
    }
      
    int S , T ;
      
    network(  ) {
        memset( head , 0 , sizeof( head ) ) ;
    }
      
    int h[ MAXV ] , gap[ MAXV ] ;
    edge *d[ MAXV ] ;
      
    int sap( int v , int flow ) {
        if ( v == T ) return flow ;
        int rec = 0 ;
        for ( edge *p = d[ v ] ; p ; p = p -> next ) if ( p -> f && h[ v ] == h[ p -> t ] + 1 ) {
            int ret =sap( p -> t ,min( flow - rec , p -> f ) ) ;
            p -> f -= ret , p -> pair -> f += ret , d[ v ] = p ;
            if ( ( rec += ret ) == flow ) return flow ;
        }
        if ( ! ( -- gap[ h[ v ] ] ) ) h[ S ] = T ;
        gap[ ++ h[ v ] ] ++ , d[ v ] = head[ v ] ;
        return rec ;
    }
      
    int maxflow(  ) {
        int flow = 0 ; 
        memset( h , 0 , sizeof( h ) ) ;
        memset( gap , 0 , sizeof( gap ) ) ;
        for ( int i = 0 ; i ++ < T ; ) d[ i ] = head[ i ] ;
        gap[ S ] = T ;
        while ( h[ S ] < T ) flow +=sap( S , inf ) ;
        return flow ;
    }
      
} net ;
 
int n , m , h , D , node[ MAXN ][ MAXN ][ MAXN ] , V = 0 ;
const int dir[ 4 ][ 2 ] = { { -1 , 0 } , { 1 , 0 } , { 0 , 1 } , { 0 , -1 } } ;
 
int main(  ) {
    scanf( "%d%d%d%d" , &n , &m , &h , &D ) ;
    for ( int i = 0 ; i ++ < n ; ) for ( int j = 0 ; j ++ < m ; ) {
        for ( int k = 0 ; k ++ < h + 1 ; ) node[ i ][ j ][ k ] = ++ V ;
    }
    net.S = ++ V ; net.T = ++ V ;
    for ( int i = 0 ; i ++ < n ; ) for ( int j = 0 ; j ++ < m ; ) {
        net.AddEdge( net.S , node[ i ][ j ][ 1 ] , inf ) ;
        net.AddEdge( node[ i ][ j ][ h + 1 ] , net.T , inf ) ;
    }
    for ( int k = 0 ; k ++ < h ; ) {
        for ( int i = 0 ; i ++ < n ; ) for ( int j = 0 ; j ++ < m ; ) {
            int x ;scanf( "%d" , &x ) ;
            net.AddEdge( node[ i ][ j ][ k ] , node[ i ][ j ][ k + 1 ] , x ) ;
        }
    }
    for ( int k = 0 ; k ++ < h - D + 1 ; ) {
        for ( int i = 0 ; i ++ < n ; ) for ( int j = 0 ; j ++ < m ; ) {
            for ( int w = 0 ; w < 4 ; w ++ ) {
                int x = i + dir[ w ][ 0 ] , y = j + dir[ w ][ 1 ] ;
                if ( x <=0 || y <=0 || x > n || y > m ) continue ;
                net.AddEdge( node[ i ][ j ][ k + D ] , node[ x ][ y ][ k ] , inf ) ;
            }
        }
    }
    printf( "%d\n" , net.maxflow(  ) ) ;
    return 0 ;
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市纹冤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌购公,老刑警劉巖萌京,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宏浩,居然都是意外死亡知残,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門绘闷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橡庞,“玉大人较坛,你說我怎么就攤上這事“亲睿” “怎么了丑勤?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吧趣。 經(jīng)常有香客問我法竞,道長,這世上最難降的妖魔是什么强挫? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任岔霸,我火速辦了婚禮,結(jié)果婚禮上俯渤,老公的妹妹穿的比我還像新娘呆细。我一直安慰自己,他們只是感情好八匠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布絮爷。 她就那樣靜靜地躺著,像睡著了一般梨树。 火紅的嫁衣襯著肌膚如雪坑夯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天抡四,我揣著相機(jī)與錄音柜蜈,去河邊找鬼。 笑死指巡,一個(gè)胖子當(dāng)著我的面吹牛淑履,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播藻雪,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼鳖谈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了阔涉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤捷绒,失蹤者是張志新(化名)和其女友劉穎瑰排,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暖侨,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椭住,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了字逗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片京郑。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宅广,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出些举,到底是詐尸還是另有隱情跟狱,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布户魏,位于F島的核電站驶臊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏叼丑。R本人自食惡果不足惜关翎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸠信。 院中可真熱鬧纵寝,春花似錦、人聲如沸星立。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贞铣。三九已至闹啦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辕坝,已是汗流浹背窍奋。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酱畅,地道東北人琳袄。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像纺酸,于是被迫代替她去往敵國和親窖逗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 先說答案:不愛,但動(dòng)過心樊诺,然最重要的是當(dāng)做往上爬的依靠仗考。 別著急反駁,且聽我細(xì)細(xì)講與你聽词爬。 女生們先回憶一下自己第...
    葉子今年二十三閱讀 1,079評(píng)論 11 14
  • 最近看的很多文章都是勵(lì)志類的秃嗜,如"你必須很努力,才能看起來毫不費(fèi)力","你要努力才能成為你喜歡的樣子"等等锅锨,總之叽赊,...
    笑魚閱讀 347評(píng)論 0 0
  • 物權(quán)眾籌是互聯(lián)網(wǎng)金融時(shí)代新興的理財(cái)模式,此模式自15年被提出來后必搞,受到了廣大投資人的熱烈反響必指。 什么是物權(quán)眾籌? ...
    天吶一言不合就飚車閱讀 237評(píng)論 0 0
  • 村莊里顾画,每戶人家都有院壩取劫。有的是單家獨(dú)戶擁有,有的是幾家共享研侣。 院壩也不知道自己究竟多大了谱邪。或許是太爺爺那輩就開始...
    土家霜妹閱讀 490評(píng)論 0 2
  • 曹黑娃從鄉(xiāng)政府民政干事手中拿到了離婚證后庶诡,在一段時(shí)間里老實(shí)多了惦银,經(jīng)常是二門不邁,大門不出末誓,在家里埋頭睡大覺扯俱。...
    閆忠錄閱讀 207評(píng)論 0 0