比值最大 分数规划

二分答案之后用费用流进行验证。

据说标称强行乘以1e7换成了整数的二分。

不过貌似实数二分也可以过。

#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define ll long long
#define mp make_pair
#define eps 1e-7
#define inf 1e9
#define maxn 50005 int h[maxn],to[maxn],ne[maxn],en=0,fl[maxn],n,S=maxn-2,T=maxn-1;
double cost[maxn],a[101][101],b[101][101],dis[maxn];
int with[maxn],minn[maxn],inq[maxn]; void add(int a,int b,double c,int d)
{
to[en]=b;ne[en]=h[a];fl[en]=d;cost[en]=c; h[a]=en++;
to[en]=a;ne[en]=h[b];fl[en]=0;cost[en]=-c;h[b]=en++;
} queue <int> q; bool SPFA()
{
F(i,1,2*n) dis[i]=inf; dis[S]=inf; dis[T]=inf;
memset(inq,0,sizeof inq);
memset(with,0,sizeof with);
memset(minn,0x3f,sizeof minn);
q.push(S); inq[S]=1; dis[S]=0;
while (!q.empty())
{
int x=q.front(); q.pop(); inq[x]=0;
for (int i=h[x];i>=0;i=ne[i])
if (dis[to[i]]>dis[x]+cost[i]&&fl[i]>0)
{
dis[to[i]]=dis[x]+cost[i];
minn[to[i]]=min(minn[x],fl[i]);
with[to[i]]=i;
if (!inq[to[i]]) q.push(to[i]),inq[to[i]]=1;
}
}
return dis[T]<inf-eps;
} double zeng()
{
for (int i=T;i!=S;i=to[with[i]^1])
{
fl[with[i]]-=minn[T];
fl[with[i]^1]+=minn[T];
}
return minn[T]*dis[T];
} double dinic()
{
double ret=0,tmp;
while (SPFA())
{
tmp=zeng();
ret+=tmp;
}
return ret;
} bool check(double d)
{
memset(h,-1,sizeof h);
en=0;
F(i,1,n) add(S,i,0,1);
F(i,1,n) add(i+n,T,0,1);
F(i,1,n) F(j,1,n) add(i,j+n,d*b[i][j]-a[i][j],1);
double ret=dinic();
if (ret<0) return true;
return false;
} int main()
{
scanf("%d",&n);
F(i,1,n) F(j,1,n) scanf("%lf",&a[i][j]);
F(i,1,n) F(j,1,n) scanf("%lf",&b[i][j]);
double l=0,r=1e4;
while (fabs(l-r)>eps)
{
double mid=(l+r)/2;
if (check(mid)) l=mid;
else r=mid;
}
printf("%.6lf\n",(l+r)/2);
}

  

BZOJ 4819 [Sdoi2017]新生舞会 ——费用流 01分数规划的更多相关文章

  1. BZOJ.4819.[SDOI2017]新生舞会(01分数规划 费用流SPFA)

    BZOJ 洛谷 裸01分数规划.二分之后就是裸最大费用最大流了. 写的朴素SPFA费用流,洛谷跑的非常快啊,为什么有人还T成那样.. 当然用二分也很慢,用什么什么迭代会很快. [Update] 19. ...

  2. bzoj 4819: [Sdoi2017]新生舞会【二分+最小费用最大流】

    如果\( b[i]==0 \)那么就是裸的费用流/KM,当然KM快一些但是为什么不写KM呢因为我不会打板子了 考虑二分答案,那么问题变成了判定问题. \[ ans=\frac {a_1+a_2+... ...

  3. bzoj 4819: [Sdoi2017]新生舞会

    Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买一个男生和一个女生一起跳舞,互为舞伴.Cathy收集了这些同学之间 ...

  4. 【BZOJ 4819】 4819: [Sdoi2017]新生舞会 (0-1分数规划、二分+KM)

    4819: [Sdoi2017]新生舞会 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 601  Solved: 313 Description 学校 ...

  5. 4819: [Sdoi2017]新生舞会(分数规划)

    4819: [Sdoi2017]新生舞会 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1031  Solved: 530[Submit][Statu ...

  6. bzoj 3597: [Scoi2014]方伯伯运椰子 [01分数规划 消圈定理 spfa负环]

    3597: [Scoi2014]方伯伯运椰子 题意: from mhy12345 给你一个满流网络,对于每一条边,压缩容量1 需要费用ai,扩展容量1 需要bi, 当前容量上限ci,每单位通过该边花费 ...

  7. 【BZOJ4819】【SDOI2017】新生舞会 [费用流][分数规划]

    新生舞会 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 学校组织了一次新生舞会,Cathy ...

  8. 4819: [Sdoi2017]新生舞会 分数规划

    题目 https://www.lydsy.com/JudgeOnline/problem.php?id=4819 思路 分数规划的模板题?(好菜呀) 假如n=3吧(懒得写很长的式子) \(c=\fra ...

  9. BZOJ 2402 陶陶的难题II (01分数规划+树剖+线段树+凸包+二分)

    题目大意:略 一定范围内求最大值,考虑二分答案 设现在选择的答案是$mid$,$max \left \{ \frac{yi+qj}{xi+pj} \right \} \geq mid $ 展开可得,$ ...

随机推荐

  1. UVA1607 Gates 与非门电路 (二分)

    题意:给你一个按发生时间的序列,表示与非门电路的输入,一开始全部输入是x,现在要改成尽量少的x,实现相同的功能. 题解:电路功能只有4中0,1,x,非x.那么如果一开始x改变了,输出结果不变,那么说明 ...

  2. groupadd - 建 立 新 群 组

    总览 SYNOPSIS groupadd [-g gid [-o]] [-r] [-f] group 描述 DESCRIPTION groupadd 可 指 定 群 组 名 称 来 建 立 新 的 群 ...

  3. ping请求超(iPV4)

    ping请求超(iPV4) arp –a(查看局域网全部IP) cmd 管理员运行 netsh winsock reset(重置Winsock目录借以恢复网络) etsh int ip reset r ...

  4. 2018.5.4 AndroidStudio遇到的问题

    新建项目初出现异常报错 Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict 发生这类型的错误, ...

  5. java中IO流之字节字符流的总结概述

    概念        这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图: Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都 ...

  6. Codevs3324 新斯诺克

    题目描述 Description 斯诺克又称英式台球,是一种流行的台球运动.在球桌上,台面四角以及两长边中心位置各有一个球洞,使用的球分别为1 个白球,15 个红球和6 个彩球(黄.绿.棕.蓝.粉红. ...

  7. NOIP模拟赛 麻将

    [题目描述] 众所周知,麻将是我们国家的国粹.这段时间,小D也迷上了麻将这个老少皆宜的游戏. 小D觉得这些不同规则的麻将太麻烦了,所以他集合了很多种麻将规则创造出了一套D麻将.下面是D麻将的几个特点: ...

  8. pandas中的随机排序和抽样

    1.随机重排序 使用take()随机排序 如: df.take([54])   #采取索引为54的数据 可以借助np.random.permutation()函数随机排序 permutation()函 ...

  9. GoogleTest 之路3-Mocking Framework

    当你写一个原型或者测试的时候,依赖整个object 是不可行和明智的.一个 mock object和 real object 有同样的接口(所以它可以像同一个使用),但是让你在运行时进行指定它应该如何 ...

  10. 【android】安卓的权限提示及版本相关

    Only dangerous permissions require user agreement. The way Android asks the user to grant dangerous ...