传送门


SOL

首先思考dp,发现一个合法的方案限制太多,难以dp。
n,m≤50n,m\le50n,m≤50,有点网络流的味道

思考贪心,即在相同的时间内,让所有机器人的总输出尽量大,构造方案可以最大流;

建图:机器人向汇点连容量为装甲值的边,源点向激光炮连边,根据激光炮和机器人的攻击关系连容量为inf的边。
源点向iii激光炮连边容量为 bi∗tb_{i}*tbi​∗t,二分ttt,判断总流量能否达到 ∑i=1nAi\sum_{i=1}^n A{i}∑i=1n​Ai;


CODE

#include<bits/stdc++.h>
using namespace std;
#define sf scanf
#define pf printf
#define ll long long
#define db double
#define cs const
cs int N=1e4+10,mov=50;
ll inf=1e18;
cs db eps=1e-7,eps2=1e-4;
int nxt[N],to[N],head[N],cnt=1,S,T,n,m,A;
ll w[N];
inline void _add(int u,int v,ll ww){nxt[++cnt]=head[u];head[u]=cnt;to[cnt]=v;w[cnt]=ww;
}
//inline bool equal(cs db &a,cs db &b){//  return abs(a-b)<eps;
//}
namespace dinic{int dep[N],cur[N];db c[N];inline bool bfs(){for(int i=S;i<=T;++i)dep[i]=-1;queue<int> q;q.push(T);dep[T]=1;while(!q.empty()){int u=q.front();q.pop();for(int i=head[u];i;i=nxt[i]){if(c[i^1]<eps)continue;int v=to[i];if(v==S){dep[v]=dep[u]+1;return 1;}if(dep[v]==-1){dep[v]=dep[u]+1;q.push(v);}}}return 0;}inline db dfs(int u,db f){if(u==T)return f;if(f<eps)return 0;db tot=0,now=0;for(int &i=cur[u];i;i=nxt[i]){//  cout<<to[i]<<' '<<f<<'\n';if(c[i]<eps)continue;int v=to[i];if(dep[v]==dep[u]-1){now=dfs(v,min(f-tot,c[i]));if(!now)continue;tot+=now;c[i]-=now;c[i^1]+=now;if(f-tot<eps)break;}}return tot;}inline bool cflow(db t){db ret=0;for(int i=2;i<=cnt;++i)c[i]=1.0*w[i];for(int i=head[S];i;i=nxt[i]){c[i]=t*w[i];}while(bfs()){for(int i=S;i<=T;++i)cur[i]=head[i];ret+=dfs(S,inf);}return A-ret<eps;}
}signed main(){sf("%d%d",&n,&m);S=0;T=mov+n+1;for(int i=1;i<=n;++i){int num;sf("%d",&num);_add(i+mov,T,num);_add(T,i+mov,0);A+=num;}for(int i=1;i<=m;++i){int num;sf("%d",&num);_add(S,i,num);_add(i,S,0);}for(int i=1;i<=m;++i){for(int j=1;j<=n;++j){int f;sf("%d",&f);if(f){_add(i,j+mov,inf);_add(j+mov,i,0);}}}db l=0,r=5e6,mid;
//  cout<<dinic::cflow(1.3)<<'\n';while(l+eps2<r){mid=(l+r)/2.0;if(dinic::cflow(mid))r=mid;else l=mid;}pf("%.3lf",l);return 0;
}

BZOJ3993[SDOI2015]星际战争 【最大流+二分答案】相关推荐

  1. BZOJ3993: [SDOI2015]星际战争

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

  2. bzoj3993: [SDOI2015]星际战争(二分+最大流)

    题目描述 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战. 在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值 ...

  3. BZOJ 3993 Luogu P3324 [SDOI2015]星际战争 (最大流、二分答案)

    字符串终于告一段落了! 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3993 (luogu) https://www.l ...

  4. bzoj3993 [SDOI2015]星际战争 二分答案+网络流检验

    流量分配模型. 这个题如果时间不知道的话流量是未知的,对于流量未知的网络流肯定是没法做的(没有动态借流量的网络流) 由于时间上满足连续性,就可以二分答案,然后流量确定就可以跑网络流 主要还是化静为动 ...

  5. bzoj3993 [SDOI2015]星际战争

    Description \(3333\) 年,在银河系的某星球上, X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了 \(N\) 个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装 ...

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

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

  7. BZOJ 1305 dance跳舞(最大流+二分答案)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1305 解题思路: 转自:https://blog.csdn.net/u012288458 ...

  8. BZOJ2406矩阵——有上下界的可行流+二分答案

    题目描述 输入 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. 输出 第一行,输出最小的答案: 样例输入 2 2 0 1 2 1 0 1 样例输出 1 ...

  9. 【BZOJ3993】 星际战争

    Time Limit: 1000 ms   Memory Limit: 128 MB Description  3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一 ...

  10. [SDOI2015]星际战争

    题目描述 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战. 在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值 ...

最新文章

  1. 33.搜索插件——autocomplete
  2. 不错php文件缓存类,一个不错的PHP文件页面缓存类
  3. [scala-spark]6. 继承与特质trait
  4. 回调java 简书_web3j函数回调使用详解
  5. Linux与Windows中的UTC时间
  6. 7款最佳jQuery和JavaScript的PDF查看器插件
  7. ProtoBuf3语法指南(Protocol Buffers)_上
  8. vuex commit 模块_Vuex详细介绍
  9. HDR中HLG与PQ曲线的互转
  10. 计算机如何格式化和重装系统,怎样格式化c盘重新安装系统_重装系统时如何格式化C盘...
  11. 计算机主板复位电路的组成,主板复位电路图解 - 主板知识
  12. python 替换重复字符_python - 在Pandas中,如何将重复值替换为多个唯一字符串?_pandas_酷徒编程知识库...
  13. 人工蜂群算法求解TSP问题
  14. Android设置应用数字角标
  15. P1425 小鱼的游泳时间 题解
  16. window环境下thrift Compiler 编译步骤
  17. Windows10安装Centos7双系统
  18. 2.本地配置yum源
  19. XVID解码器不弹出status窗口的办法
  20. 大文件上传时如何做到秒传?(荣耀典藏版)

热门文章

  1. Visual studio之C#的一些常见问题
  2. access_token VS refresh_token
  3. 【代码重构(Refectoring)系列教程】基本型别偏执(Primitive Obsession)
  4. 根据具体地址计算经纬度
  5. python简单制作节日贺卡
  6. 算法竞赛命题指南(命题流程、Polygon的使用等)
  7. PCM开发板模块实验指导--无刷马达实验
  8. Coloring Contention
  9. 简述5G技术在远程医疗应用
  10. Linux安装杀毒软件clamav