题解:

最少平均分值是等于最佳匹配的权值和除上一个总的点数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. Hive的metastore

    hive --service metastore 默认端口是9083 <property> <name>hive.metastore.uris</name> < ...

  2. 论文笔记:蒸馏网络(Distilling the Knowledge in Neural Network)

    Distilling the Knowledge in Neural Network Geoffrey Hinton, Oriol Vinyals, Jeff Dean preprint arXiv: ...

  3. 什么是阻塞式和非阻塞io流?

    阻塞IO:socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会返回. 非阻塞IO:非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功. 两者区别: 所谓阻塞 ...

  4. iOS开发之JSONKit

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

  5. Js答辩总结

    JS项目总结   在做完项目后,我又学到了很多知识,有些知识在书中或许都学不到,这就是动手实践的效果与好处. 这次项目能做完,可以说不是我一个人的正真成果,因为JS是一门较难的课,做项目时往往会遇到很 ...

  6. GIT使用—提交的查找与变更

    一.查找提交 (1)git bisect(二分搜索法) 基于任意搜索条件查找特定的错误提交.在排查某个提交版本导致的错误时非常有用. [root@localhost public_html]# git ...

  7. tomcat+svn+maven+jenkins实现自动构建

    首先说明一个各软件的版本: tomcat:apache-tomcat-8.5.16.tar.gz maven:apache-maven-3.5.0-bin.tar.gz svn:subversion- ...

  8. 20145240《网络对抗》PC平台逆向破解_advanced

    PC平台逆向破解_advanced shellcode注入 Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限.另外,Shellcode一般是 ...

  9. Jackson 框架JSON、XML、List、Map直接相互转换

    博客分类: json   参考:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html 在其基础上做了稍微调整 详情见附件 jacks ...

  10. Windows下才有blat进行命令行邮件发送

    1.先下载blat.exe文件,下载地址: https://sourceforge.net/projects/blat/files/ 2.解压后只需要blat.exe即可,进入此文件夹,运行如下脚本进 ...