【codeforces】 CF4C 【Registration system】(题解)

哈希表

若关键字为k,则其值存放在f(k)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数,按这个思想建立的表为散列表。

对不同的关键字可能得到同一散列地址,即k1≠k2,而f(k1)=f(k2),这种现象称为冲突(英语:Collision)。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数f(k)和处理冲突的方法将一组关键字映射到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“像”作为记录在表中的存储位置,这种表便称为散列表,这一映射过程称为散列造表或散列,所得的存储位置称散列地址。

若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少冲突。

好的,介绍的差不多了,上代码!

ACcode:

#include<bits/stdc++.h>
using namespace std;
struct node
{
	string n;
	int num;
};
node a[100005];
int main()
{
	int b=0;
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		string c;
		cin>>c;
		bool flag=0;
		for(int j=0; j<=b; j++)
			if(a[j].n==c)
			{
				a[j].num++;
				cout<<a[j].n<<a[j].num<<endl;
				flag=1;
				break;
			}
		if(!flag)
		{
			cout<<"OK"<<endl;
			a[b++].n=c;
		}
	}
	return 0;
}

谢谢支持,如果这对您用帮助的话请点赞哦!

如果有疑问,可以私聊我,一定会帮您解答哦~~

我的博客1

我的博客2
c++的好处都有啥

发布了21 篇原创文章 · 获赞 0 · 访问量 169

猜你喜欢

转载自blog.csdn.net/zhaoweiming2019/article/details/104294899
今日推荐