自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大目录

大目录DFS牛客每日一题—shortest path鉴于csdn的分类过少,效仿组长建立专门的目录博客DFS牛客每日一题—shortest path

2020-11-12 21:31:43 701 1

原创 图论——拓扑排序

拓扑排序拓扑排序的构建题目洛谷P1347 排序拓扑排序的构建到目前为止,我只会从度的方面来构造拓扑,而用dfs或者sort来构建我还没学会拓扑排序是存在在DAG中,而在DAG中因为是无环的,所以必然存在一个点v1他是入度为0的,那么这个入度为0的点就是当前的出发点。然后遍历v1的周边的点v2,v3,然后他们的入度个数减去1,这时候会出现两个入度为0的点,然后压入队列(栈),重复操作。但是拓扑排序有几个特殊情况:如果说这个是个有环的图,那么就在上述操作过程中,一定会出现没有遍历完所有的点就结束

2020-10-05 16:44:21 275

原创 图论——最短路

最短路Dijkstra(迪杰斯特拉) 算法Dijkstra(迪杰斯特拉) 算法迪杰斯特算法中有几个数组:s[ i ], dist[ i ](假设起始点是u,终点为v)s[i] :在s数组的意思是已经找到从u开始的最短路dist[i] : 表示在目前为止计算到从u到v 的最短的距离迪杰斯特算法三步骤:再dist[i]数组中找到S[i]为0的点,并且dist[i]最小的点u将u加如...

2020-09-27 10:04:52 119

原创 暑假集训牛客第五场—— D Drop Voicing

原题这个题目是看了大佬的题解才知道是一个lis问题,刚开始是真的看不出来,这里因为drop-2是一个把前n-1个数字往后移动一个,然后我们可以通过insert不断调整位置,相当于每次可以前进一个位置,因为insert操作是可以不断做的,然后就可以让一个数字到任何位置。所以只要算出循环串的LIS就好了AC code#include<iostream>#include<string>#include<cstdio>#include<algorithm&gt

2020-08-07 18:08:06 108

原创 牛客第七场——i Interesting Computer Game

传送门:Interesting Computer Game题解:这个题目开始我分析的时候感觉有点像二分图的一个挪坑的一个操作,但是仔细一分析发现根本不可能拆成两个完全独立的子集,然后呢我就想到了最长公共子序列,每次拿到一个新的a,b就进行判断,然后向前面进行更新,但是弄出来以后才发现这个根本就是超时的,两秒钟,复杂度是O(n*logn),然后呢这个lis的算法就是一个O(n^2)的复杂度。后来问了以后才知道这个题目的做法是把每个点是否连接用先用邻接表存起来,然后呢用dfs在图上搜索,如果形成一个环,那么

2020-08-04 23:02:51 153

原创 暑假集训第六场——B题Binary Vector

Binary Vector传送门#include<iostream>using namespace std;typedef long long ll;const ll mod = 1000000007;ll a[20000007], x =500000004, y = 500000004;//这里x记录的是每次的1/2^i的逆元,y是1/2的逆元int main(){ a[1] = 500000004; for(int i = 2; i < 20000007; i++

2020-07-30 16:55:16 156

原创 牛客集训——Combination of Physics and Maths

题目首先这题目是说去列或者行来就是底面积是最后一行,F是所有元素之和,那么其实完全可以一列一列算,因为是求出最大值,所以找到最大就好了,不用考虑合并什么的事情,一旦有两列,并且他们的P不同那么,值肯定是取中间值,所以直接一列一列找就好了#include <iostream>#include <string>#include <cstring>#include <stdlib.h>using namespace std;double sum[205

2020-07-29 00:15:21 82

原创 暑假集训第四场——Points Construction Problem(思维题)

Points Construction ProblemPoints Construction Problem题解:这个题目我也不是很会,这个是一个思维题,所以我找的是一个网上的一个大佬的做法,这个方法我觉的比较精妙的地方是她构造了一个L的形状,这样把剩下的填进去就不会再增加边长,因为会互相抵消。大佬的博客#include<iostream>using namespace std;int main(){ int t; cin >> t; int n, m; wh

2020-07-23 19:47:08 83

原创 线性欧拉筛拓展——Harder Gcd Problem

传送门:暑假集训第四场——HHarder Gcd Problem题解:首先使用欧拉筛的将在N的范围之内的素数筛选出来,然后因为1和素数和素数的倍数可以组成所有的N。所以我们通过素数来筛选数字不会遗漏。将所有这个素数的和素数的倍数压入到队列中(注意要从大到小去遍历素数),计算个数,如果个数是奇数的话就将2倍素数的那个数压入到素数2的队列中,这样做的原因是2是一个最小的素数,如果其他队列中有奇数我们就把多余的那个看成2*素数(取名为p), p压入到2中这样最后没匹配的最多就只有一个#include<

2020-07-21 22:53:17 115

原创 一般图匹配——带花树

一般图匹配带花树知识构建知识构建hwx的博客hwx的博客前置两篇引用的文章我觉的也是非常不错的接下来先上模板然后开始根据模板展开自己的理解带花树算法中是先从一个点u开始设置为黑色的,然后找增广路,接下来找的点v分为两种情况:这个v点还没有被这个次搜索给搜索到,那么直接设置成黑点,多了一个增广路,直接返回。这个点已经被匹配到了过了也是有颜色了:在2下一共有四种情况:一个是找到了一个白色的点,说明是一个偶环,那么没什么影响直接跳过而是找到一个黑点,那么就说明是一个奇环,那么就开始压花

2020-07-19 10:21:18 195

原创 dfs序——Cover the Tree

Cover the Tree传送门:牛客暑假集训第二场c题Cover the Tree题解:#include<iostream>#include<string>using namespace std;int head[200005];int cnt = 0;struct g{ int to, next;}edge[400005];int num[200005];void add(int x, int y){ edge[cnt].to = y; edg

2020-07-16 23:52:46 118

原创 二分图

二分图知识搭建基础知识匈牙利算法题目模板题洛谷P3386二分图匹配时间戳优化——洛谷P2423知识搭建基础知识大佬的博客二分图:用我的话来讲就是把所有点分成两部分,在每个部分的点之间都互不相连。匹配:在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点。最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配。未匹配的点:就是不是匹配中的任意条边的点增广路: 就是从一个没有匹配的边开始出发一直是到匹配,再到为未匹配,再到匹配,最后是的边结束也

2020-07-15 23:53:55 147

原创 滑动窗口——Fake Maxpooling

传送门:题目题解:#include<iostream>#include<string>#include<cmath>#include<vector>#include<queue> using namespace std;typedef long long ll;int num[5005][5005];struct n1{ int v; int index;}node[5005];int gcd(int a, int b)

2020-07-14 22:50:52 179

原创 动态规划——DAG上的动态规划

DAG上的动态规划例题uva437 巴比伦塔当题目中的各个状态之间的关系是连续无环图的时候(树的)关系,这个时候就可以考虑下树上的动态规划,因为点与点之间的关系是树的关系,所以一个点的能和它有关系的只有儿子结点或者它的父亲结点。这个时候我们要是要求一种最长的距离, 就可以将一个点看做两种方式:这个点是的权值是以这个点为结尾的最长距离这个点的权值是以这个点 i 为开始的所能到达的最长的距离,用其他点 j 来更新 i 点的值其实不难发现第一种方案在大部分的情况下是十分难实现的,因为要从n-1个点中

2020-05-14 19:45:43 195

原创 字符串——kmp算法

kmp算法next数组的求解计算子串在母串中的个数刚刚接触这个算法,也许是太笨到现在都无法理解它,所以通过这篇博客来加强对kmp算法的理解next数组的求解void pre_kmp(char *str, int len, int *next){ int i = 0, j = -1; next[i] = j; while(i < len) { while(j != -1 &...

2020-02-15 00:19:17 139

原创 数论——逆元

逆元拓展gcd(拓展欧几里得)拓展gcd的逆元求法欧拉定理费马小定理拓展gcd(拓展欧几里得)有个博客写的挺好的,在这里贴上去:扩展欧几里得算法及求逆元由gcd(a, b)==gcd(b, a%b) = d可以化为ax1+by1 = d;b*x2+(a%b)*y2 = d两式相等化简可得x1 = y2, y1 = x2 - [a/b] * y2;而拓展gcd的作用是求出上面的 d ...

2020-02-05 13:55:45 210

原创 bfs和dfs(第一次尝试)

走迷宫描述  一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。  给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。输入  第一行是两个整数,R和C,代表迷宫的长和宽。( 1<= R,C <= 40)  接下来是R行,每行C个字符,代表整个迷宫。  空地格子用’.‘表示,有障碍...

2019-12-22 13:28:54 131

原创 第二周周任务总结

第二周纸质周任务总结c++和c语言的区别结构体构造的方式发生了变化定义一个数组多了一个bool类型多了一个构造函数(在类中)c++和c语言的区别结构体构造的方式发生了变化原本c语言构造一个结构体是这样的:struct Books{ char title[50]; char author[50]; char subject[100]; int book_i...

2019-12-16 13:51:05 128

原创 数论——第一周任务总结(快速幂和矩阵快速幂)

纸质周任务

2019-11-27 18:51:17 262

原创 数论——gcd和lcm

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

2019-11-26 15:32:46 372 1

空空如也

空空如也

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

TA关注的人

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