CQOI2017 bzoj4823 老C的方塊

2021-07-30 12:13:42 字數 1136 閱讀 9013

可以注意到,每乙個討厭的形狀,都可以看成一條特殊邊兩側的方塊再各連出去乙個方塊。

這樣我們可以把格仔分成四類,如圖。

每乙個討厭的形狀,都可以看成是黃→黑→紅→綠。因此分四層建圖跑最小割就行了。

#include

#include

#include

using namespace std;

const

int maxn=100010,s=100005,t=100006,oo=0x3f3f3f3f;

int rd()

return x;

}int fir[maxn],cur[maxn],ne[20*maxn],to[20*maxn],w[20*maxn],dep[maxn],que[maxn],

xx[maxn],yy[maxn],ww[maxn],

n,num,r,c;

mapint,int>,int> id;

void check()

void add(int u,int v,int x)

bool bfs()

}return dep[t];

}int dfs(int u,int lim)

return ret;

}int main()

for (int i=1;i<=n;i++)

switch (xx[i]%4)

break;

case

1: if (yy[i]&1)

}else add(s,i,ww[i]);

break;

case

2: if (yy[i]&1)

else add(i,t,ww[i]);

break;

case

3: if (yy[i]&1) add(i,t,ww[i]);

else}}

//check();

while (bfs())

printf("%d\n",ans);

}

BZOJ4813 Cqoi2017 小Q的棋盤

找以起點為起點的乙個最長鏈,最優一定是在最長鏈上不走回頭路的,所以相當於最長鏈上的邊代價是1,非最長鏈的邊代價是2 因為要走回去 每付出一次代價就可以使訪問到的點數 1,那麼貪心即可 include include include include include include include in...

bzoj4822 Cqoi2017 老C的任務

time limit 20 sec memory limit 512 mb submit 284 solved 152 submit status discuss 老 c 是個程式設計師。最近老 c 從老闆那裡接到了乙個任務 給城市中的手機基站寫個管理系統。作為經驗豐富的程式設計師,老 c 輕鬆 地...

bzoj4813 Cqoi2017 小Q的棋盤

小q正在設計一種棋類遊戲。在小q設計的遊戲中,棋子可以放在棋盤上的格點中。某些格點之間有連線,棋子只能在有連線的格點之間移動。整個棋盤上共有v個格點,編號為0,1,2 v 1,它們是連通的,也就是說棋子從任意格點出發,總能到達所有的格點。小q在設計棋盤時,還保證棋子從乙個格點移動到另外任一格點的路徑...