題目大意:
x軍*和y軍*正在激烈地作戰 在戰鬥的某一階段,y軍*一共*遣了n個巨型機械人進攻x軍*的陣地,其中第i個巨型機械人的裝甲值為ai
當乙個巨型機械人的裝甲值減少到0或者以下時,這個巨型機械人就被摧毀了
x軍*有m個雷射**,其中第i個雷射**每秒可以削減乙個巨型機械人bi的裝甲值
雷射**的攻擊是連續的。這種雷射**非常奇怪,乙個雷射**只能攻擊一些特定的敵人
y軍*需要知道x軍*最少需要用多長時間才能將y軍*的所有巨型機械人摧毀
思路:建圖還是比較好想的
但是答案需要二分,然後用最大流判斷
連邊的時候
每個**和超級源連一條時間(二分得到)* bi 的邊
每個**和它可以消滅的機械人連一條流量為這個**到源點的流量的邊
每個機械人和超級匯連一條流量 ai 的邊
每次二分之後判斷最大流是不是等於ai之和即可
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10view code#define ll long long
11#define inf 2139062143
12#define maxn 120
13#define eps 1e-4
14using
namespace
std;
15 inline int
read()
1619
while(isdigit(ch)) x=x*10+ch-'
0',ch=getchar();
20return x*f;21}
22int
n,m,a[maxn],b[maxn],mp[maxn][maxn],sum;
23struct
dinic
2429
void add(int u,int v,double w)
30void build(double
x)31
39int
bfs()
4053}54
}55return vis[s]==tot;56}
57double dfs(int x,double
a)58
67return
flow;68}
69double
solve()
7077
return
ans;78}
79}d;
80int
main()
8196 printf("
%lf"
,l);
97 }
BZOJ3993 星際戰爭 最大流
顯然這是乙個二分圖。我們假設在k時間內能夠摧毀所有機械人,那麼第i個雷射 總共能夠削弱k bi的裝甲值。也就是說,k bi ai 那麼構建一張網路流的圖,s向雷射 連邊,容量為k bi,雷射 向對應的機械人連邊,容量為inf,機械人向t連邊容量為ai 決策滿足單調性,二分最短時間k 最後判斷是否滿流...
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的...