[CSP-S模拟测试]:壕游戏(费用流)
题目传送门(内部题18)
输入格式
第一行包括四个数$n,m,k,s$表示有$n$个剧情点,$m$个关卡,要玩$k$次游戏,$s$个完结点接下来一行包含$s$个数,代表$s$个完结点的编号。
接下来$m$行,每行五个正整数$x_i,y_i,A_i,B_i,C_i$,代表第$i$号关卡从$x_i$号剧情点连向$y_i$号剧情点,$A_i,B_i,C_i$意义如题目描述。
输出格式
如果不能通关输出$-1$,否则输出一个整数,代表至少需要的软妹币值。
样例
样例输入:
6 8 2 2
4 5
1 2 4 0 2
1 3 5 0 2
3 4 1 5 1
2 5 1 0 1
4 6 4 2 2
5 6 0 4 2
1 5 5 9 2
2 6 4 5 2
样例输出:
16
数据范围与提示
样例解释:
第一次从$1−>2−>5$,费用为$5$。
第二次从$1−>3−>4$,费用为$11$。
数据范围:
对于$30\%$的数据,$A_i=0$。
对于另外$20\%$的数据,游戏为一条链。
对于$100\%$的数据,$1\leqslant n\leqslant 1,000,1\leqslant m\leqslant 20,000,1\leqslant k\leqslant 200,A_i,B_i\geqslant 0,1\leqslant C_i\leqslant k$。
保证答案在$int$范围内。
题解
注意到$k$只有200,但是又有谁能想到是费用流呢?
实际上,我的思路和题解稍有偏差。
建边的时候记录上边的$A,B$,每走一次就让花费增加,退流的时候再剪掉就好了,缺点就是每次只能流一个,不然有可能会错过最优答案。
时间复杂度:$\Theta(m\times k+n\times k^2)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
struct rec
{int nxt;int to;int w;int f;int a;
}e[100001];
int head[5001],cnt=1;
int n,m,k,s;
int S,T;
int que[100001],pre[50001],dis[50001];
bool vis[50001];
int ans;
void add(int x,int y,int w,int f,int a)
{e[++cnt].nxt=head[x];e[cnt].to=y;e[cnt].w=w;e[cnt].f=f;e[cnt].a=a;head[x]=cnt;
}
bool bfs()
{memset(dis,0x3f,sizeof(dis));memset(vis,0,sizeof(vis));dis[S]=0;vis[S]=1;int he=1,ta=1;que[ta]=S;while(he<=ta){for(int i=head[que[he]];i;i=e[i].nxt)if(e[i].w&&dis[que[he]]+e[i].f<dis[e[i].to]){dis[e[i].to]=dis[que[he]]+e[i].f;pre[e[i].to]=i;if(!vis[e[i].to]){vis[e[i].to]=1;que[++ta]=e[i].to;}}vis[que[he]]=0;he++;}return dis[T]!=1061109567;
}
void update()
{int flag=T;while(flag!=S){int x=pre[flag];ans+=e[x].f;e[x].w--;e[x^1].w++;e[x].f+=e[x].a;e[x^1].f-=e[x].a;flag=e[x^1].to;}
}
int main()
{scanf("%d%d%d%d",&n,&m,&k,&s);S=n+1,T=n+2;add(S,1,k,0,0);add(1,S,0,0,0);for(int i=1;i<=s;i++){int x;scanf("%d",&x);add(x,T,k,0,0);add(T,x,0,0,0);}for(int i=1;i<=m;i++){int x,y,a,b,c;scanf("%d%d%d%d%d",&x,&y,&a,&b,&c);add(x,y,c,b+a,a);add(y,x,0,-b,a);}cnt=0;while(bfs()){update();cnt++;}if(cnt<k)puts("-1");else printf("%d",ans);return 0;
}
rp++
转载于:https://www.cnblogs.com/wzc521/p/11447008.html
[CSP-S模拟测试]:壕游戏(费用流)相关推荐
- 5331. 【NOIP2017提高A组模拟8.23】壕游戏 费用流 动态连边
题意:n个点m条边,每条边有一个经过次数限制ci,假设经过了x次,第x次费用为ai*x+bi,有s个终点,要跑k次,问最小总费用多少. 巨鬼畜,连边只按照第一次的连,然后费用流的时候每流一条边然后再连 ...
- 有没有测试游戏天赋的软件,抖音电竞天赋测试小游戏预约-电竞天赋测试app安卓版_第一手游网...
电竞天赋测试小游戏是一款能够模拟测试玩家游戏天赋的趣味app,通过完成答题即可获取相关的天赋分数,不过需要注意的是要按照自己的第一直觉进行作答.包含多种擅长类型,无论是团战领导者还是高端秀操作都能一键 ...
- BZOJ1150[CTSC2007]数据备份Backup——模拟费用流+堆+链表
题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游 ...
- Spring Cloud Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)
文章目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashbo ...
- 【BZOJ3252】攻略 DFS序+线段树(模拟费用流)
[BZOJ3252]攻略 Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛> ...
- 【wikioi】1033 蚯蚓的游戏问题(费用流)
http://wikioi.com/problem/1033/ 这题也是很水的费用流啊,同之前那题一样,拆点然后建边,容量为1,费用为点权.然后建个源连第一行每个点,容量为1,费用为0,然后最后一行每 ...
- BZOJ 1920 Luogu P4217 [CTSC2010]产品销售 (模拟费用流、线段树)
题目链接 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=1920 (luogu) https://www.luogu.org/prob ...
- BZOJ 5326 [JSOI2017]博弈 (模拟费用流、线段树)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=5326 题解 终于成为第8个A掉这题的人--orz tzw神仙早我6小时 本以为这东西常数 ...
- BZOJ 4849 [NEERC2016] Mole Tunnels (模拟费用流)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=4849 题解 其实也是模拟费用流,但是这道题和一般的题目不一样,这道题是在一个完全二叉树上 ...
最新文章
- 《跟菜鸟学Cisco UC部署实战》-第 1 章 规划-课件(一共12章,免费)
- 基于深度学习的医学图像配准综述
- 从 exe.config 读取appSettings 中的配置数据
- 云计算使关系数据库逐渐落伍(转载)
- 水很深,我还是下去了
- 数据库连接池的工作原理
- @RequestMapping 和 @GetMapping @PostMapping 区别
- 两个栈实现队列与两个队列实现栈
- linux:tr的用法
- linux怎么设置ftp为主动模式,linux设置ftp服务器为主动模式
- Linux共享内存(二) (转载)
- 华南师范大学计算机学院重修,选修课挂科有什么影响 还需要重修吗
- 格雷码的生成详解(C++)(附格雷码对照表)
- 化解字符串不能超过8000的方法及交叉表的处理
- 最新好看的自适应手机版软件APP下载类网站源码,游戏软件应用网站源码,自适应手机端Pbootcms模板
- 腾讯云主机免费升级有感而发
- b站视频突破2倍方法,3倍?4倍?可以开10倍!!!
- 网络工程师的python之路pdf_网络工程师的Python之路:网络运维自动化实战
- python微信朋友圈刷图_用python中的itchat可视化微信朋友圈
- 什么是过拟合、欠拟合现象以及如何缓解?
热门文章
- 编写Java程序,以继承和多态思想模拟饲养员喂养不同动物的不同行为
- 数据分析金庸武侠经典人物,我们喜欢江湖中的这群人
- 计算机网络基础昆明理工大学,昆明理工大学 计算机网络基础 实验三
- 轻松注册WinRAR的小方法
- React教程(六)——使用 create-react-app 快速构建 React 开发环境
- 在excel中执行Sql语句,实现复杂查询
- 编程当中 %lg 是什么? (编程语言常见数据类型与占位符的关系以及所占空间的大小)
- 黑客们的往事(连载十) 凯文·米特尼克
- java运行时加音乐_Java运行窗体/程序添加自定义背景音乐
- overleaf word count 字数统计 报错 解决办法