人生第一次hash

人生的第一次hash交给了模板题。

讲道理,还没有别人快排要快,就比暴力快那么一点。。。

难道我写的hash就那么菜么?

我想了想,光是处理字符串就O(n*len)。。

这是hash的正确写法吗?我都开始怀疑自己了。

不管怎样,把代码附上,以后可能会用。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>

using namespace std;

int n;
string h[1000007], s;

const int mod = 1000007;

long long hash()
{
    int i, len = s.length() - 1;
    long long ans = 0;
    for(i = 0; i <= len; i++) ans = ans * 33 + s[i] - ‘a‘;
    ans = abs(ans);
    ans %= mod;
    return ans;
}

bool insert()
{
    long long i = hash();
    while(h[i] != s && h[i] != "") i++;
    if(h[i] == s) return 0;
    h[i] = s;
    return 1;
}

int main()
{
    int i, j, ans = 0;
    scanf("%d", &n);
    getline(cin, s);
    for(i = 1; i <= n; i++)
    {
        getline(cin, s);
        if(insert()) ans++;
    }
    printf("%d", ans);
    return 0;
}

时间: 2024-10-11 18:30:58

人生第一次hash的相关文章

人生第一次讲公开课

由于双语的教学制度,要求每位老师必须讲公开课,若是不讲的话就会受到通报.固而我也是免不掉的,我被安排到了最后一个,大家都讲完了,就剩下我一个人了,其实有时候我想着这也不是件可怕的事,但平生还真的没有讲过,有点紧张.再说我的授课方式极起的不那么好,总是按着自己的那种方式来,使得下面的学生听不懂,这也是我对数学的看法,真的没有太多的考虑孩子的感觉,那是以前的想法,如今我的改变还不是那么的大,对教学真的没有太多的经验,还是那么按着ppt上的内容上讲,真的没有新颖可言.更不用说提高了.这真的是我的瓶颈,

人生第一次博客

这是我人生的第一次写博客,看着题解上各种大牛都在博客上写代码.秒题,自己其实也想写,那就写写看吧!自己的实力不太够,就从菜鸟走吧,希望博客能够一直写下去,写到毕业,写到未来,当然了,写博客也能够帮助我巩固代码巩固细节与知识,也可以Z在无聊之时消磨时光,有益身心.发博客的内容一般都是关于代码的,偶尔(几乎没有会写一些游记与心得,然后每周五一般会更新,总结这一周的内容,寒暑假就高产了,最近发的内容是算法入门经典上的解题步骤主要还是UVa上面的题,会说一说比较经典的例题与练习题,如果你们有什么不懂的题

人生第一次JAVA编程,电梯(并不算完成版),以及IDEA里使用git

首先先说说Intellij IDEA与git的互联,首先在任意(我是在coding)gitlab里新建一个工程. 然后新建一个工程记得注明url和地址.名称等 如果无法创建,则需要指定git地址 创建完毕后你的项目就相当于一个git目录了,就可以使用IDEA自带的git功能了,add和push点一点就行~ 接下来正戏前先随便BB两句,上周,我经历了上大学以来最严重的一次生病(其实就是个重感冒),非常难受,然后病刚好清明假期又骑车作死去了,最后导致本次作业并没有完成. (一切找理由都是扯淡)所以,

记录人生第一次面试

今天,去了一趟某云. 因为前两天学长在群里说那边有一个实习生岗位,我心想又拍云也挺不错的于是就跟学长说我想去.然后,那边的负责人打电话过来电话面,开始一阵紧张,后来听说负责人是我的上上上不知道多少届的学长也是学ACM的,心里顿时踏实了许多,问了一道简单的算法题,一阵尬聊后就通知我过去面试了. 然后今天一大早就起床去杭州了.记得走之前还跟室友调侃说要是挂了以后可没脸再去找学长了(结果真挂了,详情看后面),心里想得是还是有五六成把握可以过的,毕竟面试官是学长而且我也做了些准备(看了大(少)量编程面试

人生第一次的自己完成的atm机

package DiSan; import java.util.Scanner; public class DiS { private static double money = 150000; private static double maxmoney = 200000; private static double smoney = 20000; public static void main(String[] args) { int user = 123456; int passWord

Docker安装 人生第一次

Ubuntu 系列安装 Docker 通过系统自带包安装 Ubuntu 14.04 版本系统中已经自带了 Docker 包,可以直接安装. $ sudo apt-get update $ sudo apt-get install -y docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker $ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d

人生第一次删好友,删的就是你!连路飞都怒了!

? 作为普通老百姓,相信身边大家都不是老板,都不是土豪,都不是有钱人,我们平平凡凡,普普通通地工作,生活,养家 朋友圈是个至高无上的地方, 有的人做微商,大家反感,就屏蔽了 有的人做吃的,大家反感,就屏蔽了 有的人做代购,大家反感,就屏蔽了 我从来没有屏蔽过任何人任何事,各有所需,朋友圈有人会买微商的东西,会买吃的,会买代购漂洋过海的东西 但是对于炒房一事,实在不能忍受,居然特么的在朋友圈炒房,大家都是朋友,朋友圈的确有很多还没结婚的,或者还是有刚需想要买房的,这边的某居乐从4个月前的8000涨

起点.第一次写的东西.

这里记录着人生第一次写的东西..还有很多不懂的东西.以后会做的更好.<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>用户登录</title></head><body background="未标题-3 - 副本.jpg"><!--background 背景图片

hash bucket

什么是bucket bucket的英文解释: Hash table lookup operations are often O(n/m) (where n is the number of objects in the table and m is the number of buckets), which is close to O(1), especially when the hash function has spread the hashed objects evenly throug