BZOJ3993 SDOI2015 星際戰爭

2022-03-29 17:58:03 字數 2056 閱讀 3812

bzoj3993: [sdoi2015]星際戰爭

2023年,在銀河系的某星球上,x軍*和y軍*正在激烈地作戰。在戰鬥的某一階段,y軍*一共*遣了n個巨型機械人進攻x軍*的陣地,其中第i個巨型機械人的裝甲值為ai。當乙個巨型機械人的裝甲值減少到0或者以下時,這個巨型機械人就被摧毀了。x軍*有m個雷射**,其中第i個雷射**每秒可以削減乙個巨型機械人bi的裝甲值。雷射**的攻擊是連續的。這種雷射**非常奇怪,乙個雷射**只能攻擊一些特定的敵人。y軍*看到自己的巨型機械人被x軍*乙個乙個消滅,他們急需下達更多的指令。為了這個目標,y軍*需要知道x軍*最少需要用多長時間才能將y軍*的所有巨型機械人摧毀。但是他們不會計算這個問題,因此向你求助。

第一行,兩個整數,n、m。

第二行,n個整數,a1、a2…an。

第三行,m個整數,b1、b2…bm。

接下來的m行,每行n個整數,這些整數均為0或者1。這部分中的第i行的第j個整數為0表示第i個雷射**不可以攻擊第j個巨型機械人,為1表示第i個雷射**可以攻擊第j個巨型機械人。

一行,乙個實數,表示x軍*要摧毀y軍*的所有巨型機械人最少需要的時間。輸出結果與標準答案的絕對誤差不超過10-3即視為正確。

2 23 10

4 60 1

1 11.300000

【樣例說明1】

戰鬥開始後的前0.5秒,雷射**1攻擊2號巨型機械人,雷射**2攻擊1號巨型機械人。1號巨型機械人被完全摧毀,2號巨型機械人還剩餘8的裝甲值;

接下來的0.8秒,雷射**1、2同時攻擊2號巨型機械人。2號巨型機械人被完全摧毀。

對於全部的資料,1<=n, m<=50,1<=ai<=105,1<=bi<=1000,輸入資料保證x軍*一定能摧毀y軍*的所有巨型機械人

題解here!

很容易想到我們二分所需要的時間$t$。

然後用網路流判定是否能在這段時間內打完。

建圖很簡單:

從$s$到每乙個**$i$連一條邊,容量為$b_i\times t$。

從每乙個機械人$i+m$向$t$連一條邊,容量為$a_i$。

從每個**向所有能攻擊的機械人連一條邊,容量為$max$。

然後就可以跑了。

對於精度問題,注意到這題的精度要求並不是很高。

可以不用$double$二分及計算,把所有的流量全部乘以$10000$即可。

記得開$long\ long$。

附**:

#include#include#include#include#include#define maxn 60

#define max (1ll<<62)

using namespace std;

int n,m,c=2,s,t;

long long sum=0,blood[maxn],attack[maxn];

bool edge[maxn][maxn];

int head[maxn<<1],deep[maxn<<1];

struct nodea[maxn*maxn<<1];

inline int read()

while(c>='0'&&c<='9')

return date*w;

}inline void add(int u,int v,long long w)

bool bfs()

} }return false;

}long long dfs(int x,long long limit)

else deep[v]=-1;

} }return cost;

}long long dinic()

inline void clean()

bool check(long long x)

printf("%.6lf\n",(double)l/10000.00);

}void init()

for(int i=1;i<=m;i++)attack[i]=read();

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

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

edge[i][j]=read();

}int main()

bzoj3993 SDOI2015 星際戰爭

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

SDOI2015 BZOJ3993 星際戰爭

time limit 10 sec memory limit 128 mbsec special judge submit 201 solved 119 submit status discuss 3333年,在銀河系的某星球上,x軍 和y軍 正在激烈地作戰。在戰鬥的某一階段,y軍 一共 遣了n個巨...

3993 SDOI2015 星際戰爭

time limit 10 sec memory limit 128 mbsec special judge submit 1069 solved 489 submit status discuss 3333年,在銀河系的某星球上,x軍團和y軍團正在激烈地作戰。在戰鬥的某一階段,y軍團一共派遣了n個...