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军团的阵地 ...
随机推荐
- 将 List<UserInfo>中的对象按照UserInfo.name进行分组
package yq; import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List; import ...
- Configuring Network in CentOS 6.3 Virtual Box + Screenshots
Configuring Network in CentOS 6.3 Virtual Box + Screenshots Posted: May 23, 2013 in Uncategorized Ta ...
- oracle 开窗分析函数和树形结构
1.row_number() over(partition by ... order by ...)2.rank() over(partition by ... order by ...)3.dens ...
- GOLANG 基本数据类型 整型
基本数据类型-整型 种类 有符号(负号) int8 int16 int32 int64 无符号(无符号) uint8 uint16 uint32 uint64 架构特定(取决于系统位 ...
- 链表栈的C语言实现
#ifndef _CONST_H_#define _CONST_H_ #include <stdio.h>#include <stdlib.h> typedef enum { ...
- codeforces 85D D. Sum of Medians 线段树
D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...
- Ios二维码扫描(系统自带的二维码扫描)
Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你 ...
- 3D立体照片墙
代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...
- python成长之路【第十一篇】:网络编程之线程threading模块
一.threading模块介绍 threading 模块建立在 _thread 模块之上.thread 模块以低级.原始的方式来处理和控制线程,而 threading 模块通过对 thread 进行二 ...
- 老王讲自制RPC框架.(一.前言与技术选型)
(#)背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只 ...