[题解][网络流24题]汽车加油行驶问题 [P4009] [Loj6223] 传送门:汽车加油行驶问题 \([P4009]\) \([Loj6223]\) [题目描述] 给出一个 \(N \times N\) 的方形网格,设\((1,1)\)为起点,\((N,N)\) 为终点,\(X\) 轴向右为正, \(Y\) 轴向下为正. 某些地方设有油库,可供汽车加油.汽车行驶应遵守如下规则: \((1).\) 汽车装满油后能行驶 \(K\) 次,每次行驶距离为 \(1\).出发时汽车为满油状态,在起点与…
题目:https://www.luogu.org/problemnew/show/P4009 网络流24题中不是网络流的最短路题: 把每个点拆成各个油量上的点,根据要求连边即可: 注意:点数最大为100*100*11,因为虽然k<=10,但还有k=0的状态!(竟然因为边界调了一晚上) 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<queue> using nam…
[题解][网络流24题]航空路线问题 [P2770] [Loj6122] 传送门:航空路线问题 \([P2770]\) \([Loj6122]\) [题目描述] 给出一张有向图,每个点(除了起点 \(1\))每条边都只能经过一次,求出从 \(1\) 到 \(n\) 在回到 \(1\) 的一条路径,使得经过的点个数最大,并输出路径. [输入] 第一行两个整数 \(n,m\) 表示点数和边数.接下来 \(n\) 行字符串表示这 \(n\) 个点的名称(编号从 \(1\) 到 \(n\)),再接下来…
最长 \(k\) 可重区间集 题目大意 给定实心直线 \(L\) 上 \(n\) 个开区间组成的集合 \(I\) ,和一个正整数 \(k\) ,试设计一个算法,从开区间集合 \(I\) 中选取开区间集合 \(S \subseteq I\) ,使得在实直线 \(L\) 上的任意一点 \(x\) , \(S\) 中包含 \(x\) 的开区间个数不超过 \(k\) ,且 \(\sum_{z\in S}|Z|\) 达到最大( \(|Z|\) 表示开区间 \(z\) 的长度). 这样的集合 \(S\) 称…
洛谷上面有一整套题. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 extra ①飞行员配对方案问题.top 裸二分图匹配. #include <cstdio> , M = ; struct Edge { int nex, v; }edge[M << ]; int top; int n, m, e[N], mat[N], vis[N], Time; inline void add(int x, int…
------------------------------------------------------------------------------------ 17/24 ------------------------------------------------------------------------------------   开坑了...中考前看看能不能填完(总感觉会TJ...QwQ) TJ啦23333333 1.飞行员配对问题(二分图最大匹配 裸匈牙利. #incl…
写在前面:SDOI2016 Round1滚粗后蒟蒻开始做网络流来自我拯救(2016-04-11再过几天就要考先修课,现在做网络流24题貌似没什么用←退役节奏) 做的题目将附上日期,见证我龟速刷题. 1.飞行员配对方案问题 2016-04-11 二分图最大匹配问题,更新了一下$Dinic$模板,带上了当前弧优化和多路增广.这道题输出方案有很多种,可是没有special judge,所以没有A,但方案数是对的.合法的输出方案只能用匈牙利算法解决. #include<queue> #include&…
太裸的我就不放代码了...(黑体字序号的题表示值得注意) 1.搭配飞行员 [LOJ#6000] 二分图最大匹配. 2.太空飞行计划 [LOJ#6001] 最小割常规套路.输出方案.(注:这题换行符要用 \r) 3.最小路径覆盖 [LOJ#6002] 网上大多数题解都是二分图相关的,但这题有一个更直观的做法. 我们限制每个点的流量上下界都为 \(1\),从源点向每个点的"入点"连容量为 \(1\) 的边,从每个点的"出点"向汇点连容量为 \(1\) 的边,然后跑最小流…
网络最大流 dinic+当前弧优化. const int N=10007,M=100007,inf=1e9; int s,t,head[N],ver[M],edge[M],Next[M],tot=1,cur[N],dep[N];queue<int>q; void add(int u,int v,int w){ver[++tot]=v,Next[tot]=head[u],edge[tot]=w,head[u]=tot,ver[++tot]=u,Next[tot]=head[v],head[v]=…
原题链接 题意简述 求二分图的最大匹配. 题解 这里写的是匈牙利算法. 表示节点的当前匹配. 为真表示在这一轮匹配中,无法给节点一个新的匹配.所以如果为真就不用再dfs它了,直接continue就好. Code //「网络流 24 题」搭配飞行员 #include <cstdio> #include <cstring> int const N=100+10; int n,n1; int cnt,h[N]; struct edge{int v,nxt;} ed[N*N]; void…