人太弱真是不能活qwq網上都說是裸題結果我還是沒想出怎麼做。。。
果然思考方向偏了真沒治。。
還是要抓住本質考慮:結果是每個點都在乙個環裡,這是大家都能想到的。更具體地說呢?每個點的入度和出度均為1,這種一分為二的思想,正好適合建立二分圖啊!我太sb居然直接沒往這個方向想。
想到就比較好做了,還是拆點,左邊為入度右邊為出度,s->左邊每個點,流量1費用0,右邊每個點->t,流量1費用0,中間相鄰點連邊,如果和原來方向一樣則費用為0否則為1,流量也是1。
抓住本質考慮問題,建立合適的模型!
#include
#include
#include
#define m 505
#define inf 1000000007
using namespace std;
int n,m,t,ans,cnt=1;
int a[16][16];
int dx[4]=;
int dy[4]=;
int head[505],dis[505],q[505],path[505];
intnext[3005],list[3005],flow[3005],cost[3005],from[3005];
bool vis[505];
inline int
read()
while (c>='0'&&c<='9')
return a*f;
}inline void insert(int
x,int
y,int z,int w)
inline int c(int i,int j)
inline bool spfa()
}vis[x]=0;
}return dis[t]!=inf;
}inline void mcf()
int main()
}for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
for (int k=0;k<4;k++)
for (int i=1;i<=n*m;i++)
insert(0,i,1,0),insert(i,0,0,0),insert(i+n*m,t,1,0),insert(t,i+n*m,0,0);
while (spfa()) mcf();
cout << ans << endl;
return
0;}
TJOI2013 松鼠聚會
題目描述 草原上住著一群小松鼠,每個小松鼠都有乙個家。時間長了,大家覺得應該聚一聚。但是草原非常大,松鼠們都很頭疼應該在誰家聚會才最合理。每個小松鼠的家可以用乙個點x,y表示,兩個點的距離定義為點 x,y 和它周圍的8個點 x 1,y x 1,y x,y 1 x,y 1 x 1,y 1 x 1,y ...
TJOI2013 獎學金 亂搞
從 c 個二元組 v,w 中選出 n 個,使其 v 的中位數最大的同時使 w 和小於等於 f 求這個中位數 有點意思。有點像二分答案的思路,列舉中位數,將原問題轉換為乙個判定問題,貪心選擇中位數之前 w 最小的 n 1 2 個,之後 w 最小的 n 1 2 個,然後判斷一下是否小於等於 f 即可。使...
TJOI2013 攻擊裝置
time limit 10 sec memory limit 128 mb submit 1326 solved 636 submit status discuss 給定乙個01矩陣,其中你可以在0的位置放置攻擊裝置。每乙個攻擊裝置 x,y 都可以按照 日 字攻擊其周圍的 8個位置 x 1,y 2 ...