[Sdoi2017]新生舞会(分数规划+费用流)
题解:二分答案mid,然后将每个位置看成a-b*mid,然后由于是n个男生和n个女生匹配,每个人搭配一个cp,于是有点类似于https://www.lydsy.com/JudgeOnline/problem.php?id=1070(费用流模板题),加边(S,i,1,0),(i+n,T,1,0),(i,j+n,1,a[i][j]-mid*b[i][j])(注:括号内分别为始边、终边、流量、费用),跑最大费用最大流,若大于0则调整下界,否则调整上界,直至上下界基本重合。
#include<bits/stdc++.h>
using namespace std;
const int N=;
struct edge{int u,v,w,nxt;double c;}e[N*N*];
queue<int>q;
int n,S,T,ecnt,hd[N],vis[N],pre[N];
double a[N][N],b[N][N],d[N];
void adde(int x,int y,int z,double c)
{
e[++ecnt]=(edge){x,y,z,hd[x],c},hd[x]=ecnt;
e[++ecnt]=(edge){y,x,,hd[y],-c},hd[y]=ecnt;
}
bool spfa()
{
for(int i=S;i<=T;i++)d[i]=-1e18,pre[i]=;
d[S]=,q.push(S);
while(!q.empty())
{
int u=q.front();q.pop();
vis[u]=;
for(int i=hd[u];i;i=e[i].nxt)
if(e[i].w&&d[u]+e[i].c>d[e[i].v])
{
pre[e[i].v]=i,d[e[i].v]=d[u]+e[i].c;
if(!vis[e[i].v])q.push(e[i].v),vis[e[i].v]=;
}
}
return d[T]>-1e18;
}
bool check()
{
double ret=;
while(spfa())
{
int mn=1e9+;
for(int i=pre[T];i;i=pre[e[i^].v])mn=min(mn,e[i].w);
for(int i=pre[T];i;i=pre[e[i^].v])e[i].w-=mn,e[i^].w+=mn;
ret+=mn*d[T];
}
return ret>;
}
int main()
{
scanf("%d",&n),T=*n+;
for(int i=;i<=n;i++)for(int j=;j<=n;j++)scanf("%lf",&a[i][j]);
for(int i=;i<=n;i++)for(int j=;j<=n;j++)scanf("%lf",&b[i][j]);
double l=,r=,mid;
while(r-l>1e-)
{
mid=(l+r)/;
ecnt=;
memset(hd,,sizeof hd);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
adde(i,j+n,,a[i][j]-mid*b[i][j]);
for(int i=;i<=n;i++)adde(S,i,,),adde(i+n,T,,);
if(check())l=mid;else r=mid;
}
printf("%.6lf",l);
}
[Sdoi2017]新生舞会(分数规划+费用流)的更多相关文章
- 【bzoj4819】[Sdoi2017]新生舞会 分数规划+费用流
题目描述 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会买一个男生和一个女生一起跳舞,互为舞伴.Cathy收集了这些同学之间的关系,比如两个 ...
- [BZOJ4819][SDOI2017]新生舞会(分数规划+费用流,KM)
4819: [Sdoi2017]新生舞会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1097 Solved: 566[Submit][Statu ...
- P3705 [SDOI2017]新生舞会 分数规划 费用流
#include <algorithm> #include <iterator> #include <iostream> #include <cstring& ...
- bzoj4819 [Sdoi2017]新生舞会 分数规划+最大费用最大流
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4819 题解 首先上面说, \[ C = \frac{\sum\limits_{i=1}^n a ...
- 4819: [Sdoi2017]新生舞会 分数规划
题目 https://www.lydsy.com/JudgeOnline/problem.php?id=4819 思路 分数规划的模板题?(好菜呀) 假如n=3吧(懒得写很长的式子) \(c=\fra ...
- BZOJ_4819_[Sdoi2017]新生舞会_01分数规划+费用流
BZOJ_4819_[Sdoi2017]新生舞会_01分数规划+费用流 Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞 ...
- 【BZOJ4819】[Sdoi2017]新生舞会 01分数规划+费用流
[BZOJ4819][Sdoi2017]新生舞会 Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买一个男生和一个女 ...
- P3705 [SDOI2017]新生舞会 01分数规划+费用流
$ \color{#0066ff}{ 题目描述 }$ 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴. 有\(n\)个男生和\(n\)个女生参加舞会买一个男生和一个女生一 ...
- BZOJ4819 [Sdoi2017]新生舞会 【01分数规划 + 费用流】
题目 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买一个男生和一个女生一起跳舞,互为舞伴.Cathy收集了这些同学之间的关系,比如两个人 ...
- BZOJ.4819.[SDOI2017]新生舞会(01分数规划 费用流SPFA)
BZOJ 洛谷 裸01分数规划.二分之后就是裸最大费用最大流了. 写的朴素SPFA费用流,洛谷跑的非常快啊,为什么有人还T成那样.. 当然用二分也很慢,用什么什么迭代会很快. [Update] 19. ...
随机推荐
- js调用百度地图接口绘制任意多边形并获取每个点的经纬度等
来自:https://blog.csdn.net/u013239236/article/details/52213977 侵删 <!DOCTYPE html> <html> & ...
- Jinja2用法总结
Jinja2用法总结 一:渲染模版 要渲染一个模板,通过render_template方法即可. @app.route('/about/') def about(): # return rende ...
- harris角点检测的简要总结
目录 1. 概述相关 2. 原理详解 1) 算法思想 2) 数学模型 3) 优化推导 3. 具体实现 1) 详细步骤 2) 最终实现 4. 参考文献 1. 概述相关 harris角点检测是一种特征提取 ...
- 时空地图TimeGIS.com生成正交曲线网格
数值模拟中对数学物理方程的求解过程中经常需要生成网格,这里提供了一种方便的方法,只需要简单地勾画出区域的轮廓, 就可以生成相应的正交曲线网格,详情请访问 www.TimeGIS.com
- Android View的重绘过程之Draw
博客首页:http://www.cnblogs.com/kezhuang/p/ View绘制的三部曲,测量,布局,绘画现在我们分析绘画部分测量和布局 在前两篇文章中已经分析过了.不了解的可以去我的博客 ...
- Redis的中并发问题的解决方案小结
什么是Redis的并发竞争问题 Redis的并发竞争问题,主要是发生在并发写竞争.考虑到redis没有像db中的sql语句,update val = val + 10 where ...,无法使用这种 ...
- Springboot整合Kfka
1.首先在pom文件添加依赖 The managed version is 1.1.7.RELEASE The artifact is managed in org.springframework.b ...
- 解决FileZilla访问手机ftp服务只能删除浏览文件不能下载文件的问题
用了Linux系统之后,很多资源都不方便获取, 因为很多资料都是放在百某某盘上面. 无意中看到我手机有FTP服务,想到我电脑装有FileZilla,可以访问手机了 然后就连接上了. 但是浏览的时候发现 ...
- 利用Sonar定制自定义扫描规则
上有3种方法可以自定义soanr的代码校验规则: 直接在sonar的web接口中增加XPath规则: 通过插件的功能来增加自定义规则,比如checkstyle,pmd等插件是允许自定义规则的: 通 ...
- pytorch中文文档-torch.nn.init常用函数-待添加
参考:https://pytorch.org/docs/stable/nn.html torch.nn.init.constant_(tensor, val) 使用参数val的值填满输入tensor ...