正题

题目链接:https://www.luogu.com.cn/problem/P3705


题目大意

nnn对人,给出两个n∗nn*nn∗n的矩形a,ba,ba,b。求一个nnn配对满足∑i=1naxi,yi∑i=1nbxi,yi\frac{\sum_{i=1}^na_{x_i,y_i}}{\sum_{i=1}^nb_{x_i,y_i}}∑i=1n​bxi​,yi​​∑i=1n​axi​,yi​​​最大。


解题思路

很典型的0/10/10/1分数规划模型,直接上二分,然后剩下的就是一个最大费用匹配因为图中满足有最大匹配,上费用流就行了。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=210;
const double inf=1e9,eps=1e-9;
struct node{int to,next,w;double c;
}a[N*N];
int n,s,t,tot,ls[N],A[N][N],B[N][N],mf[N],pre[N];
double f[N],answer;bool v[N];queue<int> q;
void addl(int x,int y,int w,double c){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;a[tot].c=c;a[++tot].to=x;a[tot].next=ls[y];ls[y]=tot;a[tot].w=0;a[tot].c=-c;return;
}
bool spfa(){for(int i=0;i<=t;i++)f[i]=-inf;q.push(s);f[s]=0;mf[s]=inf;v[s]=1;while(!q.empty()){int x=q.front();v[x]=0;q.pop();for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(a[i].w&&f[x]+a[i].c>f[y]){mf[y]=min(mf[x],a[i].w);f[y]=f[x]+a[i].c;pre[y]=i;if(!v[y])q.push(y),v[y]=1;}} }return f[t]>-inf;
}
void Update(){int x=t;while(x!=s){a[pre[x]].w-=mf[t];a[pre[x]^1].w+=mf[t];answer+=a[pre[x]].c*mf[t];x=a[pre[x]^1].to;}return;
}
bool check(double w){answer=0;tot=1;s=2*n+1;t=s+1;memset(ls,0,sizeof(ls));for(int i=1;i<=n;i++)addl(s,i,1,0),addl(i+n,t,1,0);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)addl(i,j+n,1,A[i][j]-B[i][j]*w);while(spfa())Update();return answer>=0;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&A[i][j]);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&B[i][j]);double l=0,r=n*1e4;while(r-l>eps){double mid=(l+r)/2.0;if(check(mid))l=mid; else r=mid;}printf("%.6lf",(l+r)/2.0);
}

P3705-[SDOI2017]新生舞会【0/1分数规划,费用流】相关推荐

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

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

  2. 【BZOJ4819】【SDOI2017】新生舞会(01分数规划,带权二分图匹配)

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

  3. BZOJ 4819 Luogu P3705 [SDOI2017]新生舞会 (最大费用最大流、二分、分数规划)

    现在怎么做的题都这么水了.. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4819 (luogu) https://ww ...

  4. bzoj3597: [Scoi2014]方伯伯运椰子【分数规划+费用流】

    Description 四川的方伯伯为了致富,决定引进海南的椰子树. 方伯伯的椰子园十分现代化,椰子园中有一套独特的交通系统. 现在用点来表示交通节点,边来表示道路.这样,方伯伯的椰子园就可以看作一个 ...

  5. BZOJ 4819: [Sdoi2017]新生舞会

    二次联通门 : BZOJ 4819: [Sdoi2017]新生舞会 /*BZOJ 4819: [Sdoi2017]新生舞会二分 + 01分数规划 + 最小费用流二分出一个答案费用流检验*/ #incl ...

  6. bzoj 3232 圈地游戏——0/1分数规划(或网络流)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...

  7. jzoj4017-逃跑【0/1分数规划,线段树,dp】

    正题 题目链接:https://jzoj.net/senior/#contest/show/3011/2 题目大意 n+1n+1n+1个连续的地方,每个地方有(a,b,c)(a,b,c)(a,b,c) ...

  8. jzoj3852-单词接龙【0/1分数规划,负环】

    正题 题目链接:https://jzoj.net/senior/#main/show/3852 题目大意 nnn个单词串,头尾有两个相同单词就可以连在一起,求一个最长的环使得平均单词长度最长. 解题思 ...

  9. [学习笔记]0/1分数规划

    对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...

最新文章

  1. 【职场】聊聊P5晋升P6之后
  2. Android 开源库和项目 2
  3. H.264中IDR帧和I帧区别
  4. 错误:docker-ce-cli conflicts with 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64 错误:docker-ce confli
  5. Javascript实现计数器,定时警告和停止
  6. Git成立14周年快乐:您对Git钟爱什么?
  7. 华为云UGO正式公测:4大核心优势破解异构数据库迁移难题
  8. 去除android控件滑动的时候出现的阴影
  9. C# 概念 委托和事件
  10. 【Beam Search】seq2seq中的beam search算法过程
  11. 用python打印心形_Python和Js打印心形
  12. 发那科机器人示教器按键解读
  13. 公务员备考(十) 行测 资料分析
  14. 穷查理宝典:查理·芒格智慧箴言录
  15. 在ubuntu16.04运行neural baby talk
  16. 用Acrobat打印小册子
  17. 计算机最低配置有哪些,win10对电脑配置有哪些要求?win10最低配置要求
  18. Python爬虫之爬取图片
  19. Linux下修复U盘坏块,DiskGenius修复U盘坏块问题巧借
  20. WNDCLASS(WNDCLASSEX)结构介绍

热门文章

  1. 正弦波 程序 角度传感器_激光位移传感器的原理及应用领域
  2. shell oracle查询数组,shell 脚本 ---数组
  3. 数据科学与python语言——Pandas统计分析基础(时间转换+聚合)
  4. 7-8 最优服务次序问题 (10 分)
  5. 矩阵模拟问题合集(Leetcode题解-Python语言)
  6. pc 图片预览放大 端vue_安利一款简单好用的Vue图片预览插件
  7. AcWing 499. 聪明的质监员
  8. 2020牛客国庆集训派对day2 F题 Java大数处理
  9. python list转换成array_一文掌握Python【不定期更新】
  10. Java BIO、NIO、AIO的区别