寒假集训的时候学习了一下哈希,但是一直没有练习,这几天找了几道哈希的题目,发现忘的差不多了。
做了几道题之后发现哈希真的是一个很高效的数据结构,体验到了数据结构的强大。
构建哈希表示为了能够更高效率的查找,还记得小学的时候查字典吗?其实哈希就相当于那样一个东西,他把数据按照一定的哈希函数生成一个键值,然后把所有键值相同的存在一个相同的数组中,然后查找的时候首先找它的键值,找到键值之后只用在键值相同的这个数组中查找就行了。
原理就是这样,要想真正了解哈希表,还要几道题目练习,首先哈希表可以用二维结构体存储,因为你不知道每一个键值后面有多少个元素,所以用二维结构体存储的话后面一维的大小不好确定,而且有些题目对内存的要求比较严格,每个都开那么大的话会浪费很多的内存,所以一般都会用一个数组链表。但是链表又不好写。
那么vector就能解决这个问题,因为vector是一个动态的存储结构,下面来看一道题目。
数组sum[i][j]表示从第1到第i头cow属性j的出现次数。