自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

繁凡さん的博客

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

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

原创 解题报告:luogu P2423 [HEOI2012]朋友圈【最大团转最大点独立集(匈牙利算法+时间戳优化)】

图的最大团:”任意两点之间都有一条边相连“的子图被称为无向图的团,点数最多的团为图的最大团朋友圈中任意两个点之间都有关系,既是图中的团。答案就是图中的最大团。我们如果把B国的人分成奇数和偶数两类,就会发现奇数和偶数这两部分都是一个团而且这两部分之间有一些连边很像二分图是吧,就只是左右两边的点从两两没边变成了两两有边于是我们取一个补图,这张图就变成了一张二分图补图有一个非常好的性质,补图最大独立集等于原图最大团这个很好理解吗,最大团要求两两有边,最大独立集要求两两没边,于是把边的存在性取反之.

2020-07-31 23:00:58 144

原创 解题报告:线性规划与网络流24题

目录A.luogu P2756 飞行员配对方案问题 【提高+/省选- 】B.luoguP2762 太空飞行计划问题【省选/NOI- 】*【题解】网络流24题 24/24线性规划与网络流24题 解题报告[线性规划与网络流24题] 网络流常见模型问题编号问题名称问题模型转化模型1飞行员配对方案问题二分图最大匹配网络最大流2太空飞行计划问题最大权闭合图网络最小割3最小路径覆盖问题有向无环图最小路径覆盖网络最大流4魔术球问题有向无环图最小路径

2020-07-31 20:55:39 748

原创 模板 - 二分图(包含全套常用定理性质)

整理的算法模板合集: ACM模板目录染色法增广路的性质一些二分图的概念和定理二分图最大匹配匈牙利算法二分图匹配模型的两个要素二分图最小点覆盖的一个要素DAG的最小路径点覆盖DAG的最小可重复路径点覆盖最小可重复路径点覆盖模板二分图:如果一张无向图 (V,E)(V,E)(V,E)存在点集A,BA,BA,B,满足 ∣A∣,∣B∣≥1|A|,|B|≥1∣A∣,∣B∣≥1,A∩B=∅A∩B=∅A∩B=∅,A∪B=VA∪B=VA∪B=V,且对于 x,y∈Ax,y∈Ax,y∈A 或x,y∈Bx,y∈Bx,y∈B

2020-07-31 20:46:32 208

原创 解题报告:AcWing 1165. 单词环(01分数规划、hash、经验优化)

本题的关键在于:建图01分数规划本题的数据过大,如果直接spfa判断会TLE,因此我们使用经验优化,就是如果所有的点入队的次数过多,比如大于100000,那么我们直接认为它是存在正环的。(免去TLE,但是这个不一定对)建图做一个对偶主要是除了两端的两个字母有用以外,字符串中间的其他所有的字符都没有用,因此我们可以直接这样建图:直接hash两端的两个字母作为结点,边的权值为该字符串的个数。这样建的图结点和边的个数为1e7,没有超限。如果我们直接像下面这样暴力建图,数据会达到1e10,.

2020-07-31 18:09:01 100

原创 【图论专题】拓扑排序

拓扑排序给定一张有向无环图,若一个序列A满足图中的任意一条边(x,y)x都在y的前面呢么序列A就是图的拓扑排序实际上拓扑排序就是满足所有的边x指向y,x一定在y的前面。这样按照拓扑排序递推,就可以满足每一个状态都没有循环依赖 −>->−> 没有后效性−>->−>可以满足DP递推AcWing 1191. 家谱树(topo模板题)#include<cstdio>#include<iostream>#include<algorith

2020-07-31 17:56:56 142 3

原创 解题报告:NOIP2013 车站分级(拓扑序递推求解差分约束、建图优化O(n+m)) 超详细讲解

本题是2013年NOIP普及组的压轴题差分约束裸题。计算当前线路中最小的级别(比较始发站和终点站)。整条线路中所有大于这个级别的都必须停靠所有未停靠的站点的级别一定小于这个级别也就是说所有未停靠的即为级别低,记为A所有停靠的站点级别一定比A的高,记作B得到公式B≥A+1B ≥ A + 1B≥A+1根据很明显是一道差分约束问题。根据差分约束的概念,我们从所有的A向所有的B连一条权值为1的有向边。然后根据差分约束的套路,我们还要设一个界限才能求出最大值。因为所有车站级别都是正值,所以A≥

2020-07-31 17:53:26 134

原创 模板 - 拓扑排序

拓扑排序给定一张有向无环图,若一个序列A满足图中的任意一条边(x,y)x都在y的前面呢么序列A就是图的拓扑排序实际上拓扑排序就是满足所有的边x指向y,x一定在y的前面。这样按照拓扑排序递推,就可以满足每一个状态都没有循环依赖 −>->−> 没有后效性−>->−>可以满足DP递推拓扑图<=><=><=>有向无环图(DAG)toposort模板题目信息:有个人的家族很大, 给出每个人的孩子的信息。 输出一个序列,使得每个人的孩

2020-07-31 12:30:53 142

原创 【图论专题】二分图

同样放一些yxc老师的讲课笔记A、AcWing 257. 关押罪犯#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int N = 50007, M = 500007;int n, m;int color[N];int ver[M], nex[M], edge[M], head[M],

2020-07-30 21:35:38 327

原创 【图论专题】无向图的双连通分量

A、AcWing 395. 冗余路径结论:变成边双连通分量所需要新建的边数无向图连多少条边使得整个无向图变成任意两个点之间都有两条完全不相同的路径。结论1:任意两个点之间都有两条完全不相同的路径 =>=>=> 没有割边 =>=>=> 边双连通图结论2: 需要新建的边数:cnt+12\frac{cnt + 1}{2}2cnt+1​ (下取整)(其中cnt为将所有的边双连通图缩点以后有割桥形成树的叶子节点,也就是度数为1的结点数)首先我们可以对图进行边连.

2020-07-29 23:24:18 301

原创 蓝桥杯C++ AB组辅导课

今天在AcWing闲逛白嫖到了yxc老师的蓝桥杯C++ AB组辅导课的题单,正好快要蓝桥杯了,我准备每天花半个小时刷5道这个题单里的水题,练一练,不然到时候我各种花里胡哨的算法学了一堆,水题切不动就gg了。一共86道水题,每天5道半个月水完吧这是蓝桥杯C++ AB组辅导课的链接感兴趣的可以报个名,y老师的课还是很有质量保证的这个课我就没必要报来听了,刷刷题就好。第一讲、递归与递推第一章是递归,我最讨厌的就是递归了。。。1.AcWing 92. 递归实现指数型枚举dfs,直接用状态压缩。d

2020-07-29 23:23:23 1171 6

原创 模板 - 无向图的连通性

整理的算法模板合集: ACM模板目录tarjan算法求无向图的桥、边双连通分量并缩点tarjan算法求无向图的割点、点双连通分量并缩点结论:变成边双连通分量所需要新建的边数tarjan算法求无向图的桥、边双连通分量并缩点// tarjan算法求无向图的桥、边双连通分量并缩点#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vect

2020-07-29 17:50:28 143

原创 【图论专题】欧拉路径和欧拉回路

优化有向图用一条边删一条边无向图,用一条边,删一条边,对边也要标记#include<iostream>#include<cmath>#include<algorithm>using namespace std;const int N = 5007;int main(){ int x,y; scanf("%d%d", &x, &y); int a, b, c, d; double sum = 0;

2020-07-29 12:22:49 128

原创 模板 - 有向图的连通性

整理的算法模板合集: ACM模板一般用到tarjan算法的题目步骤都非常相似:tarjan算法缩点,建图按照拓扑序递推(这里缩点以后就已经是逆拓扑序了)/ 循环遍历新图求解答案。上一道我认为非常经典的有向图tarjan算法模板例题,包含了:有向图的tarjan模板去重缩点模板按拓扑序递推模板/*[ZJOI2007]最大半连通子图*/const int N = 100007, M = 2000007, INF = 0x3f3f3f3f;typedef long long l

2020-07-29 08:56:55 185

原创 【动态规划专题】最长上升子序列模型

A、AcWing 895. 最长上升子序列(模板)给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。今天的最长上升子序列模型的基础这里是一个O(n2)O(n^ 2)O(n2)的做法。可以用二分优化成O(nlogn)O(nlogn)O(nlogn)#include <iostream>#include <algorithm>#include <cstdio>using namespace std;const int N = 50007,

2020-07-28 21:02:12 135

原创 【图论专题】有向图的强连通分量

AcWing 1174. 受欢迎的牛#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<vector>using namespace std;const int N = 50007, M = 500007, INF = 0x3f3f3f3f;int n,m;int dfn[N], low[N];int ins[N...

2020-07-27 22:42:41 158

原创 解题报告:luogu P2272 [ZJOI2007]最大半连通子图(tarjan缩点、递推DP、hash、set判重)

AcWing 1175. 最大半连通子图(tarjan缩点 + DP + hash)这时yxc上课时讲解的截图。一般用到tarjan算法的题目步骤都非常相似:tarjan算法缩点,建图(这里要判重)按照拓扑序递推(这里缩点以后逆向就已经是拓扑序了)/ 循环遍历新图求解答案。导出子图:点是原图的子集,边一定包含与子图中所有点有关的边。半联通子图:所有的两个点,我要么可以直接一条路过去,要么你可以直接过来。显然,对于任意一个强连通分量S∈GS\in GS∈G,它一定一个半连通子图,于是我

2020-07-27 22:18:03 76

原创 【动态规划专题】数字三角形模型

题目算法AcWing 1015. 摘花生简单线性DP、数字三角形模型AcWing 1018. 最低通行费数字三角形模型AcWing 1027. 方格取数DPAcWing 275. 传纸条DP闫氏DP分析法从集合的角度思考DP问题从最基础的例题开始分析A、AcWing 1015. 摘花生例题分析:#include<iostream>#include<cstdio>#include<algorithm>#...

2020-07-26 21:07:18 158

原创 Codeforces Round #621题解

A、 Cow and HaybalesCow\ and\ HaybalesCow and Haybales贪心模拟题。#include<iostream>#include<iomanip>using namespace std;const int N = 51007, M = 5000007, INF = 0x3f3f3f3f;int n,m,k;int a[N];int t;int main(){ scanf

2020-07-24 21:26:33 71

原创 解题报告:CF1307D Cow and Fields(最短路、最优解不等式化简)

CF1307D Cow and Fields整张无向图的边权为1。首先求出 1,n1,n1,n 两个点的单源最短路径。这 kkk 个特殊点中,我们令第 aaa 个特殊点到 111 的距离为 xax_axa​,到 nnn 的距离为yay_aya​。设答案是连接 a,ba,ba,b 两点。我们的目的就是最大化min(xa+yb+1,ya+xb+1)min(x_{a} + y_{b} + 1,y_{a} + x_{b} +1)min(xa​+yb​+1,ya​+xb​+1)为了不失一般性,我们设xa

2020-07-24 19:24:44 112

原创 模板 - 基础数论

目录试除法判定质数试除法分解质因数朴素筛法求素数线性筛法求素数试除法求所有约数约数个数和约数之和欧几里得算法求欧拉函数筛法求欧拉函数快速幂扩展欧几里得算法高斯消元递归法求组合数通过预处理逆元的方式求组合数Lucas定理分解质因数法求组合数卡特兰数NIM游戏SG函数试除法判定质数bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i

2020-07-24 11:03:34 194

原创 字符串哈希

字符串哈希核心思想:将字符串看成P进制数,P的经验值是131或13331,取这两个值的冲突概率低小技巧:取模的数用2^64,这样直接用unsigned long long存储,溢出的结果就是取模的结果typedef unsigned long long ULL;ULL h[N], p[N]; // h[k]存储字符串前k个字母的哈希值, p[k]存储 P^k mod 2^64// 初始化p[0] = 1;for (int i = 1; i <= n; i ++ ){ h[i]

2020-07-24 10:37:38 280

原创 KMP算法

KMP// s[]是长文本,p[]是模式串,n是s的长度,m是p的长度/*求模式串的Next数组:*/for (int i = 2, j = 0; i <= m; i ++ ){ while (j && p[i] != p[j + 1]) j = ne[j]; if (p[i] == p[j + 1]) j ++ ; ne[i] = j;}// 匹配for (int i = 1, j = 0; i <= n; i ++ ){ wh

2020-07-24 10:36:32 452

原创 Trie树

Trie树int son[N][26], cnt[N], idx;// 0号点既是根节点,又是空节点// son[][]存储树中每个节点的子节点// cnt[]存储以每个节点结尾的单词数量// 插入一个字符串void insert(char *str){ int p = 0; for (int i = 0; str[i]; i ++ ) { int u = str[i] - 'a'; if (!son[p][u]) son[p][u]

2020-07-24 10:35:27 222

原创 模板 - C++ STL

C++ STLvector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end() [] 支持比较运算,按字典序pair<int, int> first, 第一个元素 second, 第二个元素 支持比较运算,以first为第一关键字,以secon

2020-07-24 10:32:09 621

原创 模板 -基础数据结构

目录单链表双链表栈循环队列单调栈单调队列KMPTrie树并查集堆一般哈希字符串哈希单链表// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx;// 初始化void init(){ head = -1; idx = 0;}// 在链表头插入一个数avoid insert(int a){ e[idx] = a, ne[idx] = head, head = i

2020-07-24 10:25:27 182

原创 模板 - 基础算法

整理的算法模板合集: ACM模板快速排序void quick_sort(int q[], int l, int r){ if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ; while (q[i] < x); do j -- ; while (q[j] > x);

2020-07-24 09:20:09 191

原创 解题报告:AcWing 352. 闇の連鎖(树上差分、方案统计)

https://www.acwing.com/problem/content/354/在没有附加边的情况下,我们发现这是一颗树,那么再添加条附加边(x,y)后,会造成(x,y)之间产生一个环如果我们第一步截断了(x,y)之间的一条路,那么我们第二次只能截掉(x,y)之间的附加边,才能使其不连通;我们将每条附加边(x,y)称为将(x,y)之间的路径覆盖了一遍;因此我们只需要统计出每条主要边被覆盖了几次即可;对于只被覆盖一次的边,第二次我们只能切断(x,y)边,方法唯一;如果我们第一步切断了被覆盖

2020-07-23 23:55:13 114

原创 模板 - LCA最近公共祖先(倍增法、Tarjan、树上差分、LCA优化的次小生成树)

注意LCA可以是自己一、LCA的在线倍增算法/*给定一棵包含 n个节点的有根无向树,有 m个询问,每个询问给出了一对节点的编号 x和 y,询问 x与 y的祖孙关系。注意要先算t,这里使用bfs防止爆栈,使用手写循环队列效率更高*/const int N = 50007, M = 500007 ,INF = 0x3f3f3f3f;int t;int n, m;int ver[M], nex[M], edge[M], head[N],tot;int deep[N];bool vis.

2020-07-23 18:05:21 160

原创 解题报告:luogu P4180 [BJWC2010]严格次小生成树(次小生成树、倍增LCA优化、O(mlogn) )

P4180 [BJWC2010]严格次小生成树次小生成树有两种,一种是不严格次小生成树,也就是可以数值上等于最小生成树,一种是严格次小生成树,是权值严格大于最小生成树,两种求法大同小异。方法2在严格次小生成树和不严格次小生成树都成立,而方法1只在严格次小生成树中成立对于任意一颗最小生成树,都存在一个次小生成树(严格或者不严格都成立),与最小生成树只差1条边。根据存在次小生成树与最小生成树只差一条边。我们可以先通过kruskal求出最小生成树 O(mlogm)通过这个树初始化某点到其他点的

2020-07-23 17:49:20 75

原创 【网络流24题】I、 方格取数问题(二分图的最大独立集/最小割)

I、 方格取数问题(二分图的最大独立集/最小割)【问题分析】二分图点权最大独立集,转化为最小割模型,从而用最大流解决。【建模方法】首先把棋盘黑白染色,使相邻格子颜色不同,所有黑色格子看做二分图X集合中顶点,白色格子看做Y集合顶点,建立超级源点S超级汇点T。1、从S向X集合中每个顶点连接一条容量为格子中数值的有向边。2、从Y集合中每个顶点向T连接一条容量为格子中数值的有向边。3、相邻黑白格子Xi,Yj之间从Xi向Yj连接一条容量为无穷大的有向边。求出网络最大流,要求的结果就是所有格子中数值总

2020-07-22 23:25:43 135

原创 Codeforces Round #643 (Div. 2)题解

A Sequence with DigitsSequence\ with\ DigitsSequence with Digits

2020-07-22 18:45:48 133

原创 【图论专题】差分约束系统

差分约束系统详解及专题训练

2020-07-22 17:41:59 182

原创 模板 - 判断负环(超时高效优化技巧)、01分数规划

模板 - 判断负环(超时高效优化技巧)、01分数规划

2020-07-22 15:46:51 177

原创 【常用技巧精选】尺取法

尺取法是一种线性算法。记(l,r)(l,r)(l,r)为一个序列内以l为起点的最短合法区间,如果有rrr随l的增大而增大的话,我们就可以使用尺取法。具体的做法就是不断的枚举lll,同时求出rrr。因为rrr随lll增大而增大,所以rrr只有nnn次变化的机会,所以时间复杂度为O(n)O(n)O(n)。A、UVA1121 Subsequence#include<iostream>#include<cstring>#include<cstdio>#include&

2020-07-20 22:12:23 134

原创 0x42.数据结构进阶 - 树状数组

目录一、树状数组与逆序对A、luogu P1908 逆序对(模板题)B、AcWing 241. 楼兰图腾树状数组的拓展应用1.区间加,求单点值A、AcWing 242. 一个简单的整数问题2.区间加,区间求和AcWing 244. 谜一样的牛声明: 本系列博客是《算法竞赛进阶指南》+《算法竞赛入门经典》+《挑战程序设计竞赛》的学习笔记,主要是因为我三本都买了 按照《算法竞赛进阶指南》的目录顺序学习,包含书中的少部分重要知识点、例题解题报告及我个人的学习心得和对该算法的补充拓展,仅用于学习交流和复习,无

2020-07-20 22:06:33 139

原创 【图论专题】负环与01分数规划

我们一般使用方法2,这里有两个需要注意的点:将所有点入队这里是假象有一个虚拟源点,虚拟源点与所有点连接权值为0的边,我们将虚拟源点入队,那么第一轮while就是会将所有的结点入队,因此我们直接将所有点入队,就省去了建虚拟源点这一步。将所有的dist[i] = 0;实际上这里所有点的距离都可以初始化为任意值,因为有负环最终总是会到达负无穷,spfa求负环时理论的复杂度为O(m)O(m)O(m),实际的时间复杂度为O(nm)O(nm)O(nm)有一个经验之谈:当发现spfa较慢,一直无法结束(.

2020-07-20 16:03:42 99

原创 【图论专题】最小生成树的扩展应用

最小生成树的扩展应用能用kruskal打死不用primkruskal是要把所有的边都遍历一遍图论中的超级源点就比较常用,要时刻想到它题目列表:题目算法AcWing 1146. 新的开始超级源点的应用AcWing 1145. 北极通讯网络贪心AcWing 346. 走廊泼水节最小生成树添边变成完成图AcWing 1148. 秘密的牛奶运输严格次小生成树A、AcWing 1146. 新的开始(超级源点的应用)想办法将多模式的问题转换为单模式的问

2020-07-19 23:36:46 102

转载 《挑战程序设计竞赛(第2版)》习题册攻略

本项目来源于GitHub链接:项目GitHub链接1 前言项目为《挑战程序设计竞赛(第2版)》习题册攻略,已完结。可配合书籍或笔记,系统学习算法。题量:约200道,代码注释内含详解。难度:总体高于Leetcode,部分接近ACM。1.1 题库来源Google Code Jam(GCJ)Peking University Online Judge(POJ)Aizu Online Judge(AOJ)UVa Online Judge(UVa)CodeForces(CF)1.2 算法笔记初级篇中级篇高级篇1

2020-07-19 10:24:48 290

原创 【图论专题】最小生成树及其简单应用

题目列表:题目算法AcWing 1140. 最短网络prim模板AcWing 1141. 局域网kruskal模板AcWing 1142. 繁忙的都市瓶颈MST(最大边权最小的生成树)AcWing 1143. 联络员确定边最小生成树AcWing 1144. 连接格点确定边最小生成树、搜索建图UVA1395 苗条的生成树 Slim Span瓶颈MST最短路算法A、AcWing 1140. 最短网络(prim模板)#include&l

2020-07-18 21:37:04 296

原创 ACM/OI卡常技巧总结(clock大法好)

NO.10: 特殊运算优化:取模优化:inline int inc(int x,int v,int mod){x+=v;return x>=mod?x-mod:x;}//代替取模+inline int dec(int x,int v,int mod){x-=v;return x<0?x+mod:x;}//代替取模-或者对于模数p进行#define宏定义绝对值优化:inline int Abs(int a){//绝对值优化{ int b=a>>31; .

2020-07-18 20:33:01 971

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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