BZOJ3993 星際戰爭 最大流

2021-07-10 15:18:03 字數 1197 閱讀 7482

顯然這是乙個二分圖。我們假設在k時間內能夠摧毀所有機械人,那麼第i個雷射**總共能夠削弱k∗

bi的裝甲值。也就是說,∑k

∗bi≥

∑ai 。那麼構建一張網路流的圖,s向雷射**連邊,容量為k∗

bi,雷射**向對應的機械人連邊,容量為inf,機械人向t連邊容量為ai

。決策滿足單調性,二分最短時間k;最後判斷是否滿流(我也不知道為什麼判斷maxflow是否大於∑a

i 就wa了,估計精度被卡)。

#include

#include

#include

#define maxn 3010

#define inf 1e10

#define eps 1e-7

using

namespace

std;

inline

double min(double a,double b)

e(int a,double b,int c)

};vector

g[maxn];

int d[maxn],vd[maxn],n,m,s,t;

int a[maxn],b[maxn];

double sum,flow;

void add(int u,int v,double w)

double aug(int i,double augco)

if(d[v] < mind) mind = d[v];}}

if(augc == augco)

return augco-augc;

}void sap()

bool check(double k)

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

}sap();

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

}return

true;

}int main()

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

int x;

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

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

double l = 0,r = 5e6,mid,ans;

while(r-l>eps)

printf("%lf\n",(l+r)/2);

}

bzoj 3993 星際戰爭

題目大意 x軍 和y軍 正在激烈地作戰 在戰鬥的某一階段,y軍 一共 遣了n個巨型機械人進攻x軍 的陣地,其中第i個巨型機械人的裝甲值為ai 當乙個巨型機械人的裝甲值減少到0或者以下時,這個巨型機械人就被摧毀了 x軍 有m個雷射 其中第i個雷射 每秒可以削減乙個巨型機械人bi的裝甲值 雷射 的攻擊是...

BZOJ3993 星際戰爭(網路流,二分答案)

3333年,在銀河系的某星球上,x軍團和y軍團正在激烈地作戰。在戰鬥的某一階段,y軍團一共派遣了n個巨型機械人進攻x軍團的陣地,其中第i個巨型機械人的裝甲值為ai。當乙個巨型機械人的裝甲值減少到0或者以下時,這個巨型機械人就被摧毀了。x軍團有m個雷射 其中第i個雷射 每秒可以削減乙個巨型機械人bi的...

bzoj3993 SDOI2015 星際戰爭

3333年,在銀河系的某星球上,x軍團和y軍團正在激烈地作戰。在戰鬥的某一階段,y軍團一共派遣了n個巨型機械人進攻x軍團的陣地,其中第i個巨型機械人的裝甲值為ai。當乙個巨型機械人的裝甲值減少到0或者以下時,這個巨型機械人就被摧毀了。x軍團有m個雷射 其中第i個雷射 每秒可以削減乙個巨型機械人bi的...