
图论 & 网络流
文章平均质量分 68
SuPhoebe
不是我针对谁,我是说在座的诸位都比我强
展开
-
Leetcode 851. Loud and Rich 以及一些面试的想法
Leetcode 851. Loud and Rich 以及一些面试的想法Leetcode 851. Loud and Rich 这道题本身没有什么很特殊的地方,但是它引发了我对面试写算法题的一些想法和思考。题意:给你一个拓扑序列richer,给你一个安静值quiet。对于每一个节点,找到拓扑序列严格在这个节点之后的最小的quiet值的节点。(无法排列拓扑关系的,则不是严格在节点之后的)。思路看到题目第一眼,首先想到排一个拓扑序列,再对于每个节点,取拓扑序列后一段的最小值(和最小值代表的节点)。原创 2020-07-13 03:24:10 · 377 阅读 · 0 评论 -
Codeforces Round #327 (Div. 1) E. Birthday【AC自动机+网络流】
先用AC自动机处理子串的问题 这是简单的处理,和沈阳站的B题简直异曲同工。 然后形成了一个DAG图用网络流Dinic处理最大独立集的问题,胡伯涛的论文有提及二分图的最大独立集做法。 方案直接用bfs在Dinic最大流跑完之后的残留网络上面询问,能够访问到的点就是方案。// whn6325689// Mr.Phoebe// http://blog.csdn.ne原创 2015-10-27 23:50:56 · 1151 阅读 · 2 评论 -
BUPT-SUMMER-TRAINING-搜索
比赛地址A - Sticks剪枝原创 2014-07-24 22:05:32 · 757 阅读 · 0 评论 -
UVALive-6665-Dragons Cruller(Dij+Hash)
将所有的康托展开扫一遍,然后逆康托展开,以此求转移权值然后建图,只需要建一次图,因为状态转移是固定的然后每一次询问跑一次最短路就行(有一部分人用的是BFS+hash,(有一部分人用的是A*一开始上面两种思路觉得都会TLE,但是最后大家都没有...#include #include #include #include #include #include #incl原创 2014-11-30 01:01:43 · 703 阅读 · 0 评论 -
BUPT 2014新生暑假个人排位赛11
488. 小妹妹个数原创 2014-08-06 23:00:16 · 1542 阅读 · 0 评论 -
Poj 1112 Team Them Up!
首先分析这道题目,题目给出的是一个有向图,即如果有A认识B,但不一定有B认识A。但是在所分配的组里面,任意两个人都要互相认识。1、 先读入数据建立有向图,然后对这个有向图进行处理,如果两个点之间的边是单向边,就认为两个点之间无边(因为这两个人不互相认识),对于两个点间的双向边,即建立一条无向边(这两个人互相认识),这样就可以把一个有向图转化为一个无向图。2、 将这个无向图转化为它的原创 2014-08-12 10:45:09 · 1152 阅读 · 0 评论 -
ACM竞赛中的逆向思维
在竞赛过程中,尤其是近期训练,遇到了不少一定要用逆向思维才能解决的题目。 为此做一系列的总结。希望能够对大家有所帮助。 同时,我也会做成PPT,供14级训练使用。其中有部分问题摘自于2005年国家集训队唐文斌的《正难则反–浅谈逆向思维在解题中的应用》论文。容斥方面逆向思维在容斥方面的应用相当广泛,也可以说容斥就是逆向思维的一种体现。HDU 5072 Coprime 同色三角形题目大意:给了nn个原创 2015-10-29 17:02:47 · 2181 阅读 · 1 评论 -
Codeforces Round #329 (Div. 2) D. Happy Tree Party
对于从a→ba\rightarrow b 的路径,如果边权值为11,则值不变,否则就是1≤边权值1\leq 边权值,这样的话最多除6464次就为00也就不需要继续除下去了,所以问题的关键在于去压缩哪些连续的边权为11的路径,这里自然就想到并查集啦,具体实现看代码吧! 另:因为更改后的边权值只会变小,所以只会涉及到集合并和查的操作。这一点要想懂。// whn6325689//原创 2015-11-06 19:48:25 · 663 阅读 · 0 评论 -
Aizu 2541 Magical Bridges
题意: n个岛屿,由m条桥连接,其中有k条是魔法桥,你可以用魔法把他们变成相同长度。 求在执行魔法后,两个起点S1和S2到终点T的最短路的最小绝对差。 (1≤n≤1000,1≤m≤2000,1≤k≤100)(1\leq n\leq 1000,1\leq m\leq 2000,1\leq k\leq 100)S1S_1和S2S_2到TT的最短路将会是如 j×x+disj\times x+dis原创 2015-09-16 00:21:22 · 559 阅读 · 0 评论 -
HDU 5457 Hold Your Hand【最小割+字典树】
在这里先感谢YYN菊苣对我解题的帮助。首先,我们按照前缀和后缀建立两棵字典树。 节点总数为256∗8∗2256*8*2,每一个叶子节点是我们的数字。 其次,我们对读入的操作来更新字典树,假设字典树有边权,且初始化为INF,则我们每次将操作所得到的前缀或者后缀指向它的那条边取min(p→cost,cost)min(p\rightarrow cost,cost)。注意注意注意,读入的后缀也需要翻转一原创 2015-09-23 10:10:02 · 1078 阅读 · 0 评论 -
HDU 5406【费用流 或 dp+树状数组】
拆点,容量为1表示每个点只能用一次,费用为-1表示经过了几个点 建立超级源向源点连接容量为2的边,表示两个上升序列。spfa用了栈就可以过了。// whn6325689// Mr.Phoebe// http://blog.youkuaiyun.com/u013007900#include <algorithm>#include <iostream>#include <i原创 2015-08-31 23:19:35 · 721 阅读 · 0 评论 -
GYM 100523 I【二分图的最大点权独立集】
Intelligence Quotient ILOAt the University of Byteland one can only study maths and computer science. Currently there are n maths students and m computer science students. These majors are so hard to原创 2015-08-15 21:33:41 · 726 阅读 · 0 评论 -
HDU 4067 Random Maze
题意:给出一个有n个点m条边的有向图,现在要从图中删去一些边使得图满足以下条件:1.图中只有一个入口(s)和一个出口(t)2.所以边都是单向的(这个原图已经保证了)3.对入口(s)而言,其出度=入度+14.对出口(t)而言,其入度=出度+15.对入口(s)、出口(t)以外的点,其入度=出度而对图中每条边,保留这条边或者删去这条边都有相应的花费,分别为a、b,求使得该图满足条原创 2014-08-31 15:33:01 · 650 阅读 · 0 评论 -
HDU 3395 Special Fish
此题解转载自#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2014-08-30 11:49:26 · 727 阅读 · 0 评论 -
HDU 4971 A simple brute force problem.
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define CLR(x,y) mem原创 2014-08-21 20:11:07 · 582 阅读 · 0 评论 -
从入门到精通: 最小费用流的“zkw算法”
点击打开链接1. 网络流的一些基本概念 点击阅读 很多同学建立过网络流模型做题目, 也学过了各种算法, 但是对于基本的概念反而说不清楚. 虽然不同的模型在具体叫法上可能不相同, 但是不同叫法对应的思想是一致的. 下面的讨论力求规范, 个别地方可能需要对通常的叫法加以澄清. 求解可行流: 给定一个网络流图, 初始时每个节点不一定平衡 (每个节点可以有盈余或不足), 每转载 2014-08-31 19:26:51 · 7902 阅读 · 0 评论 -
有上下界的网络流问题
此类问题可以分为三小类问题:一、无源汇有上下界最大流二、有源汇有上下界最大流三、有源汇有上下界最小流 1、无源汇有上下界最大流 题目链接: sgu194 Reactor Cooling 题目大意:给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,转载 2014-09-01 14:39:52 · 762 阅读 · 0 评论 -
HDU 3691 Nubulsa Expo(全局最小割Stoer_Wagn)
模板题给的那个源点是没用,因为如果图被分割开了,无论当前这个源点在那一块,总有一个汇点在另外一块。所以可以无视他给的源点。注意下标原创 2014-11-12 15:02:23 · 761 阅读 · 0 评论 -
Codeforces Round #304 (Div. 2) E. Soldier and Traveling
E. Soldier and Travelingtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputIn the country there are n cities a原创 2015-05-26 13:10:02 · 674 阅读 · 0 评论 -
HDU 5383 Yu-Gi-Oh!
先将所有的攻击力加起来 然后用费用流跑增加的攻击力 建图: 建立成一个二分图 源点向Non-t连边,容量为1,费用为0,Non-t向Tun连边,容量为1,费用为 - max(合成能够增加的攻击力-两个材料怪的攻击力和,0),Tun向着汇点连边,容量为1,费用为0。 一开始用了拆点使得每个点只能用一次,通过费用流来决策 自身攻击力 和 合成攻击力 的选择,然后一直TLE。最后其实是通过人工原创 2015-08-14 17:19:01 · 890 阅读 · 0 评论 -
Aizu 2538 Stack Maze【记忆化搜索】
其实我并不知道我的姿势算是什么。 一开始想着用二维的记忆化搜索,用dp[x][y]dp[x][y]表示(x,y)→(H,W)(x,y)\rightarrow(H,W)能够得到的最大happy值。但是很遗憾的是,这样没法记录,在前进的路上,我有多少个宝石、能够经过多少宝石洞。 所以就想着如何记录,最后发现难以记录。如果是这样的记忆化搜索,时间复杂度大约是O(n2)O(n^2),那么就想着可以进行扩原创 2015-09-15 21:24:24 · 515 阅读 · 0 评论 -
gym 100430【2-SAT+输出方案】
一眼题 注意下表标问题。// whn6325689// Mr.Phoebe// http://blog.youkuaiyun.com/u013007900#include <algorithm>#include <iostream>#include <iomanip>#include <cstring>#include <climits>#include <com原创 2015-09-29 20:45:59 · 672 阅读 · 0 评论 -
HDU 5413 CRB and Roads【bitset】
判断u→vu\rightarrow v这条边是不是redundant就是看有没有另一条u→p1→p2→p3.....→vu\rightarrow p_1\rightarrow p_2\rightarrow p_3.....\rightarrow v路径的存在。 因为图是有向无环图,所以存在拓扑序,那么很明显有u,p1,p2,p3,...,vu, p_1, p_2, p_3, ..., v这些点存原创 2015-08-21 21:16:36 · 1038 阅读 · 0 评论 -
图的割点、桥与双连通分支
[点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的结点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。[原创 2014-11-30 22:27:30 · 933 阅读 · 0 评论 -
图论中 [ 最小边覆盖/最小路径覆盖/最小顶点覆盖/最大独立集/最大团 ] 的概念与性质
基础概念:点的概念a.点覆盖集:无向图G的一个点集,使得该图中所有边都至少有一点端点在该集合内。b.点独立集:无向图G的一个点集,使得任两个在该集合中的点在原图中不相邻。最大独立集:点独立集中元素个数最大的独立集,那么此独立集元素个数k就是这个图的最大独立数。c.最小点覆盖集:无向图G中点数最少的点覆盖集d.最大点独立集:无向图G中,点数最多的点独立原创 2014-12-01 00:02:40 · 5993 阅读 · 0 评论 -
Codeforces Round #261 (Div. 2) E. Pashmak and Graph
有点dp的思路,如果我们把边按照权重排序,则直接加边就可以了。例如dp[x]表示当前以x为终点的最长路。那么加上一条边(x,y)后,dp[y] = max(dp[x] + 1, dp[y]),大概就是这个思路。但是注意边权有相同的,我们必须把相同边权的边统一一起处理掉,并且暂时不能更新,只有等所有相同边权的边都计算完之后再更新。因为是按边处理的,所以复杂度是O(M),当然还有排序的O(MlogM)原创 2014-08-16 08:58:49 · 663 阅读 · 0 评论 -
BOJ 395 Tree
395. Tree时间限制 7000 ms 内存限制 65536 KB题目描述Given a rooted tree with values assigned on each node, you're required to answer how many nodes on the path from the root to u, that have a v原创 2014-07-10 15:58:33 · 602 阅读 · 0 评论 -
BUPT2014新生暑假个人排位赛07
B469. 暑假作业题原创 2014-07-28 22:46:00 · 838 阅读 · 0 评论 -
BUPT2014新生暑假个人排位赛09
470. diffsum原创 2014-08-01 19:17:58 · 639 阅读 · 0 评论 -
BUPT2014新生暑假个人排位赛08
BOJ 448 游戏计算几何原创 2014-07-30 20:11:21 · 784 阅读 · 0 评论 -
Codeforces Round #254 (Div. 2)
题目大意:给出一张图,图中的每个节点,每条边都有一个权值,现在有从中挑出一张子图,要求子图联通,并且被选中的任意两点,如果存在边,则一定要被选中。问说点的权值和/边的权值和最大是多少。解题思路:是图论中的一个结论,最多两个节点,所以枚举两条边就可以了。我简单的推了一下,2个点的情况肯定比3个点的优。假设有3个点a,b,c,权值分别为A,B,C现a-b,b-c边的权值分别为u转载 2014-07-08 09:50:53 · 553 阅读 · 0 评论 -
HDU 4694 Important Sisters
题目大意:给你N个点和M条边的有向图,其中第N个点是源点让你求每个节点#I关于点#N的关键点的编号和解题思路:这题是2013 Multi-University Training Contest 9的题目,官方题解是用bitset或者floyd乱搞然而丁神告诉我们这题是一题裸的Lengauer_Tarjan算法,具体算法见Tarjan论文,有详细的伪代码附上丁神的模板原创 2015-01-30 10:42:29 · 1489 阅读 · 0 评论 -
Codeforces Round #290 (Div. 2) C. Fox And Names && D. Fox And Jumping
题意:给你N个字符串,让你重新编写字典序,使得这N个字符串按照字典序排列解题思路:相邻的两个字符串直接相互比较,可以得出某些字母一定要在某些字母前面,让人联想到拓扑排序因此建图,进行拓扑排序注意:当前面全部相同的时候,长度大的排在后面是不行的,需要特判,这里wa了几次// whn6325689// Mr.Phoebe// http://blog.csdn.原创 2015-02-04 17:52:32 · 649 阅读 · 0 评论 -
Floyd求最小环 HDU 1599
在上海站的热身赛中,B题是用floyd求一个最小环,然后再用大步小步算法解出模方程但是因为floyd求环敲慢了最后没有过以此作为学习#include #include using namespace std;const int Ni=105;const int INF=10000000;int dist[Ni][Ni],g[Ni][Ni];int fa[Ni][Ni],p原创 2014-12-11 21:53:42 · 644 阅读 · 0 评论 -
HDU 5361 In Touch
首先的想法是线段树,因为是区间更新的,所以就是一边dij一边query和update。 今天想了一想,觉得似乎不要用这么麻烦的方法。 下面证明通过某种排序方式使得每个点只要被更新过了,就必定是最近距离。因此我们可以将更新过的点压缩掉。 每个点连出去的边权是相同的,那么我们只需要按照dis[u]+cost[u]dis[u]+cost[u]从小到大排序就可以保证接下来更新的点距离一定是最小,因为原创 2015-08-07 14:04:10 · 1033 阅读 · 0 评论 -
HDU 5409 CRB and Graph【dfs序+RMQ】
先用trajan缩环变成了一棵树 然后删除了一条边就将树分成了两个部分,一个是删除的那边下面的子树,一个是剩余部分。那么要查询的是两个部分中最大的点的值,和不大于它的最小的点的值。这样一想就有点像树链剖分啊,树形DP一样求出一颗子树的某个最大值。 又想到是分离出一颗子树,那么就是想到一些dfs序可以对子树进行区间求值。那么就想到可以预处理出dfs序列,将树的值转化为一个区间值。去掉一颗子树,就是将原创 2015-08-31 22:17:12 · 699 阅读 · 0 评论 -
Andrew Stankevich Contest 28 - I
Problem I. Travel AgencyInput file: travel.in Output file: travel.out Time limit: 1 second Memory limit: 256 megabytes Anthony is working in the intergalaxy travel agency. He often meets the reques原创 2015-07-13 11:54:48 · 1011 阅读 · 0 评论 -
UVA 12295 Optimal Symmetric Paths(spfa+记忆化)
题意: 求从左上角到右下角的最短路径数,且要求沿斜线对称 思路: 既然要求对称,所以我们将对称的权值叠加,那么就是求到对角线的最短路径了,通过dp解决方案数// whn6325689// Mr.Phoebe// http://blog.youkuaiyun.com/u013007900#include <algorithm>#include <iostream>#i原创 2015-06-07 20:57:23 · 809 阅读 · 0 评论 -
2015 UESTC Winter Training #9
传送门这场比赛是2010东京区域赛的题目,只做了几题简单的题目Aizu 1305 Membership Management题意:给你几个部门的人,一个部门可能包含于另一个部门之下问:第一个部门有多少人用map给每个部门编号,然后set数组存每个部门人名,然后用dfs搜索答案// whn6325689// Mr.Phoebe// http://bl原创 2015-03-04 17:10:46 · 723 阅读 · 0 评论 -
Codeforces Round #286 (Div. 2) D.Mr. Kitayuta's Technology
Codeforces Round #286 (Div. 2) D.Mr. Kitayuta's Technology看tutorial可以知道将图形分成一个个SCC来计算,如果SCC有环,无论个数无论层数,则整个 SCC可以形成一条环,每个点都可以互相到达,如果SCC没有环,则可以根据拓扑排序形成一条链。前者要的是n,后者要的是n-1拓扑排序版本有环的都不能进行拓扑原创 2015-01-25 13:20:34 · 788 阅读 · 0 评论