擺王興致衝衝地跑到我們機房來對我說跟你講乙個黑科技。。。
我們發現如果dinic不建反向邊會跑的飛起(當然wa是必然的)
所以考慮在加反向邊的基礎上優化.
首先我們記錄網路中最大的乙個流量,設它為min,然後:注意bfs的一些操作,如果不當會溢位...把所有小於min的邊都加入網路中
最大流+=dinic()
min /= 2
到1然後在dinic時不走反向邊(但是值要改變),最後在可以走反向邊的情況下再來一次
#include#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
#define int ll
inline int gi()
while(ch>='0' && ch<='9')
return f*sum;
}const int n=500010,m=2000010,inf=1e10+10;
int n,m,s,t,ans,dep[n],cur[n];
struct node
e[m];
vectorfront[n];
vectore;
void add(int u,int v,int c)
); e.push_back((node));
front[u].push_back(e.size()-2);
}bool cmp(node a,node b)
queueq;
bool bfs()}}
return dep[t]<1e9;
}int dfs(int u,int flow)
ans+=dinic();}}
printf("%lld\n",ans);
return 0;
}
不一樣又不一樣的 木板接水
空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...
我們不一樣
前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...
我們不一樣
這麼多年的兄弟 有誰比我更了解你 太多太多不容易 磨平了歲月和脾氣 時間轉眼就過去 這身後不散的筵席 只因為我們還在 心留在原地 張開手 需要多大的勇氣 這片天 你我一起撐起 更努力 只為了我們想要的明天 好好的 這份情好好珍惜 我們不一樣 每個人都有不同的境遇 我們在這裡 在這裡等你 我們不一樣 ...