首页 > 其他分享 >【板子】字符串哈希

【板子】字符串哈希

时间:2024-01-26 20:55:44浏览次数:34  
标签:compare hash ull int void 板子 哈希 字符串 now

//lg p3370
//Copyright yeyou26
#include<bits/stdc++.h>
using namespace std;

#define ull unsigned long long 

string s;
int n;
const ull p=998244353;

ull now_hash;

ull v[100005];

int cnt;
int ans;

void get_hash();
void do_compare();

void init()
{
    cin>>n;
}

void solve()
{
    for(int i=1;i<=n;i++)
    {
        cin>>s;
        get_hash();
        do_compare();
    }
    printf("%d",ans);
}

int main()
{
    freopen("working.in","r",stdin);
    freopen("working.out","w",stdout);
    init();
    solve();
    return 0;
}

void get_hash()
{
    now_hash=0;
    ull now_p=1;
    for(int i=1;s[i];i++)
    {
        now_hash+=s[i]*now_p;
        now_p*=p;
    }
}

void do_compare()
{
    bool flag=0;
    for(int i=1;i<=cnt;i++)
    {
        if(v[i]==now_hash)
        {
            flag=1;
            break;
        }
    }
    if(flag==0)
    {
        ans++;
        v[++cnt]=now_hash;
    }
}

标签:compare,hash,ull,int,void,板子,哈希,字符串,now
From: https://www.cnblogs.com/yeyou26/p/17990694

相关文章

  • 【板子】字符串最小表示法
    //lgp1368//Copyrightyeyou26#include<bits/stdc++.h>usingnamespacestd;longlonga[600005];intn;voidinit();voidsolve(){inti=1,j=2,k=0;while(i<=n&&j<=n){k=0;while(a[i+k]==a[j+k]&&am......
  • 【板子】KMP
    //lgp3375//Copyrightyeyou26#include<bits/stdc++.h>usingnamespacestd;charp[1000005],s[1000005];intlenp,lens;intlst[1000005];voidinit();voidpre_work();voidkmp();voidout_put();intmain(){freopen("working.in",&qu......
  • 建立一个1个单位长度的字符串string c(1,str[i])
    https://www.luogu.com.cn/problem/P1765?contestId=155201`include<bits/stdc++.h>usingnamespacestd;strings[10][4]={{},{},{"a","b","c"},{"d","e","f"},{"g","h&q......
  • 字符串“getline”“fgets”“getchar”
    https://www.luogu.com.cn/problem/P8506?contestId=154692`include<bits/stdc++.h>usingnamespacestd;intmain(){intn;intcount=0;cin>>n;getchar();while(n--){chara[1000];fgets(a,sizeof(a),stdin);intflag=0;for(inti=0;a[i+1]!=......
  • Java_5 字符串
    Java字符串title:(在线学习平台)link:(https://www.acwing.com/)cover:(https://cdn.acwing.com/media/activity/surface/log.png)1.字符与整数的联系——ASCII码每个常用字符都对应一个-128~127的数字,二者之间可以相互转化。注意:目前负数没有与之对应的字符。import......
  • python中利用变量解压列表、元组、字符串、字典、文件对象、迭代器和生成器等序列
    一、如果知道序列中元素的个数,可以直接进行变量赋值。coords=(102,40)lon,lat=coordsprint(lon)print(lat)text="news"a,b,c,d=textprint(a)print(b)print(c)print(d)二、如果不知道序列中元素的个数,可以通过*变量名来代表多个元素的变量,无论序列是什......
  • 【pwn】axb_2019_fmt32 --格式化字符串漏洞进一步利用
    照例检查程序保护情况堆栈不可执行,再导入ida看一下代码逻辑如上图此处代码有格式化字符串漏洞先找出偏移可以发现偏移是8那么我们可以利用printf泄露出libc地址,如何修改printf_got表为system的地址,然后再传入/bin/sh就可以getshellexp:frompwnimport*fromLibcSearc......
  • # WinDbg学习三(字符串通配符语法)
    说明星号(*)代表零个或多个字符。问号(?)代表任意单个字符。包含字符列表的方括号([])代表列表中的任何单个字符。恰好匹配列表中的一个字符。在这些括号内,您可以使用连字符(-)指定范围。例如,Prog[er-t7]am匹配“Progeam”、“Program”、“Progsam”、“Pro......
  • [Python] 基于RapidFuzz库实现字符串模糊匹配
    RapidFuzz是一个用于快速字符串模糊匹配的Python库,它能够快速计算两个字符串之间的相似度,并提供与Fuzzywuzzy(已停用)和TheFuzz(Fuzzywuzzy的升级版)类似的接口。RapidFuzz和TheFuzz功能相似,只是提供的接口不同。RapidFuzz和TheFuzz安装指令如下:pipinstallrapidfuzzpipinstallth......
  • 哈希排序
    #include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,a[1000009];inlinevoidread(registerint&a){a=0;charc;while((c=getchar())<48);doa=(a<<3)+(a<<1)+(c^48);while((c=getchar())>47);}......