http://poj.org/problem?id=3686

拆点很巧妙 将每个M个点拆成m*n个点 分别表示第i个玩具在第j个机器上倒数第K个处理

假设这k个玩具真正用在加工的时间分为a1,a2,a3...ak, 那么每个玩具实际的时间是加工的时间+等待时间,分别为

a1, a1+a2, a1+a2+a3.......a1+a2+...ak

求和之后变为 a1 *k + a2 * (k - 1) + a3 * (k - 2).... + ak

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stdlib.h>
#define INF 0xfffffff
#define N 55
#define M 2555
using namespace std;
int w[N][M],n,m,p,lx[N],d,ly[M],link[M],x[N],y[M];
bool match(int u)
{
x[u] = ;
for(int i = ; i <= p ; i++)
{
if(y[i]) continue;
int o = lx[u]+ly[i]-w[u][i];
if(o==)
{
y[i] = ;
if(!link[i]||match(link[i]))
{
link[i] = u;
return true;
}
}
else if(o<d) d = o;
}
return false;
}
void km()
{
int i,j;
for(i = ;i <= n ;i++)
lx[i] = -INF;
memset(ly,,sizeof(ly));
memset(link,,sizeof(link));
for(i = ; i <= n ;i++)
for(j = ; j <= p ;j++)
lx[i] = max(lx[i],w[i][j]);
for(i = ; i <= n ;i++)
{
for(;;)
{
d = INF;
memset(x,,sizeof(x));
memset(y,,sizeof(y));
if(match(i)) break;
for(j = ;j <= n ;j++) if(x[j]){lx[j]-=d;}
for(j = ;j <= p ;j++) if(y[j]){ly[j]+=d;}
}
}
}
int main()
{
int cas,i,j,k,a;
cin>>cas;
while(cas--)
{
scanf("%d%d",&n,&m);
for(i = ;i <= n ;i++)
for(j = ;j <= m ; j++)
{
scanf("%d",&a);
for(k = ; k <= n ;k++)
w[i][(j-)*n+k] = -*k*a;
}
p = n*m;
double s=;
km(); for(i = ;i <= p ; i++)
if(link[i])
{
s-=w[link[i]][i];
}
printf("%.6f\n",1.0*s/n);
}
return ;
}

poj3686The Windy's (KM)的更多相关文章

  1. hdoj--3488--Tour(KM)

    Tour Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submi ...

  2. 【UVA 1411】 Ants (KM)

    Young naturalist Bill studies ants in school. His ants feed onplant-louses that live on apple trees. ...

  3. 【HDU 2853】Assignment (KM)

    Assignment Problem Description Last year a terrible earthquake attacked Sichuan province. About 300, ...

  4. 奔小康赚大钱(km)

    奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  5. POJ 1486 Sorting Slides (KM)

    Sorting Slides Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2831   Accepted: 1076 De ...

  6. POJ 2400 Supervisor, Supervisee(KM)

    題目鏈接 題意 :N个部门和N个员工,每个部门要雇佣一个工人,部门对每个工人打分,从1~N,1表示很想要,N表示特别不想要,每个工人对部门打分,从1~N.1表示很想去这个部门,N表示特别不想去这个部门 ...

  7. 【HDU 1533】 Going Home (KM)

    Going Home Problem Description On a grid map there are n little men and n houses. In each unit time, ...

  8. codevs 1028 花店橱窗布置 (KM)

    /*裸地KM*/ #include<iostream> #include<cstdio> #include<cstring> #define maxn 110 #d ...

  9. hdoj--1533--Going Home(KM)

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

随机推荐

  1. php入门之表单创建和基本处理

    为了方便后面学习数组,这里引入了过渡章节就是表单,至于为什么,等真的学习到数组的时候你就会发现它的妙处拉. ============================================== ...

  2. 6个好用的Web开发工具

    在过去的几年间,涌现出了很多Web开发工具,它们大多还是比较吸引人的,方便了我们的工作.我们可以学习一下这些新东西,短时间就可以拓宽思路(PHP100推荐:学习10分钟,改变你的程序员生涯).这些应用 ...

  3. c# 判断点是否在区域内 点在区域内 在多边形内 判断

    方法一 算法 : public int isLeft(Point P0, Point P1,Point P2)        {            int abc= ((P1.X - P0.X) ...

  4. 编译Linux系统下的jrtplib3.9和jthread1.3(arm和ubuntu)

    最近由于学习需要,需要编译jrtplib,网上的资料基本上都是关于3.9以前的版本,而以前的版本基本上都是通过confiugre来配置生成Makefile,而最近的版本却没有这一项,而是使用cmake ...

  5. 1035 Password (20)

    #include <stdio.h> #include <string.h> struct MyStruct { ]; ]; bool changed; }; int main ...

  6. Google code: Why ‘Everything up-to-date’ when pushing (git)

    原文链接:http://blog.rexzhao.com/2011/11/28/google-code-git-everything-up-to-date-when-push.html 第一次在Goo ...

  7. 通过MyEclipse生成Hibernate类文件和hbm.xml文件,或者annotation文件

    1.   前言 很多人都在使用myEclipse,很多公司也都使用hibernate框架,老版本的hibernate中,由于没有annotation,我们需要写两个文件来维护表与对象的关系,写一个类, ...

  8. 子查询优化成join关联查询时要注意一对多关系

    mysql> select * from t where t.id in (select t1.tid from t1); +------+ | id | +------+ | +------+ ...

  9. 【bzoj3110】[Zjoi2013]K大数查询

    Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置 ...

  10. linux du 与 df 命令

    du 命令:显示每个文件和目录的磁盘使用空间 命令格式:du [选项][文件] -k或--kilobytes  以KB(1024bytes)为单位输出. -m或--megabytes  以MB为单位输 ...