2016级算法第五次上机-F.ModricWang的水系法术
1066 ModricWang的水系法术
思路
比较典型的最大流问题,需要注意的是,题目已经暗示(明示)了这里的边是双向的,在建图的时候需要加上反向边的容量值。
解决最大流问题的基本思路就是不断在残量网络上找增广路径,这里可以参考一下我院远古学长Song Renfei对于ISAP算法的讲解:ISAP
时间复杂度\(O(V^2 \sqrt E)\)
代码
#include <iostream>
#include <cstring>
using std::ios_base;
using std::cin;
using std::cout;
const int MAXN = 1100;
int maze[MAXN][MAXN];
int gap[MAXN], dis[MAXN], pre[MAXN], cur[MAXN];
int sap(int start, int end, int nodenum) {
memset(cur, 0, sizeof(cur));
memset(dis, 0, sizeof(dis));
memset(gap, 0, sizeof(gap));
int u = pre[start] = start, maxflow = 0, aug = -1;
gap[0] = nodenum;
while (dis[start] < nodenum) {
loop:
for (int v = cur[u]; v < nodenum; v++)
if (maze[u][v] && dis[u]==dis[v] + 1) {
if (aug==-1 || aug > maze[u][v])aug = maze[u][v];
pre[v] = u;
u = cur[u] = v;
if (v==end) {
maxflow += aug;
for (u = pre[u]; v!=start; v = u, u = pre[u]) {
maze[u][v] -= aug;
maze[v][u] += aug;
}
aug = -1;
}
goto loop;
}
int mindis = nodenum - 1;
for (int v = 0; v < nodenum; v++)
if (maze[u][v] && mindis > dis[v]) {
cur[u] = v;
mindis = dis[v];
}
if ((--gap[dis[u]])==0)break;
gap[dis[u] = mindis + 1]++;
u = pre[u];
}
return maxflow;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, m;
cin >> n >> m;
memset(maze, 0, sizeof(maze));
for (int i = 0; i < m; i++) {
int a, b, c;
cin >> a >> b >> c;
maze[a][b] = maze[b][a] = c;
}
int ans = sap(1, n, n + 1);
cout << ans << "\n";
}
2016级算法第五次上机-F.ModricWang的水系法术的更多相关文章
- 2016级算法第三次上机-F.ModricWang的导弹防御系统
936 ModricWang的导弹防御系统 思路 题意即为:给出一个长度为n的序列,求出其最长不降子序列. 考虑比较平凡的DP做法: 令\(nums[i]\) 表示这个序列,\(f[x]\) 表示以第 ...
- 2016级算法第五次上机-G.ModricWang的撒币游戏
1062 ModricWang的撒币游戏 思路 此题为2017年ACM-ICPC亚洲区域赛乌鲁木齐赛区的A题,现场94个队中有38个队做出此题.在这里作为满分以外的题,是为了让大家看一下外面一些题的风 ...
- 2016级算法第六次上机-F.AlvinZH的学霸养成记VI
1082 AlvinZH的学霸养成记VI 思路 难题,凸包. 分析问题,平面上给出两类点,问能否用一条直线将二者分离. 首先应该联想到这是一个凸包问题,分别计算两类点的凸包,如果存在符合题意的直线,那 ...
- 2016级算法第五次上机-E.AlvinZH的学霸养成记IV
1039 AlvinZH的学霸养成记IV 思路 难题,最大二分图匹配. 难点在于如何转化问题,n对n,一个只能攻击一个,判断是否存在一种攻击方案我方不死团灭对方.可以想到把所有随从看作点,对于可攻击的 ...
- 2016级算法第五次上机-C.Bamboo和"Coco"
1064 Bamboo和"Coco" 分析题意 每个亡灵至少一个花瓣,相邻的亡灵中思念值高的要获得的花瓣高(思念值相等是不需要花瓣一样多的).主要考贪心思路,为了使得花瓣总量最少, ...
- 2016级算法第五次上机-B.Bamboo&APTX4844魔发药水
Bamboo&APTX4844魔发药水 题意 "于是,Bamboo耐着性子,看巫师从袖子里掏出 M 瓶时光泉水和 K 粒绿色能量.每瓶时光泉水重量为 c ,生发效果为 l:每粒绿色能 ...
- 2016级算法第四次上机-F.AlvinZH的最“长”公共子序列
940 AlvinZH的最"长"公共子序列 思路 DP,难题. \(dp[i][j]\) :记录A的前i个字符与B的前j个字符变成相同需要的最小操作数. 初始化:dp[i][0] ...
- 2016级算法第五次上机-A.Beihang Collegiate Pronunciation Contest 2017
1065 Beihang Collegiate Pronunciation Contest 2017 思路 在字符串中不断做匹配 找到一个匹配就输出 时间复杂度\(O(n)\) ps.模式串是定长的, ...
- 2016级算法第五次上机-D.AlvinZH的学霸养成记III
850 AlvinZH的学霸养成记III 思路 难题.概率DP. 第一种思考方式:直接DP dp[i]:从已经有i个学霸到所有人变成学霸的期望. 那么答案为dp[1],需要从后往前逆推.对于某一天,有 ...
随机推荐
- spring+springmvc+mybatis+redis实现缓存
先搭建好redis环境 需要的jar如下: jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:330 ...
- system存储说明和制作os模板时的注意事项
1.通过ISO制作模板时,安装机器后,使用非持久化磁盘安装后,无法从硬盘引导:使用持久化磁盘可以.2.system 存储,当opennebula 初次部署时,会生成0(system),1(image) ...
- pcl文档库
http://docs.pointclouds.org/trunk/structpcl_1_1_polygon_mesh.html
- [SoapUI] UrlEncode编码/UrlDecode解码网站
http://tool.chinaz.com/Tools/URLEncode.aspx 解码: 编码:
- Flask框架 之 信号
Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为. 安装 pip3 install blinker 内置信号 request_started = ...
- .net正则查询
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...
- jar包打包成exe示例(基于maven项目)
jar包打包成exe示例(基于maven项目) 说明 针对基于maven的Java项目,通常会打包成jar, 如果要把jar文件包装成exe文件,仅需要在pom.xml配置文件中增加一个插件即可 这里 ...
- 用kettle实现数据库迁移之oracle到mysql
项目完成后,需要把历史oracle 的数据库转移mysql 用kettle 转换数据. 步骤: 1.打开spoon.bat,文件-->新建-->转换,点击“主对象树”,DB连接右键“新建” ...
- Transferring Data Between ASP.NET Web Pages
14 July 2012 20:24 http://www.mikesdotnetting.com/article/192/transferring-data-between-asp-net-web- ...
- Firefox 43无法安装xpi的问题
Firefox 43无法安装xpi的问题 说明:Firefox 42将默认禁止安装未签名扩展 强制禁用这个首选项(高级用户): 你可以在 Firefox 配置编辑页面 (about:config ...