题解:

最少平均分值是等于最佳匹配的权值和除上一个总的点数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的更多相关文章

  1. ACM训练计划step 2 [非原创]

    (Step2-500题)POJ训练计划+SGU 经过Step1-500题训练,接下来可以开始Step2-500题,包括POJ训练计划的298题和SGU前两章200题.需要1-1年半时间继续提高解决问题 ...

  2. poj图论解题报告索引

    最短路径: poj1125 - Stockbroker Grapevine(多源最短路径,floyd) poj1502 - MPI Maelstrom(单源最短路径,dijkstra,bellman- ...

  3. POJ训练计划

    POJ训练计划 Step1-500题 UVaOJ+算法竞赛入门经典+挑战编程+USACO 请见:http://acm.sdut.edu.cn/bbs/read.php?tid=5321 一.POJ训练 ...

随机推荐

  1. curl 命令返回json结构human readable

    在curl命令后面添加 | python -m json.tool 不想显示curl的统计信息,添加 -s参数 例: curl https://news-at.zhihu.com/api/4/news ...

  2. oracle lpad 函数使用介绍

    函数介绍 lpad函数从左边对字符串使用指定的字符进行填充.从其字面意思也可以理解,l是left的简写,pad是填充的意思,所以lpad就是从左边填充的意思. 语法格式如下: lpad( string ...

  3. hadoop namenode HA集群搭建

    hadoop集群搭建(namenode是单点的)  http://www.cnblogs.com/kisf/p/7456290.html HA集群需要zk, zk搭建:http://www.cnblo ...

  4. Java学习第三周摘要

    20145307<Java程序设计>第三周学习总结 教材学习内容总结 认识对象 类类型 Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型.sun就是一个类类型变量,类 ...

  5. uboot源码中"include/configs/$(boardname).h"与"configs/$(boardname)_defconfig"之间有何异同

    答:最大的不同就是"configs/boardname_defconfig"中的选项都可以在make menuconfig中进行配置,而"include/configs/ ...

  6. Vue.js项目部署在Tomcat服务器上

    1.在本地的Vue框架中 执行npm run build  将我们的项目打包到dist 文件夹中 2.在服务器上的Tomcat的 webapps文件夹下,新建一个文件夹如:frontvue 3.启动t ...

  7. DataStage系列教程 by Bluebreeze

    突发奇想,用了这么久的DataStage,想要写点东西祭奠那逝去的岁月.希望可以坚持一直写完. DataStage系列教程 (Change Capture) DataStage系列教程 (Pivot_ ...

  8. HDU 3861 The King's Problem(强连通分量缩点+最小路径覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=3861 题意: 国王要对n个城市进行规划,将这些城市分成若干个城市,强连通的城市必须处于一个州,另外一个州内的任意 ...

  9. Struts2 入门实例

    一.最简登录 Demo:login.jsp——web.xml——struts.xml——LoginAction.java——struts.xml——index.jsp 1.下载 Struts2 框架: ...

  10. 调试bug的几种方法

    1.php中的dump,echo,exit 2.浏览器的f12 3.安装xdebug扩展(debugger调试器,profiler探查器,trace代码跟踪) profile日志能记录函数的执行耗时和 ...