自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 匈牙利算法(Asteroids [POJ-3041])最小点覆盖

匈牙利算法匈牙利算法用来解决二分图中的最大匹配数,最小点覆盖,最大独立集等问题,其中这几个问题有着这样的关系:1.最大匹配数 = 最小点覆盖数。2.最大独立集数 = 顶点数 - 最大匹配数。算法具体实现是基于增广路定理:一条增广路,交换匹配边和非匹配边,可以得到一个更大的匹配。算法基本步骤1.从左边开始,依次挑选未匹配点进行搜索,寻找增广路。2.如果搜索到未匹配点则说明增广路找到,匹配边数加一,交换匹配边和非匹配边。3.直至搜完为止。例题 Asteroids [POJ-3041]Bess

2021-05-12 19:57:41 254

原创 二分图的定义及判定(Catch HDU - 3478)

二分图的定义节点由两个集合组成,且两个集合内部没有边的图。二分图的判定由二分图的定义可知,二分图有着这样一个性质:二分图不存在长度为奇数的环。因为每一条边都是从一个集合走到另一个集合,只有走偶数次才可能回到同一个集合。这条性质将被用来判定一个无向图是否是二分图。我们通常使用染色法判定二分图,将每个顶点染色,并且相邻的顶点染不同颜色,如果存在俩相邻点染上了同一颜色,则与二分图定义不符。例题 Catch HDU - 3478A thief is running away!We can co

2021-05-11 16:32:48 286

原创 动态规划入门 牛牛的数列

牛牛的数列原题传送门戳这里思路:动态规划,这个题十分相似于求最长连续上升子序列,但这个题多增加了一个条件,可以允许修改任意数一次,再求出最长连续上升子序列。这个多出来的条件相当于设置了一个断点,将整个数列分成了左右俩部分。右边的部分我们创建一个dp1数组,表示以当前下标为起点的最长连续上升子序列的长度。状态转移方程是: if(a[i]<a[i+1]) dp1[i] = dp1[i+1] + 1; else dp1[i] = 1;同理,左边的部分我们创建一个dp2数组,表示以当前下标为

2021-04-14 21:02:25 286

原创 线段树 && 区间修改 && 区间查询 && 懒惰标记

线段树线段树将每个长度不为 1 的区间划分成左右两个区间递归求解,把整个线段划分为一个树形结构,通过合并左右两区间信息来求得该区间的信息。这种数据结构可以方便的进行大部分的区间操作。使得区间修改操作的时间复杂度降为O(logn)线段树基本知识建树范围:树长为四倍的原数组长度即可。即有一个长度为n的数组,建立线段树去维护,只需线段树数组长度为4n即可,绝对够用。建树操作,区间操作都从根节点开始,根节点是所有节点的和,所有节点都可以通过根节点来遍历到。一个节点的左儿子节点的下标是其下标的俩倍,右儿子

2021-03-15 13:38:08 758 1

原创 埃式筛与欧拉筛

埃式筛与欧拉筛埃式筛 时间复杂度 O(n*lglgn).核心思想:每个质数的倍数都是合数,当发现一个质数时就将其的倍数都变成合数。缺点:有的合数会被它的几个质因子重复筛掉,造成了时间上的浪费。#include<iostream>#include<cmath>using namespace std;int n, q, cnt, k;bool isprime[100000005];int sushu[1000005];void ai(int n){ for(l

2021-03-08 16:25:42 126

原创 优先队列优化最短路(priority_queue)

优先队列优化Dijkstra算法Dijkstra算法在变更起点时会选择没有选择过的最近的点作为起点,优先队列的好处就在于可以在O(log n)的时间内找到那个新起点。用法1. 需要包含头文件#include2. 一共有三个参数 :type:数据类型;container:实现优先队列的底层容器;function:元素之间的比较方式;模板:typedef pair<int,int> P;priority_queue<P, vector<P>, greater&l

2021-03-06 17:10:09 303

原创 约瑟夫环---自杀环问题 & 简单明了的循环链表版

这是一道经典的链表题约瑟夫环–自杀环问题约瑟夫环问题有着这样的历史:Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。大致意思一共有N个人围坐

2021-03-04 20:33:04 2343 9

原创 最短路(SPFA算法)模板题 洛谷P3371

算法总结:SPFA算法是宽搜优化版Bellman-ford算法。这是一种基于松弛(relax)操作的最短路算法。支持负权。能找到某个结点出发到所有结点的最短路,或者报告某些最短路不存在。算法区别于Bellman-ford的核心思想就是:只有当某个顶点u的d【u】发生改变时,它的邻接点v的d【v】才可能被改变。在此附上洛谷P3371模板题。在此附上SPFA版AC代码:#include<iostream>#include<queue>using namespace s

2021-03-02 20:28:52 259

原创 Floyd求最小环(洛谷 P6175)

题解思路:这题的目的是求解无向图的最小环。那什么是最小环呢?题中给出的解释:图中一个至少包含 3 个点的环,环上的节点不重复,并且环上的边的长度之和最小。那么怎么找出最小环呢?假如我有三个点A,B,C,他们可以组成最小环。那么A和B之间, B和C之间, A和C之间一定是最短的,这样才能形成“最小”环。为了方便解题,并且适用Floyd算法,我们每次都会先拿出一个中间节点,再去枚举其他任意俩个节点与这个中间节点的最小环值并更新。Floyd的方便之处在于他的大循环k可以直接拿来作中间节点,并且这道题的数据.

2021-03-02 19:16:50 339

原创 最短路(Dijkstra算法)模板题 洛谷P3371

题目如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。输入格式第一行包含三个整数 n,m,s分别表示点的个数、有向边的个数、出发点的编号。接下来 m 行每行包含三个整数 u,v,w 表示一条 u→v 的,长度为 w 的边。输出格式**输出一行 n 个整数,第 i 个表示 s 到第 i 个点的最短路径,若不能到达则输出 2147483647 **解题思路裸的单源路径最短路问题,数据也不是非常大,可以不用堆优化就可以AC。这里存图选择了链式前向星,好像用领接表存图会tle。#i

2021-03-01 20:28:48 705

原创 天空之城(最小生成树模板题)

题目描述**链接:https://ac.nowcoder.com/acm/contest/9986/J来源:牛客网天空之城有5个小镇,名字分别为Ada, Aed, Akk, Orz, Apq,他们也有相互的路径长度。希达早已期盼着天空之城,如今她登上了天空之城,就想走遍天空之城的每一个城市,但是她希望自己走的路的长度越小越好,以节省体力和节约时间。巴鲁同意了,但由于他是主力(男孩子嘛),需要帮希达计算出走遍所有城市的最短路径长度。由于天空之城具有魔力,如果希达想再走一次自己之前走过的路,则她可以

2021-02-28 10:27:23 166

原创 2021牛客寒假算法基础集训营1(H-幂塔个位数的计算)

幂塔个位数的计算题目描述题目链接题解思路**作者:神崎兰子链接:https://ac.nowcoder.com/discuss/593200来源:牛客网对标cf难度:2100知识点:找规律计算a↑↑n当n为1时,直接输出a的个位数即可。当n=2时,如果a的个位数是2、3、7、8,那么需要观察a的十位数是奇数还是偶数。因为a↑↑2=a^aa↑↑2=aa,而2、3、7、8的幂的个位数是4个一循环,所以只用观察a模4是2还是0就行。如果a的个位数是其他的,那么可以直接输出答案:a的

2021-02-05 00:02:56 219

原创 2021牛客寒假算法基础集训营1(A-串)

题目描述链接:https://ac.nowcoder.com/acm/contest/9981/A来源:牛客网长度不超过n,且包含子序列“us”的、只由小写字母构成的字符串有多少个? 答案对10^9+7取模。所谓子序列,指一个字符串删除部分字符(也可以不删)得到的字符串。例如,“unoacscc"包含子序列"us”,但"scscucu"则不包含子序列"us"输入描述一个正整数n(2≤n≤1e6)输出描述一个正整数,为满足条件的字符串数量对10^9+7取模的值题解思路**作者:神崎兰子

2021-02-02 10:49:35 238

原创 2021牛客寒假算法基础集训营1(限制不互素对的排列)

题目描述链接:https://ac.nowcoder.com/acm/contest/9981/I来源:牛客网输入一个数 n,请构造一个长度为 n 的排列,使得其中正好有 k 对相邻的数gcd(最大公约数)大于 1。排列是指 1到 n 一共 n 个数,每个数都出现过且仅出现过 1 次。例如,{1,3,2,5,4} 是一个排列,而 {1,3,4,5,3} 、{1,2,4} 则不是排列输入描述俩个整数n和k,用空格隔开。2<=n<=100000,0<=k<=n/2

2021-02-02 09:38:37 570 1

原创 树状数组模板题 & (树状数组 3:区间修改,区间查询)

题目链接这是LibreOJ上的树状数组模板题,这题考查的是区间修改和区间查询。需要运用到差分的思想,和一个很重要的推导公式,公式如下:在此附上一版AC代码:#include<iostream>using namespace std;typedef long long ll;ll a[1000000+10], b[1000000+10], bb[1000000+10], bshu[1000000+10], bbshu[1000000+10];//b是a的差分数组,bb是i*b

2020-12-27 19:55:18 310

原创 树状数组模板题 & (树状数组 2:区间修改,单点查询)

题目链接这是LibreOJ上的树状数组模板题,这题考查的是区间修改和单点查询,运用到了差分思想,在此附上一版AC代码:#include<iostream>using namespace std;typedef long long ll;ll b[1000005], bb[1000005], a[1000005];//a是原数组,b是a的差分数组,bb是维护b的树状数组。ll n, q;ll lowbit(ll x){ return x & (-x);}vo

2020-12-27 19:04:54 239 1

原创 树状数组模板题 & (树状数组 1:单点修改,区间查询)

题目描述这是LibreOJ上的树状数组模板题,这个题考查的点是单点修改和区间查询。在此附上一版我的AC代码:#include<iostream>using namespace std;typedef long long ll;//这个题必须用int会爆。ll n, q;ll a[1000000+10];//a是原数组ll c[1000000+10];//b是维护a的树状数组。ll lowbit(ll x){ return x & -x;}void c

2020-12-27 18:41:47 245

原创 约瑟夫环---自杀环问题 & C++数组实现 & 数学推理

约瑟夫环–自杀环问题约瑟夫环问题有着这样的历史:Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。大致意思一共有N个人围坐在一起, 循环周期是M

2020-12-25 17:24:17 2509 3

原创 神奇的小石子 & dfs(深搜) & 考核补题

题目描述斌斌翻水水的家乡有很多个水井,每个水井 i 和其他水井 j 都有一个管子连通,这样一个水井没水的时候其他的水井可以通过水管直接输送水过来,而这个管子的容量是vij,有一天斌斌翻水水在野外烧烤的时候被一个奇异的小石头砸中,当时斌斌翻水水就觉的这个石头很特别就带回了家,在多年的研究之下他发现这个石头有个神奇的功能:它能够将多个水井划分成两个区域A和B,在同一个区域的水井之间不再需要水管连接,神奇的小石头可以直接让他们的水流通,但是在不同区域的水井却不行,仍然需要水管相连接。本来正常人直接把所有水

2020-12-22 11:11:27 180

原创 序列树 & 贪心 & 考核补题

CTGU ACM集训队第二次月考核 C题 序列树涉及算法 贪心题目描述在O. michestep王国,有一棵名叫Habaritran的树,树上有一个长度为 n 的序列 a,由于树的营养不足,序列只由 0 和 1 构成,修理工Mitchell mitt觉得序列中每个连续的长度为 k 的子串中的0 与1 数量都相同,这棵树才看起来很nice。当然,修理工Mitchell mitt可以将序列中任何一个 0 修改成 1,也可以将任何一个1修改为0,请问修理工Mitchell mitt最少需要修改多少次,才能将

2020-12-21 17:07:44 407

原创 广播系统 & 并查集

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-12-20 19:26:34 203 1

原创 二分查找 & 网线切割

网线切割这个题竟然让我瓦掉了俩次!瓦掉的原因还是因为对二分的了解不够透彻,只是简单的了解了原理就认为自己懂了,结果现在来懊悔,重新总结二分…二分原理二分查找也称折半查找(Binary Search),它是一种效率非常高效的查找方法。每次拿目标数值(以下用value表示)与数组中间位置的数据(以下用arry[mid]表示,mid表示数组中间位置索引值)进行比较,如果value大于arry[mid],继续将value与大于arry[mid]部分的中间位置的值进行比较;如果value小于arry[mid],

2020-12-19 14:44:47 302 1

空空如也

空空如也

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

TA关注的人

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