-
vector< vector<int> > 的初始化
#vector< vector<int> >的初始化 引入 就好像有一天你要去医院看病,你事先钟意这家医院里的某个主任医生,但你却不知道这位医生坐诊的诊室在哪,突然你看到一张这样子的图。 医科分类(大vector) 五官科(小vector) 口腔科(小vector) 骨科(小vector) 神经内科 -
基础算法学习---c++的stl库们
vector 变长数组 size() 返回元素个数 empty() 检查是否为空 clear() 清空 front()/back() 返回头尾元素 begin()/end() 迭代器 pair<a,b> 一个有a类型元素和b类型元素的结构体 .first 访问第一个元素 .second 访问第二个元 -
Floyd——人人都是中间商(50%)
#Floyd——人人都是中间商 引入 有n座相互孤立的岛屿,每座岛屿都拥有被其他岛屿搭建桥梁的机会,但在起始的时候,每座岛屿并没有向其他岛屿搭建桥梁的能力,突然有一天,资金突然丰富起来了,但只能按顺序分配给这些岛屿,并使得这些岛屿具有向其他岛屿搭建桥梁的能力,同时在搭建得过程中一旦发现以该座岛屿为中 -
字符串哈希实例---回文串
回文子串的最大长度 技巧 在每两个字符中插入一个新的字符,可以不用判断字符串的奇偶,方便编程。 利用字符串哈希和二分求解 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N -
哈希---字符串哈希
作用 有时候 more niubi than kmp 比较两个区间的字符串是否一致就可以用 原理 将一个字符串看成一个P进制的数 对比时取子串可以直接相减得出 注意点: 1. 任意字符不可以映射成0,否则会出现不同的字符串都映射成0的情况,比如A,AA,AAA皆为0 2. 冲突问题:通过巧妙设置P -
树的的直径(两遍DFS可行性的证明)
AcWing 1207.大臣的旅费 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5+10,M=2e5+20; ll dist[N]; int h[M],ne[M],e[M],w[ -
离散化(一般写法\unique\unique+vector)
离散化(一般写法\unique\unique+vector) 将数据重新洗牌,并赋予数据新的位置下标。 好处: 有效的离散化能减小算法的时间和空间开销,提高系统对样本的分类聚类能力和抗噪声能力。 数据为什么离散化?(离散化的好处) 题外:廖神讲的太好,怕日后遗忘,故做篇笔记,来整理一下离散化,加深印 -
SPFA BFS(30%)
spfa 原理 确定一个起点,如果满足条件(能够使得路径缩小时),改变路径长度,并将处在起点周围且仍未纳入到队列中的点纳入到队列中,然后依次对队列中的点做相同的操作,直至队列为空。 前置知识 ###邻接表建图 idx表示的是当前按顺序已经记录到第n条边。 e[idx]数组用来存放当前有向线段指向的下 -
【思维】【CF1550】 C. Manhattan Subarrays
CF1550 C. Manhattan Subarrays 传送门 ##思路及分析: 补题代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; bool judge3(int a,int b,int c) { re -
错位储存
错位储存 当我们要给二维的数据一个用一维来表示的位置,我们可以给第一维度的数据赋予一个较大的权值,第二维度的数据赋予一个较小的权值,并确保两者在综合时不会出现交叉的现象。 比如,当一个数据是由变量a和变量b共同来决定的时候,且知道变量a的数据范围是在1到100,变量b的范围在1到9,我可以给a乘上1