BZOJ 3876 AHOI2014 支线剧情 费用流
题目大意:给定一张拓扑图,每条边有边权,每次只能从第一个点出发沿着拓扑图走一条路径,求遍历所有边所需要的最小边权和
有下界有源汇的最小费用流 裸的。。。
建图如下:
对于每一条边权为z的边x->y:
从S到y连一条费用为z,流量为1的边 代表这条边至少走一次
从x到y连一条费用为z,流量为INF的边 代表这条边除了至少走的一次之外还可以随便走
对于每个点x:
从x到T连一条费用为0,流量为x的出度的边
从x到1连一条费用为0,流量为INF的边,代替原图上的源和汇
直接跑费用流就能过- - 裸EK跑了6s
看RANK1这时间MS不是费用流?
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 310
#define S 0
#define T (n+1)
#define INF 0x3f3f3f3f
using namespace std;
int n,m,ans;
namespace Min_Cost_Max_Flow{struct abcd{int to,flow,cost,next;}table[1001001];int head[M],tot=1;void Add(int x,int y,int f,int c){table[++tot].to=y;table[tot].flow=f;table[tot].cost=c;table[tot].next=head[x];head[x]=tot;}void Link(int x,int y,int f,int c){Add(x,y,f,c);Add(y,x,0,-c);}bool Edmonds_Karp(){static int q[65540],f[M],cost[M],from[M]; static unsigned short r,h; static bool v[M]; int i; memset(cost,0x3f,sizeof cost); cost[S]=0;f[S]=INF;f[T]=0;q[++r]=S; while(r!=h) { int x=q[++h];v[x]=0; for(i=head[x];i;i=table[i].next) if(table[i].flow&&cost[x]+table[i].cost<cost[table[i].to]) { cost[table[i].to]=cost[x]+table[i].cost; f[table[i].to]=min(f[x],table[i].flow); from[table[i].to]=i; if(!v[table[i].to]) v[table[i].to]=1,q[++r]=table[i].to; } } if(!f[T]) return false; ans+=f[T]*cost[T]; for(i=from[T];i;i=from[table[i^1].to]) table[i].flow-=f[T],table[i^1].flow+=f[T]; return true;}
}
int main()
{//freopen("3876.in","r",stdin);using namespace Min_Cost_Max_Flow;int i,j,y,z;cin>>n;for(i=1;i<=n;i++){scanf("%d",&m);for(j=1;j<=m;j++){scanf("%d%d",&y,&z);Link(i,y,INF,z);Link(S,y,1,z);}Link(i,T,m,0);if(i!=1)Link(i,1,INF,0);}while( Edmonds_Karp() );cout<<ans<<endl;
}
BZOJ 3876 AHOI2014 支线剧情 费用流相关推荐
- 有下界的最小费用可行流2.0(bzoj 3876: [Ahoi2014]支线剧情)
什么是有下界的最小费用可行流? 平时来讲都是最小费用最大流,也就是在满流的前提条件下费用尽可能的少,而最小费用可行流一般不要求满流,但是每条边都有最小流量要求(比如经过边e(u,v)的流量不能少于4等 ...
- 【BZOJ3876】[Ahoi2014]支线剧情 有上下界费用流
[BZOJ3876][Ahoi2014]支线剧情 Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩 ...
- 3876: [Ahoi2014Jsoi2014]支线剧情
Description 提交luogu bzoj [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往 ...
- [BZOJ3876][AHOI2014]支线剧情-有下界的最小费用流
支线剧情 Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支 ...
- BZOJ 5326 [JSOI2017]博弈 (模拟费用流、线段树)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=5326 题解 终于成为第8个A掉这题的人--orz tzw神仙早我6小时 本以为这东西常数 ...
- BZOJ 4946: [Noi2017]蔬菜 模拟费用流
title BZOJ 4946 LUOGU 3826 简化题意: 定义了一种蔬菜为:\(ai,si,ci,xi\),意思是蔬菜的价格为 \(a_i\),第一份卖出时价格为 \(a_i+s_i\),一共 ...
- [BZOJ 2424][HAOI2010]订货(费用流)
Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为 ...
- BZOJ.3265.志愿者招募加强版(费用流SPFA)
题目链接 见上题. 每类志愿者可能是若干段,不满足那个...全幺模矩阵(全单位模矩阵)的条件,所以线性规划可能存在非整数解. 于是就可以用费用流水过去顺便拿个rank2 233. //20704kb ...
- bzoj 2424: [HAOI2010]订货(费用流)
2424: [HAOI2010]订货 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 784 Solved: 541 [Submit][Status ...
最新文章
- Java知多少(43)异常处理基础
- php ci框架 模板输出,CI框架中使用通用模板引擎smarty
- To Java程序员:切勿用普通for循环遍历LinkedList
- [摘录]优势谈判目录
- 颈部有细纹怎么缓解?
- Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?
- 项目积压需求项目计划_需求变更频繁,项目经理如何做好需求管理?
- 我的代码第一次运行时的样子
- mysql安装数据自定义_mysql数据库自定义怎么安装
- 窥探Swift之需要注意的基本运算符和高级运算符
- php 检查路劲是否存在,php 检查文件或目录是否存在代码总结
- 人工智能AI常见的经典K-means聚类算法原理和工作过程
- SAP License:定义某一模块的后台配置权限
- Flash Video带宽估测
- Quartus中Tools->Netlist Viewers->RTL Viewer
- java中class文件反编译_java中的.class文件反编译
- 17个值得收藏的国内外短信接码平台合集
- python如何解压zip文件_Python压缩解压zip文件
- 对_stdcall 的理解 (转)
- 常用的音频处理库介绍
热门文章
- 微信添加表情提示过大怎么解决?GIF太大怎么变小?
- 单向一对多和双向一对多
- 本周AI热点回顾:机器狗要去福特当工程师;人脸黑产攻击一秒被擒;德扑AI大比分击败顶尖人类选手
- iOS设备管理器有人推荐iTunes,有人推荐iMazing,到底如何选择
- 深入了解浏览器的垃圾回收
- Android通讯录管理遇到的权限问题
- LINK 2001 找不到__iob_func, 找不到__fprintf
- 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
- navicat for mysql 12 破解工具 亲测可用
- Unity的一些特效和粒子特效插件