#include<cstdio>
#include<queue>
using namespace std; const int M = 10000;
const double inf = 1e18;
int n , m , h[505] , cur[505] , dep[505] , s , t , tot = 1;
double a[55] , b[55] , ans , Max;
struct edge{
int to , nxt;
double w;
}e[M + 5] , ee[M + 5]; inline double min(double x , double y) {return x < y ? x : y;}; inline void add(int x , int y , double w)
{
e[++tot].to = y;
e[tot].w = w;
e[tot].nxt = h[x];
h[x] = tot;
} inline int bfs(int s , int t)
{
for(register int i = s; i <= t; i++) dep[i] = 0 , cur[i] = h[i];
queue<int> Q;
dep[s] = 1;
Q.push(s);
while (!Q.empty())
{
int now = Q.front();
Q.pop();
for(register int i = h[now]; i; i = ee[i].nxt)
{
int v = ee[i].to;
if (ee[i].w <= 0 || dep[v] != 0) continue;
dep[v] = dep[now] + 1;
Q.push(v);
}
}
return dep[t];
} inline double dfs(int x , int fa , double mi)
{
if (x == t || mi <= 0) return mi;
double flow = 0;
for(register int i = cur[x]; i; i = ee[i].nxt)
{
cur[x] = i;
int v = ee[i].to;
if (v == fa || dep[x] + 1 != dep[v] || ee[i].w <= 0) continue;
double f = dfs(v , x , min(mi , ee[i].w));
if (f <= 0) continue;
mi -= f , ee[i].w -= f , ee[i ^ 1].w += f , flow += f;
if (mi <= 0) break;
}
return flow;
} inline bool check(double mid)
{
for(register int i = 1; i <= tot; i++) ee[i] = e[i];
for(register int i = h[s]; i; i = ee[i].nxt)
ee[i].w = b[ee[i].to] * mid;
double res = 0;
while (bfs(s , t)) res += dfs(s , 0 , inf);
return res >= Max;
} int main()
{
// freopen("星际战争.in" , "r" , stdin);
scanf("%d%d" , &n , &m);
t = n + m + 5;
for(register int i = 1; i <= n; i++)
{
scanf("%lf" , &a[i]);
Max += a[i];
add(i + m , t , a[i]);
add(t , i + m , 0);
}
for(register int i = 1; i <= m; i++)
{
scanf("%lf" , &b[i]);
add(s , i , b[i]);
add(i , s , 0);
}
int x;
for(register int i = 1; i <= m; i++)
for(register int j = 1; j <= n; j++)
{
scanf("%d" , &x);
if (x == 1) add(i , j + m , inf) , add(j + m , i , 0);
}
double l = 0 , r = 1e9 , mid;
for(register int i = 1; i <= 60; i++)
{
mid = (l + r) * 0.5;
if (check(mid)) r = mid , ans = mid;
else l = mid;
}
printf("%.6lf" , ans);
}

【SDOI2015】星际战争的更多相关文章

  1. BZOJ 3993: [SDOI2015]星际战争 [二分答案 二分图]

    3993: [SDOI2015]星际战争 题意:略 R1D2T1考了裸二分答案+二分图最大匹配... #include <iostream> #include <cstdio> ...

  2. BZOJ_3993_[SDOI2015]星际战争_二分+网络流

    BZOJ_3993_[SDOI2015]星际战争_二分+网络流 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进 ...

  3. bzoj千题计划131:bzoj3993: [SDOI2015]星际战争

    http://www.lydsy.com/JudgeOnline/problem.php?id=3993 二分答案 源点向武器连 mid*攻击力的边 机器人向汇点连 防御力 的边 武器i能攻击机器人j ...

  4. 3993: [SDOI2015]星际战争

    3993: [SDOI2015]星际战争 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1244  Solved: ...

  5. 【BZOJ3993】[SDOI2015]星际战争 二分+最大流

    [BZOJ3993][SDOI2015]星际战争 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地 ...

  6. bzoj3993: [SDOI2015]星际战争(网络流)

    3993: [SDOI2015]星际战争 题目:传送门 题解: 洛谷AC了,但是因为bzoj的spj有问题所以暂时没A 一道老题目了,二分时间然后网络流判断. 每次st-->武器连时间*攻击力 ...

  7. 洛谷P3324 [SDOI2015]星际战争

    题目:洛谷P3324 [SDOI2015]星际战争 思路: 类似<导弹防御塔>,因为题目保证有解,花费时间小于最终答案时一定无法消灭所有敌人,只要花费时间大于等于最终答案都可以消灭所有敌人 ...

  8. 【BZOJ】3993: [SDOI2015]星际战争

    题意 \(m\)个人\(n\)个物品,第\(i\)个物品生命值为\(A_i\),第\(i\)个人每秒可以减少一个物品\(B_i\)的生命值,给出一个\(m \times n\)的矩阵,如果\(i\)行 ...

  9. bzoj 3993: [SDOI2015]星际战争

    #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> #def ...

  10. BZOJ3993 [SDOI2015]星际战争

    二分答案...然后最大流验证是否可行... 没了,好水啊QAQ /************************************************************** Prob ...

随机推荐

  1. QMetaObject::connectSlotsByName: No matching signal for xxx

    问题描述 这个问题是没有与 xxx 这个槽函数匹配的信号,但是我做了 QMetaObject::connectSlotsByName(this);, 自动连接.并且确保了函数名和信号名是没有错误的,还 ...

  2. 修改Listen 1源码的一点心得

    注:本文只作为技术交流 首先感谢听1的作者写出这么强大的音乐播放器!! 软件首页地址:点击打开链接 软件的github上上上地址:点击打开链接 软件唯一让我美中不足的就是不能下载,这可能是作者考虑到了 ...

  3. redux原理分享

    概述 一个状态管理工具 Store:保存数据的地方,你可以把它看成一个容器,整个应用只能有一个 Store. State:包含所有数据,如果想得到某个时点的数据,就要对 Store 生成快照,这种时点 ...

  4. 【2022-11-28】Docker部署搭建Gitlab

    一.环境准备 1. 准备一台虚拟机\或者购买服务器 2. 虚拟机硬件要求 2.1 内存不得少于4G,否则启动会报502错误,可自行百度解决,将虚拟机的swap分区调整为2G大小即可 2.2 CPU2核 ...

  5. Java中的反射机制及反射的优缺点

    1. 反射的概念 反射 机制指的是,程序在运行时能够获取自身的信息.在 java 中只要给定类的名字,就能够获取类的所有属性和方法. 反射是 Java 中很多高级特性的基础,比如 注解.动态代理 以及 ...

  6. 微服务开发平台 Spring Cloud Blade 部署实践

    本文介绍使用 Rainbond 快速部署 Spring Cloud Blade 微服务平台.Spring Cloud Blade 是一个由商业级项目升级优化而来的微服务架构,采用Spring Boot ...

  7. STM32与PS2的无线通信和相关函数介绍

    PS2采用SPI通信协议 源码和参考文件获取:https://github.com/Sound-Sleep/PS2_Based_On_STM32 接收器接口 DI:手柄->主机,时钟的下降沿传送 ...

  8. SQL语句查询关键字:where筛选、group by分组、distinc去重、order by排序、limit分页、操作表的SQL语句布补充

    目录 SQL语句查询关键字 前期数据准备 编写SQL语句的小技巧 查询关键字之where筛选 查询关键字之group by分组 查询关键字之having过滤 查询关键字值distinct去重 查询关键 ...

  9. JavaScript:类(class)

    在JS中,类是后来才出的概念,早期创造对象的方式是new Function()调用构造函数创建函数对象: 而现在,可以使用new className()构造方法来创建类对象了: 所以在很多方面,类的使 ...

  10. [OpenCV实战]11 基于OpenCV的二维码扫描器

    目录 1 二维码(QRCode)扫描 2 结果 3 参考 在这篇文章中,我们将看到如何使用OpenCV扫描二维码.您将需要OpenCV3.4.4或4.0.0及更高版本来运行代码. 1 二维码(QRCo ...