3993 SDOI2015 星際戰爭

2022-05-03 09:30:20 字數 2200 閱讀 8879

time limit: 10 sec  memory limit: 128 mbsec  special judge

submit: 1244  solved: 560

[submit][status][discuss]

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軍*的所有巨型機械人

round 1 感謝yts1999上傳

題解:

顯然隨著時間的增長,能摧毀的機械人是不減的,這就有了單調性

我們就先二分時間t,由s向每個**連容量為它在t時間內能造成的傷害的邊

由**向每個能攻擊到的機械人連一條容量為inf的邊,由每個機械人向t連容量為它的裝甲值的邊

如果最大流=所有機械人的裝甲值,則這個時間是可行的

#include#include

#include

#include

using

namespace

std;

typedef

double

real;

const

int v=120

;const

int e=v*v*2

;const real eps=1e-8

;struct edgee[e],ed[e];int tot=1

,po,head[v],last[v];

int n,m,s,t,dis[v],q[v];bool

vis[v];

real ans,a[v],b[v];

inline

intread()

while(ch>='

0'&&ch<='9')

return x*f;

}inline

void add(int x,int

y,real z)

inline

bool

bfs()}}

return0;

}real dfs(

intx,real f)

}if(!used) dis[x]=-1

;

return

used;

}inline real dinic()

inline

void

change(real lim)

inline

void

init()

}po=tot;

for(int i=2;i<=tot;i++) ed[i]=e[i];

for(int i=s;i<=m;i++) last[i]=head[i];

}inline

void

work()

printf(

"%.7lf

",l);

}int

main()

3993 SDOI2015 星際戰爭

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

3993 SDOI2015 星際戰爭

題目鏈結 題解 二分答案,st向 連一條值為最大攻擊力,機械人向ed連一條值為血量,如果 可以打機械人,就連一條值為inf的邊,精度炸裂啊!include include include include include include includeusing namespace std defin...

bzoj3993 SDOI2015 星際戰爭

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