直接二分答案用网络流判断就行了

#include<cstdio>
#define ll long long
#include<cstring>
#include<queue>
using namespace std;
const int M=10000,inf=0x7fffffff;
const ll INF=1ll<<60;
int S,T,n,m;
int nex[M*2],to[M*2],head[M],tot,a[M],b[M],f[60][60];
int dep[M];ll maxn,cap[M*2];
void add(int x,int y,ll z){nex[++tot]=head[x];cap[tot]=z;to[tot]=y;head[x]=tot;
}
void init(){memset(head,0,sizeof head);tot=1;
}
struct dinic{queue<int>q;int bfs(){memset(dep,0,sizeof dep);while(!q.empty())q.pop();q.push(S);dep[S]=1;while(!q.empty()){int x=q.front();q.pop();for(int i=head[x],tmp;i<=tot&&i>=2;i=nex[i]){if(!dep[tmp=to[i]]&&cap[i])dep[tmp]=dep[x]+1,q.push(tmp);}} return dep[T];}ll dfs(int x,ll minf){if(x==T) return minf;ll f;for(int i=head[x],tmp;i<=tot&&i>=2;i=nex[i]){if(dep[tmp=to[i]]==dep[x]+1&&cap[i]&&(f=dfs(tmp,min(cap[i],minf)))){cap[i]-=f;cap[i^1]+=f;return f;}}return 0;}ll danic(){ll ans=0,f;while(bfs()) {f=1;while(f)ans+=(f=dfs(S,INF));}return ans;}
}A;
bool check(ll x){init();for(int i=1;i<=n;i++) add(m+i,T,1ll*a[i]*10000),add(T,m+i,0);for(int i=1;i<=m;i++) add(S,i,1ll*b[i]*x),add(i,S,0);for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)if(f[i][j]) add(i,j+m,INF),add(j+m,i,0); return A.danic()==maxn;}
int main(){scanf("%d%d",&n,&m);S=0,T=n+m+1;init();for(int i=1;i<=n;i++) scanf("%d",&a[i]),add(m+i,T,a[i]*10000),add(T,m+i,0);for(int i=1;i<=m;i++) scanf("%d",&b[i]),add(S,i,INF),add(i,S,0);for(int i=1;i<=m;i++)for(int j=1;j<=n;j++) {scanf("%d",&f[i][j]);if(f[i][j]==1) add(i,j+m,INF),add(j+m,i,0);}maxn=A.danic();int l=1,r=100000000;while(l<=r){int mid=(l+r)>>1;if(check(mid)) r=mid-1;else l=mid+1;}printf("%.4lf",(double)l/10000.0);
}

P3324 [SDOI2015]星际战争二分答案+网络流相关推荐

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

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

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

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

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

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

  4. P3324 [SDOI2015]星际战争

    传送门:https://www.luogu.org/problemnew/show/P3324 首先瞅一眼数据范围,发现m, n都很小,所以就可以初步断定这是一道网络流的题. 因为题中说每一个武器只能 ...

  5. bzoj 3993 星际战争 - 二分答案 - 最大流

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

  6. BZOJ3993: [SDOI2015]星际战争

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

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

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

  8. bzoj3130 [SDOI2013]费用流 结论+二分答案+网络流检验

    这个题看起来很难,但分析一下还是很简单的 Alice的操作是根据Bob来的,而Bob又是知道这个方案的 所以需要考虑对于一个固定的方案,Bob必然怎么加,来确定Alice的方案 然后发现,对于当前割集 ...

  9. bzoj3993 [SDOI2015]星际战争

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

  10. [SDOI2015]星际战争

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

最新文章

  1. 不使用乘法、除法或mod,实现两数相除
  2. CentOS6.9下手动编译并安装Python3.7.0
  3. 田志刚:企业知识管理的知识传播
  4. Moon.Orm性能报告
  5. 轻松弄懂var、let、const之间的区别(一看就懂)
  6. distributed--根索引
  7. junit的命令行测试-Could not find class
  8. JavaScript 编码指南
  9. 【小教程】steam长展柜制作
  10. 银河麒麟安装Redis 6.0.3
  11. esxi7.0虚拟机安装群辉DS3615-6.2.2版本
  12. 谷歌浏览器开启深色模式
  13. mac删除默认ABC输入法,mac删除自带ABC输入法
  14. Tomcat访问localhost:8080直接跳转到项目首页
  15. 继续教育-职场学习法 试题及答案
  16. 八:用MATLAB求传递函数的单位阶跃响应并绘制出曲线
  17. 全角和半角的区别及使用方式
  18. java邮箱465端口发送验证码,htmlmail465,465端口发邮件
  19. 联想笔记本Y430p升级硬件(内存扩容+升级固态)
  20. 网易云易盾朱浩齐:视听行业步入强监管和智能时代

热门文章

  1. ZABBIX 3.0 使用详解
  2. 爬取实习僧工作岗位信息
  3. win7设置定时开关机
  4. JSP隐式对象——out对象、pageContext对象、exception对象
  5. Diskpart 工具个人总结
  6. 关于用Unity实现校区AR导航毕业设计的建议
  7. matlab 按照字符串运行,matlab中将字符串视为语句运行的方法——eval()函数
  8. 永恒的风控:大宗商品贸易融资背后的核心风险该如何规避?
  9. 区块链技术如何让租房市场回归理性?
  10. java 将服务器的图片打包下载成.zip ,通过浏览器下载。