题面

https://www.luogu.org/problemnew/show/P3324

题解

水题。

二分答案+最大流判可行。

  • 注意最大流解决伤血模型的运用。
// luogu-judger-enable-o2
#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<queue>
#define ri register int
#define N 505
#define INF 1000000007
#define T (n+m+1)
#define eps 1e-5using namespace std;int n,m;
vector<int> to,ed[N];
vector<double> w;
int cur[N],d[N];
double sum;
int g[N][N],a[N],b[N];inline int read() {int f=0,ret=0; char ch=getchar();while (ch<'0' || ch>'9') f|=(ch=='-'),ch=getchar();while (ch>='0'&&ch<='9') ret*=10,ret+=(ch-'0'),ch=getchar();return f?-ret:ret;
}void add_edge(int u,int v,double w1,double w2) {to.push_back(v); w.push_back(w1); ed[u].push_back(to.size()-1);to.push_back(u); w.push_back(w2); ed[v].push_back(to.size()-1);
}bool bfs() {queue<int> q;memset(d,0x3f,sizeof(d));d[0]=0; q.push(0);while (!q.empty()) {int x=q.front(); q.pop();for (ri i=0,l=ed[x].size();i<l;i++) {int e=ed[x][i];if (w[e]>eps && d[x]+1<d[to[e]]) {d[to[e]]=d[x]+1;q.push(to[e]);}}}return d[T]<=1000000;
}double dfs(int x,double limit) {if (x==T || !limit) return limit;double tot=0;for (ri &i=cur[x];i<ed[x].size();i++) {int e=ed[x][i];if (d[to[e]]==d[x]+1 && w[e]>eps) {double f=dfs(to[e],min(limit,w[e]));if (f<eps) continue;w[e]-=f; w[1^e]+=f; tot+=f; limit-=f;if (limit<eps) return tot;}}return tot;
}double dinic() {double ret=0;while (bfs()) {memset(cur,0,sizeof(cur));ret+=dfs(0,INF);}return ret;
}bool check(double t) {w.clear(); to.clear();for (ri i=0;i<=n+m+1;i++) ed[i].clear();for (ri i=1;i<=m;i++) add_edge(0,i,t*b[i],0);for (ri i=1;i<=n;i++) add_edge(m+i,T,a[i],0);for (ri i=1;i<=m;i++)for (ri j=1;j<=n;j++) if (g[i][j]) add_edge(i,m+j,INF,0);if (dinic()+eps>sum) return 1; else return 0;
}int main() {n=read(); m=read();for (ri i=1;i<=n;i++) a[i]=read();sum=0.0;for (ri i=1;i<=n;i++) sum+=a[i];for (ri i=1;i<=m;i++) b[i]=read();for (ri i=1;i<=m;i++)for (ri j=1;j<=n;j++) g[i][j]=read();double lb=0,rb=10007; double ans=-1;while (rb-lb>1e-4) {double mid=(lb+rb)/2;if (check(mid)) ans=mid,rb=mid; else lb=mid;}printf("%.4lf",ans);return 0;
}

转载于:https://www.cnblogs.com/shxnb666/p/11104957.html

luogu P3324 [SDOI2015]星际战争相关推荐

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

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

  2. P3324 [SDOI2015]星际战争

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

  3. BZOJ3993: [SDOI2015]星际战争

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

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

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

  5. [SDOI2015]星际战争

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

  6. bzoj3993 [SDOI2015]星际战争

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

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

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

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

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

  9. 【Luogu-P3324 [SDOI2015] / DSY-1993】星际战争

    传送门:P3324 [SDOI2015]星际战争 二分 + 最大流 Solution\mathfrak{Solution}Solution 1 不可否认,看到题面的第一反应是构造二分图,让武器在一边, ...

  10. 星际战争2服务器维护,星际战争2初次反击虚空技能洗练技巧

    <星际战争2初次反击>关于虚空的重要性不必多说了,这里主要讲一下虚空如何洗练技能比较好,下面一起来看看吧. 虚空在pvp站场上的重要性不亚于顶级的武器.好的虚空是你吊打高玩的必备之物.首先 ...

最新文章

  1. 观点 | 李飞飞最新访谈:我每天都在对AI的担忧中醒来
  2. C++ Primer 5th笔记(chap 11)关联容器
  3. BIEE建模参考规范
  4. 6 步搭建数据平台—从指标体系到相关技术 | 周四话数据
  5. 字符串匹配算法(BM)
  6. 公司的年度汇报怎么写 年底述职报告写法
  7. 【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(1)
  8. 元月份退休能享受涨养老金的待遇吗?
  9. springboot shiro ajax,SpringBoot Shiro 登录成功后返回json数据 shiro使用ajax登录
  10. 【JUC】JDK1.8源码分析之ConcurrentSkipListMap(二)
  11. psenet的eval_ctw1500.py解析
  12. SQL SERVER 读取 XML 数据
  13. Servlet过滤器和监听器知识总结
  14. 过去的2017和已经到来的2018
  15. 并发编程学习之阻塞队列ArrayBlockingQueue
  16. 勒索病毒:解密工具整理
  17. 蓝桥杯2019B组 C++
  18. 飞鱼星流控王VF12路由器使用体验
  19. 计算机软件树状图,树状图怎么画|画树状图步骤
  20. 第七十三集 KVM虚拟化☜(゚ヮ゚☜)

热门文章

  1. 投入产出分析方法简介以及投入产出表
  2. 从一个程序员到月入7万自由职业者的故事—《打造你的赚钱机器》让我坐过了4站地铁...
  3. 干货!mysql初始密码
  4. OpenCv抽取视频帧和时间戳[综合代码后续添加]
  5. 鼠标右键失灵java_全百科鼠标助手
  6. Ubuntu Server 20.04 设置静态 IP
  7. 《战狼Ⅱ》豆瓣十二万影评浅析
  8. 三维建模技术是如何发展的
  9. heka 0.11.0源码分析--主要启动流程分析
  10. Nginx Passenger 性能调优