题解:

最少平均分值是等于最佳匹配的权值和除上一个总的点数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. [转]DNS服务器原理详解与Centos6.x下搭建DNS服务器

    转自:http://blog.it985.com/8958.html DNS 数据库的记录:正解,反解, Zone 的意义 通过DNS解析过程详解这篇文章,我们知道了要想访问www.zmit.cn,最 ...

  2. playbook实现nginx安装

    1. 先在一台机器上编译安装好nginx,然后打包 tar -zcvf nginx.tar.gz /usr/local/nginx --exclude=conf/nginx.conf --exclud ...

  3. SparkStreaming程序设计

    一个简单的 Streamin wordCount object StreamingWordCount { def main(args: Array[String]): Unit = { val spa ...

  4. Twitter的分布式自增ID算法snowflake

    snowflake 分布式场景下获取自增id git:https://github.com/twitter/snowflake 解读: http://www.cnblogs.com/relucent/ ...

  5. 有道云笔记配合MPic+七牛云 自制MarkDown文档图床(适用Typora)

    注:从有道云笔记v6.5开始,有道云笔记会员可以使用MarkDown有道自带的图床.(但是非会员可以采用下面的七牛云图床+MarkDown方法) 0x00 前言 一直用有道云笔记,粘贴图片,做笔记没问 ...

  6. Swoole学习(六)Swoole之定时器的创建与清除

    环境:Centos6.4,PHP环境:PHP7,Swoole2.1(在指定的时间后执行函数,需要1.7.7或更高版本) <?php //----------------------------- ...

  7. Java线程状态流转---线程

    说明:线程共包括以下5种状态.1. 新建状态(New)         : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状态(Runn ...

  8. Spring笔记1——Spring起源及其核心技术

    Spring的作用 当我们使用一种技术时,需要思考为什么要使用这门技术.而我们为什么要使用Spring呢?从表面上面SSH这三大框架中,Struts是负责MVC责任的分离,并且提供为Web层提供诸如控 ...

  9. MR案例:WordCount改写

    请参照wordcount实现一个自己的MapReduce,需求为:     a. 输入文件格式:        xxx,xxx,xxx,xxx,xxx,xxx,xxx     b. 输出文件格式:   ...

  10. struts1.2上传多个文件

    页面:                     <input type="file" name="impFile[0]"  style="wid ...