省选专练SCOI2007修车

来源:互联网 发布:人依赖网络例子 编辑:程序博客网 时间:2024/05/18 19:42
#include<bits/stdc++.h>#define INF 2e9+7using namespace std;int n,m;struct Front_star{int u,v,w,c,nxt;}e[400010];int cnt=1;int first[20001]={0};void addedge(int u,int v,int w,int c){cnt++;e[cnt].u=u;e[cnt].v=v;e[cnt].w=w;e[cnt].c=c;e[cnt].nxt=first[u];first[u]=cnt;}void add(int u,int v,int w,int c){addedge(u,v,w,c);addedge(v,u,0,-c);}int a[2000][2000]={0};const int S=0,T=1001;inline int sum(int x,int y){return (x-1)*m+y+m;}int dis[20001]={0};int pre[20001]={0};int inqueue[20001]={0};int vis[20001]={0};int SPFA(){queue<int> q;for(int i=S;i<=T;i++){dis[i]=INF;pre[i]=0;inqueue[i]=0;}q.push(S);dis[S]=0;while(!q.empty()){int x=q.front();//cout<<"x="<<x<<endl;q.pop();inqueue[x]=0;for(int i=first[x];i;i=e[i].nxt){int v=e[i].v;if(dis[v]>dis[x]+e[i].c&&e[i].w){dis[v]=dis[x]+e[i].c;pre[v]=i;if(!inqueue[v]){inqueue[v]=1;q.push(v);}}} }return dis[T]!=INF;} int Mcmf(){int ans=0;while(SPFA()){int s=INF;for(int i=pre[T];i;i=pre[e[i^1].v]) {s=min(s,e[i].w);}for(int i=pre[T];i;i=pre[e[i^1].v]){e[i].w-=s;e[i^1].w+=s;}ans+=s*dis[T];//cout<<ans<<endl;//cout<<"working!!!!"<<endl;}//exit(0);return ans;}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){//cout<<"31265"<<endl;add(S,i,1,0);//S到车流1费0for(int j=1;j<=n;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){add(sum(i,j),T,1,0);//工人(M*N)到T流1费0}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int k=1;k<=m;k++) add(j,sum(i,k),1,k*a[j][i]);//把每个师傅拆成n个,每个代表倒数k个修,这样与车连边,费用就是上面的辣个式子。}}printf("%.2lf",(double)Mcmf()*1.0/m);}

半裸的最小费用最大流

构图:把人拆成N个点,表示N个时间段的工人。这样一共M*N个工人。然后把N辆车和M*N个工人全部连起来(完全二分图),权值是工人时间段编号*输入的时间,表示需要等待的时间。S到车流1费0,工人(M*N)到T流1费0。这样加起来后满流的最小费用/N答案了。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝通知降权了怎么办 被代运营诈骗了怎么办 淘宝上新开店铺怎么办 鱼侧身躺快死掉怎么办 淘宝店永久封了怎么办 苹果手机ld被黑怎么办 故意点餐给差评怎么办 卖家给我差评怎么办 淘宝卖家威胁我怎么办 淘宝被恶意差评怎么办 淘宝买家给差评怎么办 淘宝c店铺评分低怎么办 淘宝刚开店没信誉怎么办 被淘宝举报盗图怎么办 被起诉人没钱还怎么办 拍拍贷贷款逾期了怎么办 拍拍贷借钱不还怎么办 拍拍贷逾期不还怎么办 天猫贷款还不了怎么办 淘宝店铺降权了怎么办 京东白条违约了怎么办 信用卡多存了钱怎么办 欠贷款还不起了怎么办 还不起房贷房子怎么办 商铺按揭还不了怎么办 捷信欠款 2年怎么办 老板欠工资跑路怎么办 小老板不给工资怎么办 网购收到空包裹怎么办 临时额度调低了怎么办 花呗额度为负数怎么办 淘宝发货发多了怎么办 淘宝寄错地址了怎么办 淘宝里没有淘龄怎么办 支付宝不能充值怎么办 玛瑙湾理财跑路怎么办 淘宝扣12分以后怎么办 美团账号忘记了怎么办 在淘宝上开店货源怎么办 手机版2k18闪退怎么办 电脑看视频太卡怎么办