NB的题目背景



输入输出一样

考试的时候貌似只有gzz一个人搞出来了

%gzz

思路:

分情况讨论

add(x,y,C,E) C是费用 E是流量

1. f>c add(x,y,2,inf),add(y,x,0,f-c),add(y,x,1,c),ans+=f-c;

2. 否则add(x,y,1,c-f),add(x,y,2,inf),add(y,x,1,f);

因为原图中源汇流量不守恒 add(n,1,0,inf)

  1. //By SiriusRen
  2. #include <queue>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7. #define N 6666
  8. #define M 666666
  9. #define inf 0x3f3f3f3f
  10. #define mem(x,y) memset(x,y,sizeof(x))
  11. int n,m,xx,yy,cc,ff,ans,edge[M],cost[M],v[M],nxt[M],first[N],tot,vis[N],minn[N],d[N],with[N];
  12. void Add(int x,int y,int C,int E){edge[tot]=E,cost[tot]=C,v[tot]=y,nxt[tot]=first[x],first[x]=tot++;}
  13. void add(int x,int y,int C,int E){Add(x,y,C,E),Add(y,x,-C,0);}
  14. bool tell(){
  15. mem(vis,0),mem(with,0),mem(d,0x3f),mem(minn,0x3f);
  16. queue<int>q;q.push(0),d[0]=0;
  17. while(!q.empty()){
  18. int t=q.front();q.pop();vis[t]=0;
  19. for(int i=first[t];~i;i=nxt[i])
  20. if(d[v[i]]>d[t]+cost[i]&&edge[i]){
  21. with[v[i]]=i,d[v[i]]=d[t]+cost[i],minn[v[i]]=min(minn[t],edge[i]);
  22. if(!vis[v[i]])vis[v[i]]=1,q.push(v[i]);
  23. }
  24. }return d[n]!=0x3f3f3f3f;
  25. }
  26. int zeng(){
  27. for(int i=n;i;i=v[with[i]^1])
  28. edge[with[i]]-=minn[n],edge[with[i]^1]+=minn[n];
  29. return minn[n]*d[n];
  30. }
  31. int main(){
  32. mem(first,-1),scanf("%d%d",&n,&m);
  33. while(m--){
  34. scanf("%d%d%d%d",&xx,&yy,&cc,&ff);
  35. d[yy]+=ff,d[xx]-=ff;
  36. if(ff>=cc)add(xx,yy,2,inf),add(yy,xx,0,ff-cc),add(yy,xx,1,cc),ans+=ff-cc;
  37. else add(xx,yy,1,cc-ff),add(xx,yy,2,inf),add(yy,xx,1,ff);
  38. }
  39. add(n,1,0,inf),n++;
  40. for(int i=1;i<n;i++)if(d[i]>0)add(0,i,0,d[i]);else add(i,n,0,-d[i]);
  41. while(tell())ans+=zeng();
  42. printf("%d\n",ans);
  43. }

Codeforces 708D 费用流 (呃我们的考试题)的更多相关文章

  1. Codeforces 730I [费用流]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给两行n个数,要求从第一行选取a个数,第二行选取b个数使得这些数加起来和最大. 限制条件是第一行选取了某个数的条件下,第二行不能选取对应位置的数. ...

  2. Codeforces 362E 费用流

    题意及思路:https://blog.csdn.net/mengxiang000000/article/details/52472696 代码: #define Hello the_cruel_wor ...

  3. Codeforces 708D 上下界费用流

    给你一个网络流的图 图中可能会有流量不平衡和流量>容量的情况存在 每调整一单位的流量/容量 需要一个单位的花费 问最少需要多少花费使得原图调整为正确(可行)的网络流 设当前边信息为(u,v,f, ...

  4. CodeForces 164C Machine Programming 费用流

    Machine Programming 题目连接: http://codeforces.com/problemset/problem/164/B Descriptionww.co One remark ...

  5. Codeforces Gym 100002 E "Evacuation Plan" 费用流

    "Evacuation Plan" Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...

  6. Codeforces Gym 101190M Mole Tunnels - 费用流

    题目传送门 传送门 题目大意 $m$只鼹鼠有$n$个巢穴,$n - 1$条长度为$1$的通道将它们连通且第$i(i > 1)$个巢穴与第$\left\lfloor \frac{i}{2}\rig ...

  7. Codeforces 280D k-Maximum Subsequence Sum [模拟费用流,线段树]

    洛谷 Codeforces bzoj1,bzoj2 这可真是一道n倍经验题呢-- 思路 我首先想到了DP,然后矩阵,然后线段树,然后T飞-- 搜了题解之后发现是模拟费用流. 直接维护选k个子段时的最优 ...

  8. BZOJ 3836 Codeforces 280D k-Maximum Subsequence Sum (模拟费用流、线段树)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=3836 (Codeforces) http://codeforces.com ...

  9. Codeforces 362E Petya and Pipes 费用流建图

    题意: 给一个网络中某些边增加容量,增加的总和最大为K,使得最大流最大. 费用流:在某条边增加单位流量的费用. 那么就可以2个点之间建2条边,第一条给定边(u,v,x,0)这条边费用为0 同时另一条边 ...

随机推荐

  1. 基于sparksql调用shell脚本运行SQL

    [Author]: kwu 基于sparksql调用shell脚本运行SQL,sparksql提供了类似hive中的 -e  , -f ,-i的选项 1.定时调用脚本 #!/bin/sh # uplo ...

  2. html屏蔽鼠标右键

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. awk双文件互相匹配查找

    awk双文件互相匹配查找 要求: 文件a:  10/05766798607,11/20050325191329,29/0.1,14/05766798607  10/05767158557,11/200 ...

  4. c语言中类型转换与赋值运算符、算术运算符、关系运算符、逻辑运算符。原码、反码、补码。小解。

    类型转换 自动转换 小范围的类型能够自动转换成大范围的类型.short->int->long->float->double 强制类型转换 (类型名)变量或数值 #include ...

  5. nyoj--84--阶乘的0(数学技巧)

    阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100 ...

  6. CENTOS修改操作系统字符集

    [root@localhost sysconfig]# cd /etc/sysconfig/ [root@localhost sysconfig]# vi i18n 修改并保存退出(:wq) LANG ...

  7. FCC高级编程篇之Record Collection

    Record Collection You are given a JSON object representing a part of your musical album collection. ...

  8. 结构化数据、半结构化数据、非结构化数据——Hadoop处理非结构化数据

    刚开始接触Hadoop ,指南中说Hadoop处理非结构化数据,学习数据库的时候,老师总提结构化数据,就是一张二维表,那非结构化数据是什么呢?难道是文本那样的文件?经过上网搜索,感觉这个帖子不错 网址 ...

  9. 强化学习(2)----Q-learning

    1.Q-learning主要是Q表: 当前状态s1,接下来可以有两个动作选择,看电视a1和学习a2,对于agent人来说,可以根据reward来作出决策(Policy).目的就是得到奖励最大. Q-l ...

  10. [SCOI2012]喵星球上的点名(树状数组+后缀数组)

    我们把所有的名,姓,询问都拼起来构成一个新的长串,然后跑一边SA.排完序后对于每一个询问,我们可以二分求出它所对应的区间(即满足这个区间的前缀都是这个询问串).然后问题就转化为很多区间问区间出现过的不 ...