bzoj 3993: [SDOI2015]星际战争
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#define N 1008
#define M 1000009
#define eps 0.00001
using namespace std;
int S,T,A[N],B[N],f[N][N],n,m,cnt=,tot,head[N],next[M],u[M],d[N],q[N];
double v[M],sum;
void jia1(int a1,int a2,double a3)
{
cnt++;
next[cnt]=head[a1];
head[a1]=cnt;
u[cnt]=a2;
v[cnt]=a3;
return;
}
void jia(int a1,int a2,double a3)
{
jia1(a1,a2,a3);
jia1(a2,a1,);
return;
}
bool bfs()
{
memset(d,,sizeof(d));
int h=,t=;
q[]=S;
d[S]=;
for(;h<t;)
{
h++;
int p=q[h];
for(int i=head[p];i;i=next[i])
if(!d[u[i]]&&v[i])
{
d[u[i]]=d[p]+;
if(d[T])
return ;
t++;
q[t]=u[i];
}
}
return ;
}
double dinic(int s,double f)
{
if(s==T)
return f;
double rest=f;
for(int i=head[s];i&&rest;i=next[i])
if(v[i]&&d[u[i]]==d[s]+)
{
double now=dinic(u[i],min(rest,v[i]));
if(!now)
d[u[i]]=;
v[i]-=now;
v[i^]+=now;
rest-=now;
}
return f-rest;
}
void jian(double mid)
{
cnt=;
memset(head,,sizeof(head));
for(int i=;i<=n;i++)
jia(i+m,T,A[i]);
for(int i=;i<=m;i++)
jia(S,i,B[i]*mid);
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
if(f[i][j])
jia(i,j+m,);
return;
}
int main()
{
scanf("%d%d",&n,&m);
S=;
T=n+m+;
for(int i=;i<=n;i++)
{
scanf("%d",&A[i]);
sum+=(double)A[i];
}
for(int i=;i<=m;i++)
scanf("%d",&B[i]);
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
scanf("%d",&f[i][j]);
double l=,r=,qq;
for(;r-l>eps;)
{
double mid=(l+r)/2.0;
jian(mid);
double ans=;
for(;bfs();)
ans+=dinic(S,0x7fffffff);
if(ans>=(sum-eps))
{
qq=mid;
r=mid;
}
else
l=mid;
}
printf("%.6lf\n",qq);
return ;
}
二分答案网络流。
bzoj 3993: [SDOI2015]星际战争的更多相关文章
- BZOJ 3993: [SDOI2015]星际战争 [二分答案 二分图]
3993: [SDOI2015]星际战争 题意:略 R1D2T1考了裸二分答案+二分图最大匹配... #include <iostream> #include <cstdio> ...
- BZOJ 3993 [SDOI2015]星际战争 | 网络流 二分答案
链接 BZOJ 3993 题解 这道题挺棵的-- 二分答案t,然后源点向武器连t * b[i], 武器向能攻击的敌人连1, 敌人向汇点连a[i],如果最大流等于所有敌人的a[i]之和则可行. #inc ...
- 网络流(二分):BZOJ 3993: [SDOI2015]星际战争
Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈 地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型 ...
- 3993: [SDOI2015]星际战争
3993: [SDOI2015]星际战争 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1244 Solved: ...
- 【BZOJ】3993: [SDOI2015]星际战争
题意 \(m\)个人\(n\)个物品,第\(i\)个物品生命值为\(A_i\),第\(i\)个人每秒可以减少一个物品\(B_i\)的生命值,给出一个\(m \times n\)的矩阵,如果\(i\)行 ...
- bzoj千题计划131:bzoj3993: [SDOI2015]星际战争
http://www.lydsy.com/JudgeOnline/problem.php?id=3993 二分答案 源点向武器连 mid*攻击力的边 机器人向汇点连 防御力 的边 武器i能攻击机器人j ...
- bzoj3993: [SDOI2015]星际战争(网络流)
3993: [SDOI2015]星际战争 题目:传送门 题解: 洛谷AC了,但是因为bzoj的spj有问题所以暂时没A 一道老题目了,二分时间然后网络流判断. 每次st-->武器连时间*攻击力 ...
- BZOJ_3993_[SDOI2015]星际战争_二分+网络流
BZOJ_3993_[SDOI2015]星际战争_二分+网络流 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进 ...
- 【BZOJ3993】[SDOI2015]星际战争 二分+最大流
[BZOJ3993][SDOI2015]星际战争 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地 ...
随机推荐
- \r与\n的区别
\r : return 到当前行的最左边. \n: newline 向下移动一行,并不移动左右. Linux中\n表示回车+换行: Windows中\r\n表示回车+换行. Mac中\r表示回车+换行 ...
- Allegro 导入DXF文件,保留布好的线路信息
最近智能钥匙产品开发过程中,由于结构装配尺寸的偏差,需要对电路PCB外框OUTLINE进行缩小调整,并且USB插座定位孔改变. Allegro软件在线性绘制方面是有严重缺陷的,想绘制一个异形的板框比较 ...
- TFS二次开发系列:二、TFS的安装
本系列的实例将采用TFS 2012+Sql Server2012编写. TFS的完整版本安装最好是在Windows server2008 64位以上版本中,其包括64位的SQL SERVER 2012 ...
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
原文地址:http://linuxme.blog.51cto.com/1850814/375752 今天将阿里云服务器更换了一下系统盘,重启成功后,再次通过终端访问阿里云的公网IP报以下信息: @@@ ...
- TOEFL备考计划
一.总则: 1.坚持每一天,充分利用一切可以利用的时间学英语.没有持之以恒的学习和大量的时将做保障,一切都是空谈. 2.每天听写一篇文章,以此文章为中心,展开一天的学习. OG, TOP 3.听说读写 ...
- iOS - MKMapView 地图
1.创建 MKMapView 地图 在 iOS6 或者 iOS7 中实现这个功能只需要添加地图控件.设置用户跟踪模式.在 mapView:didUpdateUserLocation: 代理方法中设置地 ...
- 慕课网__CSS_网页图标制作
参考地址:http://www.flowerboys.cn/font/article/fontsArticle/how-to-turn-your-icons-into-a-web-font.html
- Js dom操作总结
1.选取文档元素 1.1. getElemenById 基于唯一id获取,任何HTML元素可以有id属性,在文档中该值必须唯一. 1.2. getElementsByName 基于name属性的值选取 ...
- JS学习之事件流
本文是原创文章,如需转载,请注明文章出处 JS和AS师出同源,所以事件流的3个阶段也跟AS一样,分别是捕获阶段,目标阶段,冒泡阶段. 下面写了个例子可以清晰的看出事件流的顺序: eventTest.h ...
- 处理某个json文件的代码
# encoding=utf-8 import json,re with open('E:\\weather53892_20114.json','r') as f: data= f.readlines ...