----图论----
笑面蘑菇
这个作者很懒,什么都没留下…
展开
-
[noip2016]换教室---floyd+期望DP
题目描述对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。在可以选择的课程中,有 2n节课程安排在 n 个时间段上。在第 i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 ci上课,而另一节课程在教室 di 进行。在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的 nn 节安排好的课程。如果学生想更换...原创 2017-11-04 10:33:30 · 197 阅读 · 0 评论 -
[洛谷1341]无序字母对---欧拉回路/通路
题目描述给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒)。请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现。输入输出格式 输入格式:第一行输入一个正整数n。以下n行每行两个字母,表示这两个字母需要相邻。输出格式:输出满足要求的字符串。如果没有满足要求的字符串,请输出“No Solution”。如果有多种方案,请输出...原创 2017-08-30 14:52:03 · 292 阅读 · 0 评论 -
最小生成树---kruskal模板(并查集优化)
题目描述略代码#include <cstdio>#include <cstdlib>#include <algorithm>#define open(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout);#define close fclose(stdin)原创 2017-08-30 12:00:16 · 303 阅读 · 0 评论 -
最小生成树---prim模板(二叉堆优化)
题目描述略代码#include <cstdio>#include <cstdlib>#include <queue>#include <vector>#include <cstring>#define open(s) freopen(s".in","r",stdin); freopen(s"原创 2017-08-30 11:54:01 · 1120 阅读 · 0 评论 -
单源最短路---dijkstra模板(二叉堆优化)
题目描述略代码#include <cstdio>#include <cstdlib>#include <queue>#define open(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout);#define close fclose(stdin); fc原创 2017-08-25 10:40:25 · 838 阅读 · 0 评论 -
单源最短路----Spfa模板 (SLF优化)
题目描述略代码#include &lt;cstdio&gt;#include &lt;cstdlib&gt;#include &lt;deque&gt;#define open(s) freopen(s".in","r",stdin); freopen(s".out&原创 2017-08-25 10:35:49 · 322 阅读 · 1 评论 -
[caioj 1115] 网络流入门1 --- dinic最大流
【题目描述】一个有向图, M条有向边和N个点,求点1 到点N的最大流。【输入格式】 第1行:2个整数M (2 <= M <= 200) 和N (0 <= N <= 200)。(注意给出的格式M N) 下来M行: 每行有三个整数:x,y,c。表示一条从点x到点y的有向边,流量为c (0<= c <= 10,000,000)。 【输出格式】 输出一个整数,即最大流原创 2018-02-28 11:33:48 · 231 阅读 · 0 评论 -
[洛谷 P2891][caioj 1116][USACO07OPEN] 吃饭Dining --- dinic最大流
【题目描述】有 F (1 ≤ F ≤ 1000)块不同的肉(编号1~F) 和 D (1 ≤ D ≤ 1000) 罐不同的饮料(编号1~D)。有 N (1 ≤ N ≤ 1000)头牛(编号1~N)。 每头牛有自己喜欢的肉和饮料。每块肉和每罐饮料只能供给一头牛使用。 求最多能满足多少头牛能同时享用到自己喜欢的肉和饮料。(注意某头牛得到满足,不要求享用自己所有喜欢的肉和饮料,只要喜欢的肉的其中...原创 2018-02-28 11:43:29 · 129 阅读 · 0 评论 -
[caioj 1117]路径中的最长边最小 --- 二分 + dinic最大流
【题目描述】千万要注意两个概念:边 和 路径(路径是由多条边组成,当然可以是一条边) 给出N(2 <= N <= 200)个点和P(1 <= P <= 40,000)条双向边,每条边的长度为(0~1 000 000),现在要求选出T(1 <= T <= 200)条“1至N”的路径,任意两条路径上的边不能重复,并且要求这些路径中的最长边的长度最小。注意:两个...原创 2018-02-28 11:52:29 · 191 阅读 · 0 评论 -
【caioj 1118】 牛躲雨 --- floyd + 二分 + dinic网络流
【问题描述】下雨了,有F (1 <= F <= 200) 个牛棚,这F个牛棚之间有P (1 <= P <= 1500)条无向边(这些边长度会给出,牛每个单位时间走一个单位的距离)。 每个牛棚有两个值A和B(A表示一开始这个牛棚有A头牛,B表示下雨时该牛棚最多可以容纳B头牛躲雨)。问最少需要提前多少时间响下雨警告才能让所有牛在下雨前都能够找到可以遮雨的地方。 【输入格式】 第1行:两个整数: F原创 2018-02-28 12:08:44 · 212 阅读 · 0 评论 -
【caioj 1119】牛挤奶 --- 二分+网络流-最大流
【题目描述】FJ把K个挤奶机搬进了住着C头奶牛的牧场。挤奶机的编号为1~K,奶牛的编号为K+1~~K+C。每头奶牛到每台挤奶机距离不同。每台挤奶机每天最多服务M头奶牛。求一种分配方案, 使得走得最远的奶牛走过的距离最小化。输出此距离.【输入格式】 数据第1行是3个整数K,C,M(1≤K≤30)(1≤C≤200)(1≤M≤15) 接下来是一个(K+C)×(K+C)的距离矩阵。矩阵元素为正并不超20原创 2018-02-28 19:41:01 · 178 阅读 · 0 评论 -
[洛谷 P2857][caioj 1120] 牛选牛圈 --- 二分+网络流-最大流
【问题描述】有N(1 <= N <= 1000) 头牛,B (1 <= B <= 20)个牛圈。 每头牛对于牛圈都有不同的喜好值(最喜欢为1,最不喜欢为B)。牛圈有一定的容量。 现在分配每头牛到牛圈去,要求所有牛的最大喜好值与最低喜好值的差值最小。输出最小的“喜好值差”。【输入格式】 第一行N和B 下来N行,每行B个数。表示喜欢的牛圈的序号,按喜欢的程度(递...原创 2018-03-01 08:07:53 · 195 阅读 · 0 评论 -
[洛谷P4001] [BJOI2006]狼抓兔子 --- 网络流-最小割
题目描述现在小朋友们最喜欢的”喜羊羊与灰太狼”,话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形:左上角点为(1,1),右下角点为(N,M)(上图中N=3,M=4).有以下三种类型的道路1:(x,y)<==>(x+1,y)2:(x,y)<==>(x,y+1)3:(x,y)&...原创 2018-03-01 08:08:32 · 205 阅读 · 0 评论 -
[洛谷1462 ]通往奥格瑞玛的道路---二分答案+spfa
题目背景在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量有一天他醒来后发现自己居然到了联盟的主城暴风城在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛题目描述在艾泽拉斯,有n个城市。编号为1,2,3,…,n。城市之间有m条双向的公路,连接着两个城市,从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量。每次经过一个城市,都会被收取一定的过路费...原创 2017-08-30 15:23:01 · 2777 阅读 · 0 评论 -
[洛谷 1144]最短路计数---spfa+记忆化搜索
题目描述给出一个N个顶点M条边的无向无权图,顶点编号为1~N。问从顶点1开始,到其他每个点的最短路有几条。输入输出格式 输入格式:输入第一行包含2个正整数N,M,为图的顶点数与边数。接下来M行,每行两个正整数x, y,表示有一条顶点x连向顶点y的边,请注意可能有自环与重边。输出格式:输出包括N行,每行一个非负整数,第i行输出从顶点1到顶点i有多少条不同的最短路,由于答案有...原创 2017-08-30 15:49:01 · 235 阅读 · 0 评论 -
[洛谷 1967]货车运输---kruskal+lca(倍增)+遍历 or kruskal重构树+lca(倍增)
题目描述A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。 输入输出格式 输入格式:输入文件名为 truck.in。输入文件第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道路。 接下来 m 行...原创 2017-10-12 22:16:06 · 322 阅读 · 0 评论 -
[模板]负环---dfs版spfa
题目描述暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式:第一行一个正整数T表示数据组数,对于每组数据:第一行两个正整数N M,表示图有N个顶点,M条边接下来M行,每行三个整数a b w,表示a-&amp;gt;b有一条权值为w的边(若w&amp;lt;0则为单向,否则双向)输出格式:共T行。对于每组数据,存在负环则输出一行”YE5”(不含引号...原创 2017-10-05 22:28:11 · 859 阅读 · 0 评论 -
[笔记]tarjan-无向图(桥、割点、双联通分量)
一.基本概念 1.桥:对于一个无向图,如果删除某条边后,该图的连通分量增加,则称这条边为桥 2.割点/割项:对于一个无向图,如果删除某个节点u节点后,该图的连通分量增加,则节点u为割项或关节点 3.点-双联通:对于一个连通图,如果任意两点至少存在两条点不重复路径,则称这个图为点双连通(也就是通常说的的双联通) 4.边-双联通:对于一个连通图,如果任意两点至少存在两条边不重复...原创 2017-09-25 12:15:08 · 424 阅读 · 0 评论 -
[笔记]关于tarjan求连通分量 & 缩点
PS:本文图均用链式前向星存储 一.连通分量(模板) 1.有向图inline void tarjan(int p){ dfn[p]=low[p]=++dfn_t; q.push(p); for(int i=head[p];i;i=edge[i].next) { int y=edge[i].to; if(!dfn[y]...原创 2017-09-25 12:05:20 · 280 阅读 · 0 评论 -
[洛谷 2403]所驼门王的宝藏---tarjan缩点+最长路(dp)
题目描述在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族。被族人恭称为“先知”的Alpaca L. Sotomon是这个家族的领袖,外人也称其为“所驼门王”。所驼门王毕生致力于维护家族的安定与和谐,他曾亲自率军粉碎河蟹帝国主义的野蛮侵略,为族人立下赫赫战功。所驼门王一生财宝无数,但因其生性节俭低调,他将财宝埋藏在自己设计的地下宫殿里,这也是今天Henry Curtis故事的起点。Henry是一...原创 2017-09-25 11:34:06 · 598 阅读 · 0 评论 -
[笔记]LCA最近公共祖先---倍增在线算法
一.定义:(出自百度百科)对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。二.在线算法(同上):以序列化的方式一个个的处理输入,也就是说在开始时并不需要已经知道所有的输入。 即在可以在原树改动的情况下随时查询 三.基本思路 位运算:1&amp;lt; &amp;lt; x 等价与 1*(2^x)[至于运算范围,忘d...原创 2017-09-18 11:00:54 · 369 阅读 · 0 评论 -
[笔记]LCA 最近公共祖先---tarjan离线算法
一.定义:(出自百度百科) 对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。二.离线算法(同上): 在开始时就需要知道问题的所有输入数据,而且在解决一个问题后就要立即输出结果。即在算法开始前保存好所有的查询,结束后输出过程中求得的ans三:基本思路: 看到dalao的blog,本蒟蒻已无地自容 ...原创 2017-09-18 09:42:03 · 411 阅读 · 0 评论 -
[洛谷 2483]\[codevs 1835] 魔法猪学院---K短路
题目描述传送门:[洛谷 2483] [codevs 1835] iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练。经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的;元素与元素之间可以互相转换;能量守恒……。能量守恒……iPig 今天就在进行一个麻烦的测验。iPig 在之前的学习中已经知道了很多种元素,并...原创 2017-09-17 19:16:32 · 561 阅读 · 0 评论 -
[笔记]K短路
一.定义:从起点S出发到达目标T的第K小的路径 二.朴素算法: 直接BFS(带优先队列),当目标节点T第K次出队列时,即为所求. 解释:BFS第一次搜到T点时,即为最短距离,那么当第二次搜到呢?不用说,是次短路 RT. : 次短路 节点(距离) S:1 T:6 出队列 队列内元素 1(0) 2(7) 3(9) 6(14) 2(7) 3(9) 6(...原创 2017-09-17 19:05:43 · 410 阅读 · 0 评论 -
[poj 1679] The Unique MST---次小生成树
DescriptionGiven a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spanning Tree): Consider a connected, undirected graph G = (V, E). A spanning tree of G is...原创 2017-09-17 18:57:45 · 226 阅读 · 0 评论 -
[笔记] 次小生成树
一.定义:将所有生成树按照权值之和从小到大排列,求排在第二位的生成树.(PS:如果最小生成树不唯一,次小生成树的权值和最小生成树相同, 即可判断最小生成树是否为一) 二.生成树相关性质 1.切割性质:(各边边权均不相同)一条边是连接某两个集合的最小边,那么这条边就在最小生成树中 2.回路性质:(各边边权均不相同)图若有回路,那么回路中的最长边一定不在最小生成树中 三.预备...原创 2017-09-17 18:51:35 · 210 阅读 · 0 评论 -
[caioj 1091] 最小生成树2---prim
【题目描述】大家还记得“西南旱灾”吗?我们有多少同胞没有水喝?“干净的水”对他们来说也是种奢望!当大家还在浪费水,洗澡还花上10几分钟,有没有觉得羞愧?西南地区的同胞生活在水深火热之中,yuyan的工程队特意赶到灾区挖井,以缓解旱情。 根据调查,工程队发现有N个地方缺水十分严重!工程队决定在这N个地方选择一些地方挖井,然后在某两个地方之间建立一条运输管道,通过管道把井水传输到其他地方,最后...原创 2017-09-12 08:18:05 · 700 阅读 · 0 评论 -
[洛谷 2146] [NOI2015]软件包管理器 --- 树链剖分
传送分析本题几乎为裸的树剖,假设初始化所有点权均为1。 对于install而言,是对树链进行操作,直接求相应区间的权值和即可,顺便将区间的点权修改为0; 对于uninstall而言,是对子树进行操作,则ans = size(子树) - sum(子树)即可,顺便将子树的点权修改为1;代码#include <cstdio>#include <cstdlib>#include <cstring>#原创 2018-03-11 20:19:36 · 95 阅读 · 0 评论