題面戳我
這裡推薦一下相關的題目(我可以說是雙倍經驗題嗎)
luogu2045 方格取數加強版其實還是有點區別的啦
這個題是說邊上面有邊權所以就不需要拆點了嗷。
每條邊可以採集一次,那麼肯定要連一條費用為收益容量為1的邊。
那這條邊就不可以走了嗎?
顯然不是。
所有還要連一條費用為0容量為\(inf\)的邊。
所以就這樣建邊然後跑費用流就好啦。
#include#include#include#includeusing namespace std;
const int inf = 1e9;
const int n = 2000;
struct edgea[n<<5];
int a,b,p,q,s,t,pos[100][100],tot,head[n],cnt=1,dis[n],vis[n],pe[n],ans;
queueq;
int gi()
void link(int u,int v,int w,int cost)
; head[u]=cnt;
a[++cnt]=(edge);
head[v]=cnt;
}bool spfa()
}vis[u]=0;
}if (dis[t]==dis[0]) return false;
int sum=inf;
for (int i=t;i^s;i=a[pe[i]^1].to)
sum=min(sum,a[pe[i]].w);
ans-=sum*dis[t];
for (int i=t;i^s;i=a[pe[i]^1].to)
a[pe[i]].w-=sum,a[pe[i]^1].w+=sum;
return true;
}int main()
for (int j=0;j<=q;j++)
for (int i=0;iwhile (a--)
while (b--)
while (spfa());
printf("%d\n",ans);
return 0;
}
網路流24題 深海機械人問題
網路流24題大多需要spj,所以需要乙個有spj的oj,本系列 均在www.oj.swust.edu.cn測試通過 這道題其實和數字梯形的第三個規律挺像的 點和路徑均可重合 唯一的差別就是這道題的路徑權值只能計算一次,那怎麼辦呢,其實不難,我們只要將容量為inf的邊的權值修改為0,在此基礎上再加一條...
深海機械人問題 網路流24題
思路 和方格取數差不多的一道題 只是輸入有點噁心 然而他好像提示了怎麼輸出 之後就是建圖標準最大費用最大流了 不知道為什麼spfa的最大流t了乙個點 難道說資料這麼喪心病狂嗎 zkw的話倒是50ms就跑完了 code 1 include 2 define dbg x cout x x endl34 ...
洛谷 網路流24題 深海機械人問題
初見安 這裡是傳送門 洛谷p4012 網路流24題 深海機械人問題 題意很簡單,多個點出發多個機械人,每條路徑上有價值,但是只能收集一次而路徑可以被多個機械人走,求最大可收集價值。網路流建圖很明顯就如題意建網格圖。但是對於每條邊我們要整兩條,一條容量為1,費用為價值,一條容量為inf,費用為0。換言...