顯然這是乙個二分圖。我們假設在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的...