第一问是网络流。

第二问是费用流,但之前的边依然是可以用的,所以每个点决策:用原来的流量    购买一条流量,扫每条边加进去就可以了

然后限制流出为k

码:

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
#define N 1005
#define M 50005
#define inf 10000007
int tot=-1,hou[M],yi[M],er[M],san[M],si[M],s,t,xia[N],zhong[M],yuan[M],v[M],co[M],dis[N],daan,n,m,k,i,j,qj[N];
bool vis[N];
queue<int>q;
void jian(int a,int b,int c,int d)
{++tot;hou[tot]=yuan[a],yuan[a]=tot,zhong[tot]=b,v[tot]=c,co[tot]=d;
}
void jia(int a,int b,int c,int d)
{
jian(a,b,c,d);
jian(b,a,0,-d);
}
bool bfs()
{for(i=1;i<=n;i++){xia[i]=yuan[i];dis[i]=inf;      }q.push(s);dis[s]=1;while(!q.empty()){int st=q.front();q.pop();for(i=xia[st];i!=-1;i=hou[i]){int nd=zhong[i];if(dis[nd]!=inf||v[i]==0)continue;dis[nd]=dis[st]+1;q.push(nd);         }       }return dis[t]<inf;
}
int dfs(int o,int t,int limit)
{if(o==t||!limit)return limit;int i,f,flow=0;for(i=xia[o];i!=-1;i=hou[i]){xia[o]=i;int nd=zhong[i];if(dis[nd]==dis[o]+1&&(f=dfs(nd,t,min(limit,v[i])))){limit-=f;flow+=f;v[i]-=f;v[i^1]+=f;       if(!limit)break;}}return flow;
}
int dinic()
{int ans=0;while(bfs()){ans+=dfs(s,t,inf);}return ans;
}
bool spfa()
{qj[s]=-1;for(i=1;i<=n;i++){dis[i]=inf;}q.push(s);dis[s]=0;while(!q.empty()){int st=q.front();vis[st]=0;q.pop();for(i=yuan[st];i!=-1;i=hou[i]){int nd=zhong[i];if(v[i]>0&&dis[nd]>dis[st]+co[i]){dis[nd]=dis[st]+co[i];qj[nd]=i^1;if(vis[nd]==0){q.push(nd);vis[nd]=1;}}}}if(dis[t]==inf)return 0;int o,minn=inf;for(o=qj[t];o!=-1;o=qj[zhong[o]]){minn=min(minn,v[o^1]);       }for(o=qj[t];o!=-1;o=qj[zhong[o]]){v[o]+=minn;v[o^1]-=minn;daan+=minn*co[o^1];      }return 1;
}
int mcmf()
{while(spfa());
}
int main()
{memset(yuan,-1,sizeof(yuan));scanf("%d%d%d",&n,&m,&k);s=1;t=n;for(i=1;i<=m;i++){scanf("%d%d%d%d",&yi[i],&er[i],&san[i],&si[i]);jia(yi[i],er[i],san[i],0);}printf("%d",dinic());for(i=1;i<=m;i++){jia(yi[i],er[i],15,si[i]);      }++n;jia(t,n,k,0);t=n;mcmf();printf(" %d",daan);
}

2017.10.11 network 网络扩容 思考记录相关推荐

  1. 2017.10.5 最短母串 思考记录

    这个题n<=15,可以用10表示选取情况下的最优值 预处理两个串之间的连接关系,然后枚举状态转移 然而这个题还要输出方案,,而且还不让你开空间. 所以只能记录前继动态判断.. 所以十分难写难调 ...

  2. 2017.10.1 互不侵犯king 思考记录

    ..没想到做的这么顺利 首先n<=⑨.. 所以状压这个⑨ 然后枚举状态转移累加即可 f[行数][最上层排布情况][已经用了几个] 最后    Σf[n][i][k]   0<=i<2 ...

  3. 2017.10.1 atcoder TK1 D 思考记录

    题目大意:给你10^5个物品,有重量和价值, 求重量按位或不超过k的物品的最大价值 首先它是不可以dp的,因为与运算对于背包不能离散,所以考虑模拟入手 从最高位往下找,来保证小于k 若这一位是1,则这 ...

  4. 2017.10.23 chess 中国象棋 思考记录

    这种题的一般解法: 1. 发现状压可以搞,然后发现状态爆炸 2.考虑状态特点,一共只有几种可能的状态 3.考虑可不可以只对状态进行计数 4.离散统计贡献 码: #include<iostream ...

  5. 2017.10.19 起床困难综合征 思考记录

    2333noi送分题 首先暴力试每个数有些二进制位是会重复算的,,所以就考虑能否把每个二进制位独立考虑 老性质:二进制运算每一位独立 所以二进制dp,如果这一位输入1,是多少,输入0,是多少 然后按二 ...

  6. 2017.10.7 弹飞绵羊 思考记录

    ..这个题根据弹后的关系是很容易想出一个森林的..修改连接关系就是cut和link.. 但是分块的做法似乎十分优越,,好写好调.所以学一下分块的写法 首先每一个区间的信息都是可以做到O(1)查询的.. ...

  7. 七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...

    七周三次课(1月24日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法 ====== ...

  8. [BZOJ 1834] [ZJOI2010]network 网络扩容

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 SecMemory Limit: 64 MB Description 给定一张有向图,每条边都有一个容量C和一个扩 ...

  9. [BZOJ1834][ZJOI2010]network 网络扩容 最大流+费用流

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 3330  Solved: 1739 [Subm ...

最新文章

  1. 如何用CSS快速布局(一)—— 布局元素详细
  2. js获取当前Frame在父页面中的id
  3. 基类的析构函数不能被继承。_为什么要把C++类中的析构函数声明为虚函数?
  4. linux rm 不释放_linux删除文件空间不释放问题解决
  5. linux进程配置异常中断自动重启_Linux系统配置及服务管理 (四)进程管理
  6. 约瑟夫环 java_约瑟夫环Java实现
  7. 常用adb shell 命令
  8. AndroidStudio_报错PluginApplicationException: Failed to apply plugin [id ‘com.and---Android原生开发工作笔记227
  9. matlab判断同构数,c语言:编写函数判断x是否同构数
  10. xmapp 终端数据库问题记录 已解决
  11. Linux虚拟机设置全屏
  12. 不歧视双非的计算机院校,这30所重点院校不歧视“双非”,公平竞争录取,爱了爱了!...
  13. 累加器实验总结计算机组成,计算机组成原理累加器实验报告
  14. 临时或永久修改cgroup和Cgroup 入门教程:cpuset
  15. 电脑无法分屏,连接两个显示器,但只能检测到一个显示器,且只有一个显示器有画面
  16. 怎么能快速的把pdf转换为word格式
  17. 【pthread_cancel函数:避免踩坑】
  18. 威猛的 90 后,不等领导下班就先走,《2021 年轻人下班报告》公布
  19. 老油条用什么工具写文档?
  20. Windows桌面出现未激活

热门文章

  1. cpu计算速度排行榜_CPU速度的计算方法和单位
  2. SpringBoot自动装配探究
  3. Kotlin学习笔记18 反射Part2
  4. Ubuntu18.04上手配置入门指南
  5. WORD如何将标题编号设置为汉字编号?
  6. android gradle 1.5.0,Cordova build – 无法解析com.android.tools.build:gradle:1.5.0
  7. 【java基础知识】swagger组件常用命令
  8. 【rabbitmq安装教程】centos7下安装rabbitMQ
  9. day10 java的this关键字
  10. python获取字符串第一个字母_Python3基础 字符串 capitalize 返回一个新的字符串,它的第一个字母大写...