bzoj 1070 [SCOI2007]修车——网络流(拆边)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1070
后面还有几辆车在这个人这儿修,自己这辆车的时间对总时间的贡献就要多乘上几倍。
所以可以费用流。每辆车向每个人连 n 条边,费用依次为 d , 2*d , 3*d …… 表示自己后面有几辆车。
对于一个人来说,还要限制走 k*d 这条边的一共只能有一辆车。只需要将一个人拆成 n 个点,每个点向汇点连容量为1的边就行了。
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<queue>
- using namespace std;
- int rdn()
- {
- int ret=;bool fx=;char ch=getchar();
- while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
- while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
- return fx?ret:-ret;
- }
- int Mn(int a,int b){return a<b?a:b;}
- const int N=,M=,INF=;
- int n,m,t,hd[N],xnt=,cur[N],to[M],nxt[M],cap[M],w[M];
- int dis[N],pre[N],info[N],ans; bool ins[N];
- queue<int> q;
- void add(int x,int y,int z)
- {
- to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;cap[xnt]=;w[xnt]=z;
- to[++xnt]=x;nxt[xnt]=hd[y];hd[y]=xnt;cap[xnt]=;w[xnt]=-z;
- }
- bool spfa()
- {
- memset(dis,0x3f,sizeof dis);dis[]=;
- info[]=INF;info[t]=;
- q.push();ins[]=;
- while(q.size())
- {
- int k=q.front();q.pop();ins[k]=;
- for(int i=hd[k],v;i;i=nxt[i])
- if(cap[i]&&dis[v=to[i]]>dis[k]+w[i])
- {
- dis[v]=dis[k]+w[i];
- pre[v]=i; info[v]=Mn(info[k],cap[i]);
- if(!ins[v])q.push(v),ins[v]=;
- }
- }
- return info[t];
- }
- void ek()
- {
- int s=info[t];
- for(int i=pre[t];i;i=pre[to[i^]])
- {
- ans+=s*w[i];cap[i]-=s;cap[i^]+=s;
- }
- }
- int main()
- {
- scanf("%d%d",&m,&n);int ct=n*m; t=ct+n+;
- for(int i=,x=ct+,d;i<=n;i++,x++)
- for(int j=,y=;j<=m;j++,y++)
- {
- d=rdn();
- for(int k=,lj=d;k<=n;k++,lj+=d,y++)
- add(x,y,lj);
- }
- for(int i=,x=ct+;i<=n;i++,x++)add(,x,);
- for(int i=;i<=ct;i++)add(i,t,);
- while(spfa())ek();
- printf("%.2f\n",(double)ans/n);
- return ;
- }
bzoj 1070 [SCOI2007]修车——网络流(拆边)的更多相关文章
- bzoj 1070: [SCOI2007]修车 费用流
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2785 Solved: 1110[Submit][Status] ...
- BZOJ 1070: [SCOI2007]修车 [最小费用最大流]
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4936 Solved: 2032[Submit][Status] ...
- bzoj 1070 [SCOI2007]修车(最小费用最大流)
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3515 Solved: 1411[Submit][Status] ...
- [BZOJ 1070] [SCOI2007] 修车 【费用流】
题目链接:BZOJ - 1070 题目分析 首先想到拆点,把每个技术人员拆成 n 个点,从某个技术人员拆出的第 i 个点,向某辆车连边,表示这是这个技术人员修的倒数第 i 辆车.那么这一次修车对整个答 ...
- BZOJ 1070: [SCOI2007]修车(费用流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1070 题意: 思路: 神奇的构图. 因为排在后面的人需要等待前面的车修好,这里将每个技术人员拆成n个 ...
- bzoj 1070 [SCOI2007]修车
最小费用最大流. 将每个技术人员拆成车数个点,技术人员i的第j个点代表技术人员i修的倒数第j辆车. 源点向所有技术人员点连一条容量为1费用为0的边. 所有技术人员点向所有车点连边:技术人员i的第j个点 ...
- BZOJ.1070.[SCOI2007]修车(费用流SPFA)
题目链接 /* 神tm看错题*2.. 假如人员i依次维修W1,W2,...,Wn,那么花费的时间是 W1 + W1+W2 + W1+W2+W3... = W1*n + W2*(n-1) + ... + ...
- 【刷题】BZOJ 1070 [SCOI2007]修车
Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...
- bzoj 1070: [SCOI2007]修车【最小费用最大流】
一开始从客人角度想的,怎么建都不对 从一个修车工所接待的所有顾客花费的总时间来看,设一共有x个人,那么第一个修的对总时间的贡献是x*w1,第二个是(x-1)*w2-以此类推.所以把第i个修车工拆成n组 ...
随机推荐
- [MyEclipse]转:设置注释格式
Window --> Java --> Code Style --> Code Templates --> Comments --> types --> Edit ...
- python - pandas或者sklearn中如何将字符形式的标签数字化
参考:http://www.php.cn/wenda/91257.html https://www.cnblogs.com/king-lps/p/7846414.html http://blog.cs ...
- Metasploit没有db_autopwn命令的解决办法
将附件db_autopwn.rp 拷贝到/opt/framework3/msf3/plugins/PS:db_autopwn.rp 下载地址:http://dl.vmall.com/c04w8czlc ...
- nyoj——113 getline
字符串替换 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 ...
- Symmetrical Network Acceleration with EBS 12
Andy Tremayne, my esteemed colleague and fellow blogger, has published a new whitepaper that discuss ...
- ansible modules开发(二)
四 使用其他语言发开module cd /etc/ansible cat library/touch.sh #!/bin/sh args_file=$1 [ ! -f "$args_file ...
- Hessian序列化
当子类定义了和父类同名的属性时,经过hessian传输,会导致该属性值丢失.因为hessian发送二进制数据时,子类数据在前,父类数据在后.接收二进制数据时,子类数据在前,父类数据在后.所以对于同名字 ...
- Java开发微信公众号模板消息【同步|异步】
第一步:申请模板消息功能并添加模板 在微信公众平台找到你需要的模板,并添加上即可: 第二步:添加功能模块后开始开发 功能中使用的类及代码: 发送数据主实体类: Template.java packag ...
- 015PHP基础知识——流程控制(三)
<?php /** *流程控制(三) */ /* 循环结构: while(){ } */ //设置脚本最长执行时间:100秒 //set_time_limit(100); $lantian = ...
- Attach to process 的问题
Attach to process找不到W3WP选项怎么办?刷新它的一个网页