摘要:
POJ3041 这道题正解对于像我这种蒟蒻来说比较难以想到。 我们发现每次覆盖的只是一条线上的所有点。那么我们可以把它想象成一个二分图,两个集合分别是横轴和纵轴。 想一想,这实际上是不是就是x轴轴和纵轴的最大匹配? 于是这就变成了一个板子匈牙利算法题目。 #include<iostream> #in 阅读全文
摘要:
行列式: 行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | 。无论是在线性代数、多项式理论,还是在微积分学中(比如说换元积分法中),行列式作为基本的数学工具,都有着重要的应用。 行列式可以看做是有向面积或体积的概念在一般的欧几里得空间中的推广。或者 阅读全文
摘要:
差分 如果去看我的树状数组的博客的话就懂了,就是记录相邻节点值的差值。这样一来,前缀和就相当于原值了。 树上差分 树上差分基本上就是差分在树上的实现。因为差分的原理,我们先将所有点的权值改变成差分值,再更改一段区间内的所有值时,只需要更改首尾两端的值,如果要求值的话dfs重新加上前缀和就是正常的值了 阅读全文
摘要:
树上倍增 倍增算法就是通过倍增快速查找的算法。它在树的问题上比树链剖分处理得要快而且简单。 它的核心公式就是fa[x][j]=fa[fa[x][j-1]][j-1] / fa[x][j+1]=fa[fa[x][j]][j].为了更好地理解这个公式,我打了以下表格: 0 1 2 3 1 0 0 0 0 阅读全文
摘要:
我的第一篇博客就是扫描线。虽然那时候什么也不懂,也非常幼稚,甚至不知扫描线的原理是如何,只是一门心思地去做,就像面对未知的生活。 扫描线处理矩阵面积之和的问题,当然它们会有互相覆盖而不能直接加起来。 扫描线就是从下往上一次扫描“线”,然后用线将图分成多个区域,累加即可。用线段树记录横坐标此时扫描线处 阅读全文
摘要:
从个位到最高位对所有数字排列数位次。 又叫做桶排序。 时间复杂度很优秀,当然,排序时还可以干一些奇奇怪怪的事情。 我还不会排负数。 简单地排序并输出。a数组从0记录。 #include<iostream> #include<cstdio> #include<cstring> #include<alg 阅读全文
摘要:
map就是映射。 定义 map<typename,typename> 注:map的元素是pair。 特性 map会对第一个对象自动排序。 map不允许有两个相同的关键字。 map可以定义迭代器iterator。当然,map相当于一个像pair的结构体,要访问元素时注意使用->或者(*it).firs 阅读全文
摘要:
https://blog.csdn.net/duan19920101/article/details/51579136 简单理解就是一个通过映射直接查找的表(散列表),用哈希函数将数据按照其存储特点进行存储。查询效率接近是O(1)的。 存储方式是结合了数组和链表的思想,用链表将存储的数据直接相连,便 阅读全文
摘要:
P1414 又是毕业季II 数论题,主要在于推演。 洛谷的《又是毕业季I》更好玩 发现对于所有的同学的能力值,只要我们选出每个数的所有因子并记录所有同学所有因子出现的次数,就可以得到一个c数组为所有因子出现的次数。 因为让输出1-n所有的值,而且因子数c[k-1]>=c[k],我们就一定可以从因子数 阅读全文
摘要:
就是把字符串转变成一个树,每个节点连接下一个字符,用空间换时间。 对于区分大小写或不区分的题目,只需要改变ch[][26]的值就行了。 ch[u][x]表示u节点(标号决定)下一个x字符节点的标号。 如果题目让记录附加值,那就用val[标号]在插入时记录一下就好了。 #include<iostrea 阅读全文