BZOJ4819: [Sdoi2017]新生舞会(01分数规划)
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 1029 Solved: 528
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
19 17 16
25 24 23
35 36 31
9 5 6
3 4 2
7 8 9
Sample Output
HINT
Source
// luogu-judger-enable-o2
#include<cstdio>
#include<queue>
#include<cstring>
#include<cstdlib>
#define INF 1e8+10
using namespace std;
const int MAXN=;
const double eps=1e-;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,MAXN,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
inline int read()
{
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
struct node
{
int u,v,f,nxt;
double w;
}edge[MAXN*MAXN];
int head[MAXN],num=;
int N,S,T;
int a[][],b[][];
double ans=0.0;
inline void add_edge(int x,int y,int z,double k)
{
edge[num].u=x;
edge[num].v=y;
edge[num].f=z;
edge[num].w=k;
edge[num].nxt=head[x];
head[x]=num++;
}
inline void AddEdge(int x,int y,int z,double k)
{
add_edge(x,y,z,k);
add_edge(y,x,,-k);
}
int arrive[MAXN],vis[MAXN],pre[MAXN];
double dis[MAXN];
bool SPFA()
{
queue<int>q;
q.push(S);
for(register int i=S;i<=T;i++) dis[i]=-1e20,arrive[i]=;
memset(vis,,sizeof(vis));
dis[S]=;vis[S]=;
while(q.size()!=)
{
int p=q.front();q.pop();
vis[p]=;arrive[p]=;
for(int i=head[p];i!=-;i=edge[i].nxt)
{
if(edge[i].f&&dis[edge[i].v]<dis[p]+edge[i].w)
{
dis[edge[i].v]=dis[p]+edge[i].w;
pre[edge[i].v]=i;
if(!vis[edge[i].v])
q.push(edge[i].v),vis[edge[i].v]=;
}
}
}
return arrive[T];
}
int dfs()
{
int mn=INF;
int now=T;
while(pre[now])
{
mn=min(mn,edge[pre[now]].f);
now=edge[pre[now]].u;
}
ans+=mn*dis[T];
now=T;
while(pre[now])
{
edge[pre[now]].f-=mn;
edge[pre[now]^].f+=mn;
now=edge[pre[now]].u;
}
}
bool check(double val)
{
memset(pre,,sizeof(pre));
memset(head,-,sizeof(head));
num=;
for(int i=;i<=N;i++) AddEdge(S,i,,);
for(int i=;i<=N;i++) AddEdge(i+N,T,,);
for(int i=;i<=N;i++) for(int j=;j<=N;j++) AddEdge(i,j+N,,a[i][j]-1.0*val*b[i][j]);
ans=0.0;
while(SPFA())
dfs();
if (ans<=) return ;
else return ;
}
int main()
{
#ifdef WIN32
freopen("a.in","r",stdin);
//freopen("c.out","w",stdout);
#else
#endif
N=read();
S=,T=N*|;
for(int i=;i<=N;i++)
for(int j=;j<=N;j++)
a[i][j]=read();
for(int i=;i<=N;i++)
for(int j=;j<=N;j++)
b[i][j]=read();
double l=,r=;
while(r-l>=eps)
{
double mid=(l+r)/;
if(check(mid)) r=mid;
else l=mid;
}
printf("%.6lf",l);
return ;
}
BZOJ4819: [Sdoi2017]新生舞会(01分数规划)的更多相关文章
- 【BZOJ4819】[Sdoi2017]新生舞会 01分数规划+费用流
[BZOJ4819][Sdoi2017]新生舞会 Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买一个男生和一个女 ...
- [Sdoi2017]新生舞会 [01分数规划 二分图最大权匹配]
[Sdoi2017]新生舞会 题意:沙茶01分数规划 貌似\(*10^7\)变成整数更科学 #include <iostream> #include <cstdio> #inc ...
- P3705 [SDOI2017]新生舞会 01分数规划+费用流
$ \color{#0066ff}{ 题目描述 }$ 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴. 有\(n\)个男生和\(n\)个女生参加舞会买一个男生和一个女生一 ...
- BZOJ.4819.[SDOI2017]新生舞会(01分数规划 费用流SPFA)
BZOJ 洛谷 裸01分数规划.二分之后就是裸最大费用最大流了. 写的朴素SPFA费用流,洛谷跑的非常快啊,为什么有人还T成那样.. 当然用二分也很慢,用什么什么迭代会很快. [Update] 19. ...
- BZOJ_4819_[Sdoi2017]新生舞会_01分数规划+费用流
BZOJ_4819_[Sdoi2017]新生舞会_01分数规划+费用流 Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞 ...
- 【BZOJ4819】新生舞会(分数规划,网络流)
[BZOJ4819]新生舞会(分数规划,网络流) 题面 BZOJ Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买 ...
- BZOJ-4819: 新生舞会(01分数规划+费用流)
Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买一个男生和一个女生一起跳舞,互为舞伴.Cathy收集了这些同学之间 ...
- 4819: [Sdoi2017]新生舞会(分数规划)
4819: [Sdoi2017]新生舞会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1031 Solved: 530[Submit][Statu ...
- [Sdoi2017]新生舞会(分数规划+费用流)
题解:二分答案mid,然后将每个位置看成a-b*mid,然后由于是n个男生和n个女生匹配,每个人搭配一个cp,于是有点类似于https://www.lydsy.com/JudgeOnline/prob ...
随机推荐
- 从ReadImage到ML- 一个不错的博客
实在对不起原作者,为了不把文章淹没在 转载的海洋里.... 原文链接: http://www.cnblogs.com/tornadomeet/archive/2012/09/26/270404 ...
- Shiro从数据表中初始化资源和权限
之前在测试的Web工程下,我们在applicationContext.xml中配置了shiroFilter资源拦截器信息: <bean id="shiroFilter" cl ...
- npm一点点
写在开头 要抓紧学习了,不然要遭... 月底之前有大量东西要学习,干 npm 包管理工具 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并安装别人编写的命令行程序 ...
- Associated Values & enum
it is sometimes useful to be able to store associated values of other types alongside these case val ...
- js 读取外部的本地json文件
Javascript 读取外部的本地json文件 方案1 运行本地web服务器,提供文件服务 方案2 1.data = '[{"name" : "Ashwin" ...
- form 表单的另类触发方式:报错触发
在用form表单提交的时候,遇到一个问题:表单未验证完,表单就提前提交了. 然后通过断点调试,发现form提交会因为函数报错提前提交. 即如果你的form提交过程中,没有执行到return true之 ...
- Sublime + Chrome 本地调试 CSS 选择器
生成简单的 HTML 代码 使用MacDown写 Markdown,快捷键ALT+CMD+C拷贝成 HTML 代码 粘贴到 Sublime 中,加上 body 标签和 css 头 html <h ...
- jemeter安装步骤
1.jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi 2.在安装jmeter之前首先要安装jdk1.8以上版本,朋友们,千万不要忘了 jd ...
- GDI 线段绘制示例程序
#include <windows.h> #include <strsafe.h> #include <stack> typedef struct tagLINE ...
- Top English interview Q&A
http://www.hjenglish.com/new/p581292/ vocabulary endeavour [ɪn'devər] relevant ['reləvənt] , efficie ...