poj2400
题解:
最少平均分值是等于最佳匹配的权值和除上一个总的点数2*n
注意输入反过来
代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
const int N=;
int n,lx[N],ly[N],T,w[N][N],k,d[N],t,ans,num,h[N],px[N],py[N];
int dfs1(int x)
{
px[x]=;
for (int i=;i<=n;i++)
{
if (py[i])continue;
t=lx[x]+ly[i]-w[x][i];
if (!t)
{
py[i]=;
if (!d[i]||dfs1(d[i]))
{
d[i]=x;
return ;
}
}
}
return ;
}
void dfs2(int x,int sum)
{
if (sum>ans) return;
if (x>n)
{
if (sum!=ans)return;
printf("Best Pairing %d\n",++num);
for (int i=;i<=n;i++)
printf("Supervisor %d with Employee %d\n",i,h[i]);
return;
}
for (int i=;i<=n;i++)
if (!py[i])
{
h[x]=i;
py[i]=;
dfs2(x+,sum-w[x][i]);
py[i]=;
}
return;
}
int main()
{
scanf("%d",&T);
for (int u=;u<=T;u++)
{
scanf("%d",&n);
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
{
scanf("%d",&k);
w[k][i]=-j;
}
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
{
scanf("%d",&k);
w[i][k]+=-j;
}
memset(ly,,sizeof(ly));
for (int i=;i<=n;i++)
{
lx[i]=w[i][];
for (int j=;j<=n;j++)
if (lx[i]<w[i][j])lx[i]=w[i][j];
}
memset(d,,sizeof(d));
for (int i=;i<=n;i++)
while ()
{
memset(px,false,sizeof(px));
memset(py,false,sizeof(py));
if (dfs1(i)) break;
t=1e9;
for (int j=;j<=n;j++)
if (px[j])
for (int k=;k<=n;k++)
if (!py[k]&&lx[j]+ly[k]-w[j][k]<t)
t=lx[j]+ly[k]-w[j][k];
for (int j=;j<=n;j++)
{
if (px[j]) lx[j]-=t;
if (py[j]) ly[j]+=t;
}
}
ans=;
for (int i=;i<=n;i++)
if (d[i]!=)ans-=w[d[i]][i];
printf("Data Set %d, Best average difference: %.6f\n",u,ans*0.5/n);
num=;
memset(h,,sizeof(h));
memset(py,false,sizeof(py));
dfs2(,);
if (u<T)puts("");
}
return ;
}
poj2400的更多相关文章
- ACM训练计划step 2 [非原创]
(Step2-500题)POJ训练计划+SGU 经过Step1-500题训练,接下来可以开始Step2-500题,包括POJ训练计划的298题和SGU前两章200题.需要1-1年半时间继续提高解决问题 ...
- poj图论解题报告索引
最短路径: poj1125 - Stockbroker Grapevine(多源最短路径,floyd) poj1502 - MPI Maelstrom(单源最短路径,dijkstra,bellman- ...
- POJ训练计划
POJ训练计划 Step1-500题 UVaOJ+算法竞赛入门经典+挑战编程+USACO 请见:http://acm.sdut.edu.cn/bbs/read.php?tid=5321 一.POJ训练 ...
随机推荐
- Akka in action (第一章 介绍Akka)
在本章 概述Akka 了解Actors和Actor系统 Akka的适用范围 在第一章中,会介绍给你Akk的个方面,它能做什么,与现有的解决方案有那些不同.重点关注Akka有哪些功能和使用范围和强大的并 ...
- SpringSource Tool Suite (STS)无法启动问题
修改STS.ini,指定一个JRE路径: -vmD:\Program\Java\jdk1.7.0_79\bin\javaw.exe-startupplugins/org.eclipse.equinox ...
- 关于Task的认识
首先来说说 Task.Factory.StartNew这种方式来创建Task,这里的WaitAll()指的是等待所有Task执行完成,并且里面的Task参数(t1,t2)是异步的,先以匿名委托方式 s ...
- awk十三问-【AWK学习之旅】
---===AWK学习之旅===--- 十三个常用命令行处理 [root@monitor awkdir]# cat emp.txt Beth 4.00 0 Dan 3.75 0 Kathy 4.0 ...
- java 反序列化 漏洞
java在反序列化的时候会默认调用被重写的readObject(ObjectInputStream )方法. 在远程服务端一个需要反序列化的接口中,比如一个web服务,他那个接口调用链中有反序 ...
- jquery 弹窗插件 layer 常见接口
源自:https://www.cnblogs.com/teamobaby/p/3556584.html 常见接口如下: 方法名 描述 $.layer({}) 核心接口,参数是一个对象,对象属性参见上述 ...
- 百度云如何免费扩容至2055G?
百度云如何免费扩容至2055G? 上篇说到整一个新的百度账号,那么5G的百度云内存肯定满足不了我们收集癖的需求.那么就来了解一下怎么扩容吧. 主要是在手机端实现的 用这个新的百度账号在手机APP上登录 ...
- 问下大家,chorme里用开发者工具看headers,点network标签然后刷新网页并没有headers选项,怎么破?
问下大家,chorme里用开发者工具看headers,点network标签然后刷新网页并没有headers选项,怎么破? 请教个问题 jmeter在Linux服务器压测,抛出很多错误率 但日志中没看到 ...
- Global.asax详解
在网上找了N多相关的东西总说的不够细,现在终于找到了.可以了解web.cofig和Global.asax之间的关系以及执行的顺序. 在Global.asax.cs文件中 protected void ...
- JAVA8 HashMap 源码阅读
序 阅读java源码可能是每一个java程序员的必修课,只有知其所以然,才能更好的使用java,写出更优美的程序,阅读java源码也为我们后面阅读java框架的源码打下了基础.阅读源代码其实就像再看一 ...