3993 SDOI2015 星際戰爭

2021-07-26 12:20:43 字數 2101 閱讀 1087

time limit: 10 sec  

memory limit: 128 mbsec  

special judge

submit: 1069  

solved: 489 [

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上傳 [

submit][

status][

discuss]

顯然,如果答案為xs,那麼在這段時間內每門雷射炮一定是持續輸出答案才能最優

考慮二分最終答案,那麼每門雷射炮能輸出的傷害也就固定了,最大流驗證即可

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

const int maxm = 2e5 + 20;

typedef double db;

const db eps = 1e-5;

const db eps = 1e-8;

const db inf = 1e12;

struct e

e(int to,db cap,db flow): to(to),cap(cap),flow(flow){}

}edgs[maxm];

int n,m,s,t,cnt,cur[200],l[200],g[55][55];

db tot,a[55],b[55];

vector v[200];

queue q;

bool judge(const db &x,const db &y)

void add(int x,int y,db cap)

bool bfs()

}return l[t];}

db dinic(int x,db a)

if (judge(flow,0.00)) l[x] = -1; return flow;}

bool judge(db now)

for (int i = s; i <= t; i++) v[i].clear();

cnt = 0; return judge(maxflow,tot);}

int main()

printf("%.8f\n",(l + r) / 2.00);

return 0;

}

3993 SDOI2015 星際戰爭

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

3993 SDOI2015 星際戰爭

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

bzoj3993 SDOI2015 星際戰爭

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