[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. ...
随机推荐
- WinForm DataGridView实时更新表格数据
前言 一个特殊的项目没有用第三方控件库,但用到了DataGridView,由于是客户端产生的数据,所以原始数据源就是一个集合. 根据需要会向集合中添加数据项,或是修改某些数据项的值,但DataGrid ...
- 第四次上机,ASP组件的使用
<html> <body> <% '以下连接数据库,建立一个Connection对象实例conn Set conn=Server.CreateObject("A ...
- 可达用户投资额的计算(Java)
有话要说: 前阵子遇到了一个计算可达用户投资额的问题,觉得非常有趣,故把它记录下来. 问题描述: 某产品可被投资,注册后才可以投资,其注册可以被邀请(并不是每个人都是被邀请的).邀请人可以邀请多个人注 ...
- 3Delight NSI: A Streamable Render API
3Delight是应用于高端电影级别渲染的软件渲染器,迄今为止已经参与了无数的电影制作,具体可以参见链接. 如果你对3Delight的印象就依然是RenderMan的替代品,那就显然已经和时代发展脱节 ...
- DVWA 黑客攻防演练(十四)CSRF 攻击 Cross Site Request Forgery
这么多攻击中,CSRF 攻击,全称是 Cross Site Request Forgery,翻译过来是跨站请求伪造可谓是最防不胜防之一.比如删除一篇文章,添加一笔钱之类,如果开发者是没有考虑到会被 C ...
- Git-初始化配置及SSH_key配置
step1.安装完Git,执行检查是否安装成功:git --version step2.配置全局变量 配置完执行检查:git config --list step3.生成SSH_KEY 如果报ssh- ...
- sprintboot 中占位符及多环境配置
(原) 关于springboot中多环境配置问题 1.在application.properties文件中通过 spring.profiles.active=... 选择系统所要加载的配置文件,这里的 ...
- Python 爬虫基础Selenium
https://blog.csdn.net/weixin_36279318/article/details/79475388
- C#如何使SQLite程序集既能适应32位系统也能适应64位系统
分享5: 需求:都知道Sqlite3是分32位和64位版本的,那如果将一个Sqlite3.dll文件全适用 分析:Sqlite是种轻量级的数据库文件,使用了混合编程而成的,一部分采用非托管的C++代码 ...
- 【刷题】Git知识点
参考:学习总结之Git学习-总 1-origin是什么? 答:origin 是默认的远程版本库名称,可以在 .git/config 之中进行修改.在默认情况下,origin指向的就是你本地的代码库托管 ...