自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

繁凡さん的博客

「无他,唯手熟尔」人生亦繁亦不凡!

  • 博客(35)
  • 收藏
  • 关注

原创 细节决定成败(竞赛错题经验总结)

持续更新的竞赛错题经验总结

2020-06-03 16:59:23 712 3

原创 解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案)

#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#include<map>using namespace std;const int N = 1e4+7;const int M = 5e4+7;const double eps = 1e-6;int f[N];int head[N],v.

2020-06-30 23:58:30 377

原创 UVA1660 电视网络 Cable TV Network(网络流,最小割)

题目链接题意翻译电视电缆网络的继电器之间的连接是双向的。如果任意两个继电器之间都连通,那么这个网络就是连通的,否则不连通。特别地,一个空网络或只有一个继电器的网络是连通的。定义一个有n个继电器的网络的安全指数f为如果不管移除几个继电器,网络都连通,f=n使网络不连通至少要移除的继电器数给出t(t≤20)个网络,求每个网络的安全指数(每个网络的继电器数≤50)。枚举两个不直接连通的点 S 和 T ,求在剩余的 n−2 个节点中最少去掉多少个可以使 S 和 T 不连通,在每次枚举的结构中取 mi

2020-06-26 09:09:25 124

转载 【图论技巧】点边转化(拆点和拆边)

目录一、总述二、常见的有针对性的算法- 针对点权- 针对边权三、拆点- 过程- 实例- 网络流四、拆边- 过程- 实例- 倍增算法(Kruskal 重构树)- LCT 维护最小生成树五、总结一、总述在图论中,一张图由点和边构成。而点和边都可以作为信息的载体,比如说点权和边权。尽管点和边看似如此接近,但是它们的性质确实截然不同的。点表示的是一种实质上的状态,而边表示的是一种虚拟的状态间的转移。因此,有一些图论算法只能处理点上的信息,而另一些图论算法只能处理边上的信息。怎样使得这些针对性的算法通用化呢?某

2020-06-25 09:34:57 854

原创 【网络流】解题报告: luogu P2045 方格取数加强版(k取方格数)(最大费用最大流)

点边转化:把每个格子 (i,j) 拆成一个入点一个出点。从每个入点向对应的出点连两条有向边:一条容量为 1 ,费用为格子 (i,j) 中的数;另一条容量为 k−1 ,费用为 0 。从 (i,j) 的出点到 (i,j+1) 和 (i+1,j) 的入点连有向边,容量为 k ,费用为 0 。以 (1,1) 的入点为源点, (n,n) 的出点为汇点,求最大费用最大流。#include<iostream>#include<algorithm>#include<cstdio.

2020-06-24 23:40:19 135

原创 0x68.图论 - 二分图的匹配
原力计划

二分图概述二分图又称作二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。如上图就是一个标准的二分图性质:二分图不存在长度为奇数的环一、二分图的判定此题来源于《挑战程序设计竞赛》DFSvector<int> G[MAX_V];//图的表示int V;//顶点数int color[M

2020-06-24 16:38:55 208

原创 【经验分享】如何优雅的在 Microsoft word中插入代码

一、工具打开这个网页PlanetB;就是这个:http://www.planetb.ca/syntax-highlight-word二、步骤1.将你需要插入在word中的代码完整的复制到该网站提示的文本框内,选择你的代码类型,如C,C++,HTML等,并点击提交。如下图:2.该网页会自动将该代码生成到一个新的页面,此时ctrl+A全选,然后到word中选择保留源格式粘贴。如下图:大功告成!...

2020-06-23 09:56:38 333

原创 【位运算】解题报告:luoguP4310 绝世好题(位运算优化DP)

绝世好题

2020-06-22 22:58:53 93

原创 数据结构(C语言版) 第 八 章 排序 知识梳理 + 习题详解
原力计划

内部排序,外部排序若待排序记录都在内存中,称为内部排序;若待排序记录一部分在内存,一部分在外存,则称为外部排序。注:外部排序时,要将数据分批调入内存来排序,中间结果还要及时放入外存,显然外部排序要复杂得多。一、归并排序递归实现 - > 自上向下非递归排序 - > 自下向上时间复杂度:O(NlogN)O(NlogN)O(NlogN)先分再合/* 将序列对半拆分直到序列长度为1*/void MergeSort_UptoDown(int *num, int start, int e

2020-06-22 17:55:57 700

原创 八大排序算法合集 (归并排序、交换排序、插入排序、选择排序......)
原力计划

内部排序,外部排序若待排序记录都在内存中,称为内部排序;若待排序记录一部分在内存,一部分在外存,则称为外部排序。注:外部排序时,要将数据分批调入内存来排序,中间结果还要及时放入外存,显然外部排序要复杂得多。排序算法的稳定性根据相同元素排序前后的顺序是否改变来确定一、归并排序递归实现 - > 自上向下非递归排序 - > 自下向上时间复杂度:O(NlogN)O(NlogN)O(NlogN)先分再合/* 将序列对半拆分直到序列长度为1*/void MergeSort_UptoDo

2020-06-22 17:44:13 179

原创 【2-SAT问题】解题报告:POJ 3678 Katu Puzzle(2-SAT问题的判定)

每个元素只有两种可能的取值,所以是2-SAT的模型.我们建立2*n个点,x∈[1…n]表示x取0,x∈[n+1…n+n]表示x取1考虑将所给的关系转化为有向边.u and v=1:u,v都必须是1.为了让他们都是1,我们需要让他们为0时出现矛盾,也就是加边(u,u+n),(v,v+n)u and v=0:如果u=1那么v=0,加边(u+n,v).同理,加边(v+n,u)u or v=1:如果u=0那么v=1加边(u,v+n).同理,加边(v,u+n)u or v=0:u,v都必须是0.为了让.

2020-06-22 10:21:37 94

原创 【缩点】解题报告:luogu P2746 [USACO5.3]校园网Network of Schools(有向图、强连通分量、缩点)

题目链接:P2746 [USACO5.3]校园网Network of Schools用tarjan算法求出强连通分量,并且缩点,如果缩点后只有一个点,则答案为1,0对于第一问,如果缩点后某一点的入度为0,则它肯定要一份软件,如果不为0,则一定可以从别的点获得软件,而对于下一个问题,缩点后,对每个出度为0的点,需拓展一条出边,对每个入度为0的点,需拓展一条入边,则可以完成条件。所以为了拓展的边更少,可以从出度为0的点向入度为0的点拓展边。所以所需最少的拓展数即出度为0的点数和入度为0的点数的较大者。#

2020-06-20 22:49:58 84

原创 模板 - 欧拉路、欧拉回路(一笔画问题)

ACM-ICPC模板欧拉回路就是给一个图,存在一条回路把所边经过且每条边只经过一次。“一笔画问题”对于无向图:存在欧拉回路的条件:每个点的度都为偶数;  存在欧拉路的条件:有且只有两个点的度为一,且这两个点分别为起点和终点;对于有向图:存在欧拉回路的条件:每个点出度等于入度;存在欧拉路的条件:存在一个点出度比入度多一作为起点,存在一点入度比出度多一作为终点,其余点出度等于入度;求欧拉回路解决问题:给定一张无向图,求出它的欧拉回路,若不止一条,随意输出一条即可const int N

2020-06-20 19:51:11 331

转载 教你用代码奏响天空之城! (C++中发声函数Beep详解)

Windows API 就提供了一个这样奇妙的发音函数,它就是Beep函数。Beep可以通过控制主板扬声器的发声频率和节拍来演奏美妙的旋律。使主板按你的要求发出美丽,动听的旋律。首先我们来Beep的函数原型:BOOL Beep( DWORD dwFreq; DWORD dwDuration;); ####### 参数说明:dwFreq 指定要发出的频率(HZ)dwDuration 指定发音的时长,以毫秒为单位。Beep的实际应用比如说我要发do这个音,do应该是523hz

2020-06-20 10:04:30 807

原创 【欧拉回路】解题报告:luogu P6066 [USACO]Watchcow (欧拉回路详解)【模板】

欧拉回路模板题目链接:https://www.luogu.com.cn/problem/P6066O(N+M)O(N+M)O(N+M)非递归版代码 防止栈溢出欧拉回路就是给一个图,存在一条回路把所边经过且每条边只经过一次。对于无向图:存在欧拉回路的条件:每个点的度都为偶数;  存在欧拉路的条件:有且只有两个点的度为一,且这两个点分别为起点和终点;对于有向图:存在欧拉回路的条件:每个点出度等于入度;存在欧拉路的条件:存在一个点出度比入度多一作为起点,存在一点入度比出度多一作为终点,其余

2020-06-19 21:36:32 154

原创 【网络流】解题报告:luogu P3376 【模板】网络最大流
原力计划

题目链接: P3376 【模板】网络最大流DinicDinic算法是网络流最大流的优化算法之一,每一步对原图进行分层,然后用DFS求增广路。时间复杂度是O(n^2*m),Dinic算法最多被分为n个阶段,每个阶段包括建层次网络和寻找增广路两部分。Dinic算法的思想是分阶段地在层次网络中增广。它与最短增广路算法不同之处是:最短增广路每个阶段执行完一次BFS增广后,要重新启动BFS从源点Vs开始寻找另一条增广路;而在Dinic算法中,只需一次DFS过程就可以实现多次增广。层次图:层次图,就是把原图中

2020-06-19 17:07:23 177 2

转载 数据结构(C语言版 第2版严蔚敏版)完整课后习题答案汇总

转自 https://blog.csdn.net/Bamboo_shui/article/details/72433523    (原文没第八章答案)数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著,仅供参考,还是自己认真做了再看第1章  绪论 5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成(  C )。A.动态结构和静态结构     B.紧凑结构和非紧凑结构C.线性结构和

2020-06-19 11:39:25 3517 1

原创 【网络流】解题报告:luogu P2740 [USACO4.2]草地排水Drainage Ditches(Edmonds-Karp增广路,最大流模板)

题目链接:草地排水若一条从源点到汇点的路径上各条边的剩余容量都大于0,则称这条路径为一条增广路。Edmonds-Karp增广路的策略就是不断用bfs寻找增广路,直至网络中不在存在增广路为止。在每次寻找增广路的过程中,EK算法只考虑图中所有f(x,y)<c(x,y)f(x,y)<c(x,y)f(x,y)<c(x,y)即剩余容量大于0的边。这样用bfs寻找增广路,并计算路径上各边剩余容量的最小值minf,最后网络的流量就可以增加minf。(想象成水管,最后只能流出所有管道里口径最小的流

2020-06-17 17:43:34 120

转载 【网络流】学习笔记:一次理解网络流!

一、从概念入手网络流用于解决流量问题网络流:所有弧上流量的集合f={f(u,v)},称为该容量网络的一个网络流.定义:带权的有向图G=(V,E),满足以下条件,则称为网络流图(flow network):仅有一个入度为0的顶点s,称s为源点仅有一个出度为0的顶点t,称t为汇点每条边的权值都为非负数,称为该边的容量,记作c(i,j)。弧的流量:通过容量网络G中每条弧< u,v>,上的实际流量(简称流量),记为f(u,v);性质对于任意一个时刻,设f(u,v)实际流量,则整个

2020-06-17 16:07:18 315 1

原创 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中“桥”的数量。N≤105,M≤2∗105,Q≤1000N≤10^5,M≤2*10^5,Q≤1000N≤105,M≤2∗105,Q≤1000。首先运行一次tarjan,求出桥和缩点,那么无向图缩点为一棵树,树边正好是原来的桥。每次操作连接两点,看看这两点是不是在同一个缩点内,如果是,那么缩点后的树没任何变化,如果两点属于不同的缩点,那么连接起来,然后找这两个缩点的LCA,,因为从点u到LCA再到点v再到点u,将形成

2020-06-16 19:52:27 89

原创 0x66.图论 - Tarjan算法与无向图连通性
原力计划

目录一、无向图的割点与桥割点桥/割边时间戳搜索树追溯值声明: 本系列博客是《算法竞赛进阶指南》+《算法竞赛入门经典》+《挑战程序设计竞赛》的学习笔记,主要是因为我三本都买了 按照《算法竞赛进阶指南》的目录顺序学习,包含书中的少部分重要知识点、例题解题报告及我个人的学习心得和对该算法的补充拓展,仅用于学习交流和复习,无任何商业用途。博客中部分内容来源于书本和网络(我尽量减少书中引用),由我个人整理总结(习题和代码可全都是我自己敲哒)部分内容由我个人编写而成,如果想要有更好的学习体验或者希望学习到更全面的

2020-06-15 22:48:44 225

原创 解题报告:luogu P3469 [POI2008]BLO-Blockade(割点判定 + 思维计算)

题目链接:BLO这道题很明显就是要求割点。题目要求n个数,若将该点割掉,还有多少对有序对,满足x,y不连通。注意问的是有序对,所以x和y,与y和x是两种情况。若该点不是割点,很明显把该点割掉以后,剩余的点依然联通,只有iii这个被切掉的点与其他n−1n-1n−1个点不连通,答案就是2∗(n−1)2*(n-1)2∗(n−1)若该点是割点,那么把该点切掉以后,图会被分成若干个联通子图,答案就是各各联通子图大小的乘积。至于会分成多少个联通子图,我们看该割点相连的点中有多少个是割点,若有k个,那么该点

2020-06-14 21:48:21 101

原创 解题报告:luogu P3916 图的遍历( 缩点 + DFS ? × 思维 + 反向建边 + DFS √ )

题目链接:图的遍历本题是一个有向图,要求每个点能到达的编号最大的点。由于是有向图,如果直接DFS如果有环就可能忽略一些点,所以我们可以直接缩点缩点之后在同一个强联通分量中的点可以相互到达,那么我们可以在缩点时记录每个联通分量中编号最大的点一个强联通分量中所有点能到达的最大编号的点即为这个联通分量能到达的最大的编号然后由于太麻烦了还是算了。次数少的dfs错的原因是因为当出现强连通分量的时候环中最先遍历的点的最大值无法更新 所以有人缩点 多次dfs也可以解决这个问题本题正确解法应该是

2020-06-14 17:19:04 91

原创 解题报告:luogu P2341 受欢迎的牛(Tarjan算法,强连通分量判定,缩点,模板)

题目链接:洛谷 受欢迎的牛基本上算是一道模板题根据题意,如果有环,意味着这个环里的牛都互相喜欢我们可以先求出环,然后把每一个环都看作一个点,这样整个图就变成了一个DAG(有向无环图)看有几个点出度为0,如果大于一个点没有出边,就说明没有最受欢迎的牛,因为必定有一对牛相互不服如果只有一个,那么该强联通分量的大小就是答案然后就是代码了,满满的注释QwQ#include<iostream>#include<algorithm>#include<cstdio>

2020-06-14 11:48:00 84

原创 【树的直径】解题报告: luogu P3629 [APIO2010]巡逻(树的直径,位运算成对变换,思维)

题目链接:P3629 [APIO2010]巡逻首先看题,从1号结点开始,全部遍历并回到1号结点会恰好经过所有的边两次,这样总长度为 2∗(n−1)2*(n-1)2∗(n−1)。那么如果建立一条路以后,由题意可知新道路必须经过恰好一次,也只能经过一次,所以新路从x到y形成一个环,这样就可以用新路的权值1来代替老路径中从x到y的路径1次,也就是说从x到y之间的路径在建立了新路以后只需要再经过一次就行了。所以我们要求最短,肯定要把整棵树上的最长链也就是树的直径省掉答案最优。所以当k = 1 时,我们找到最

2020-06-13 17:59:59 126

原创 【线段树合并】解题报告:luogu P4556雨天的尾巴 (树上对点差分 + 动态开点 + 线段树合并)线段树合并模板离线/在线详解
原力计划

线段树合并模板

2020-06-13 12:08:38 163

原创 POJ 2482-Stars in Your Window(扫描线)

ACM-ICPC模板题目大意:给出n个星星的坐标,每个星星有一个亮度,给出一个矩形的长和宽,问矩形能包括的星星的最大亮度和(不包括边框)。假设每个星星都是矩形的最左下点,那么每一个星星都可以得到一个矩形,(x,y)->(x,y,x+w,y+h),这个矩形的两条高边的值也就是星星的亮度k和-k,对于不同的矩形来说,如果高线出现重合部分,那么也就是说这两个星是可以出现在同一个矩形中的,扫描线求出可能出现的最大的亮度和。注意:因为不包括边框,所以扫描时应先扫描值为负的高线,并且仅对值为正的高线统计最

2020-06-12 22:52:36 85

原创 模板 - 线段树

ACM-ICPC模板懒惰标记一行序列,每次操作把一个区间里的每个数都加上一个数,或者查询一个区间的和。typedef long long ll;typedef pair<int,int> PII;const int INF = 0x3f3f3f3f;const int N = 1e5+7;const int M = 2007;struct SegmentTree{ int l,r; ll sum;//总和 ll lz_add;//增量延迟标记

2020-06-10 11:16:56 306 1

原创 0x43.数据结构进阶 - 线段树
原力计划

目录线段树的建树线段树的单点修改线段树的区间查询POJ3486A Simple Problem with Integers声明: 本系列博客是《算法竞赛进阶指南》+《算法竞赛入门经典》+《挑战程序设计竞赛》的学习笔记,主要是因为我三本都买了 按照《算法竞赛进阶指南》的目录顺序学习,包含书中的少部分重要知识点、例题解题报告及我个人的学习心得和对该算法的补充拓展,仅用于学习交流和复习,无任何商业用途。博客中部分内容来源于书本和网络(我尽量减少书中引用),由我个人整理总结(习题和代码可全都是我自己敲哒)部分

2020-06-08 17:19:14 187

原创 0x63.图论 - 树的直径与最近公共祖先
原力计划

树的直径于LCA最近公共祖先

2020-06-07 12:23:26 201

原创 0x62.图论 - 最小生成树

KruskalKruskalKruskal算法可以简单理解为按边贪心。PrimPrimPrim算法是以更新过的节点的连边找最小值一、KruskalKruskalKruskal算法每次选择权值最小的边,若该边两点没有加入集合,就将他加入。起初每个点的都是一个独立的集合,把边权从小到达排序,按照边权枚举边,用并查集判断两个是否在同一个集合,如果在一个集合就跳过当前边,反之就联通这两个集合。时间复杂度:O(mlogm)O(mlogm)O(mlogm)1.P3366 【模板】最小生成树题目描述如题,

2020-06-05 20:47:58 115

原创 PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)

7-3 旅游规划 (25分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城

2020-06-04 17:34:47 439

原创 数据结构(C语言版) 第 六 章 图 知识梳理 + 习题详解
原力计划

《数据结构》图 的知识梳理,临考复习,高分必备!

2020-06-03 11:35:45 1962

原创 最短路模板合集
原力计划

最短路模板合集

2020-06-03 10:41:52 417

原创 0x61.图论 - 最短路
原力计划

对于一张无向图,我们可以把无向边看作两条方向相反的有向边,所以对于图我们都将其作为有向图来看待。一般用邻接表来存储图,空间复杂度为O(n+m)O(n+m)O(n+m)。int nex[N],ver[N],head[N],edge[N],tot;void add(int u,int v,int val){ ver[++tot] = v; egde[tot] = val; nex[tot] = head[u]; head[u] = tot;}for(int i= he

2020-06-02 22:33:17 190

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除