zoukankan      html  css  js  c++  java
  • 【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++的好处都有啥

  • 相关阅读:
    人人都有数字替身的时代马上到来
    教你如何在linux下查看服务是否已经启动或者关闭
    提前了解2019年物联网发展的六大趋势
    本科理工男如何学习Linux
    linux常见命令ps的应用
    useradd 命令的常见用法
    简单聊聊Linux学习经历
    什么是公网IP、内网IP和NAT转换?
    远程获得的有趣的linux命令
    js练习题之查找数组中的位子
  • 原文地址:https://www.cnblogs.com/BorisDimitri/p/13546628.html
Copyright © 2011-2022 走看看