• 模板


    会按梳理顺序放

    my_std

    • 打比赛的时候写完应该用 a+b 拍一下
    #include<bits/stdc++.h>
    using namespace std;
    namespace my_std
    {
    	typedef long long ll;
    	typedef unsigned long long ull;
    	#define fr(i,x,y) for(int i=(x);i<=(y);++i)
    	#define pfr(i,x,y) for(int i=(x);i>=(y);--i)
    	#define pc putchar
    	#define enter pc('
    ')
    	#define space pc(' ')
    	inline int read()
    	{
    		int f=1,sum=0;char ch=0;
    		while(!isdigit(ch)){if(ch=='-'){f=-1;}ch=getchar();}
    		while(isdigit(ch)){sum=(sum<<1)+(sum<<3)+(ch^48);ch=getchar();}
    		return sum*f;
    	}
    	inline void write(int x)
    	{
    		if(x<0){pc('-');x=-x;}
    		if(x>=10){write(x/10);}
    		putchar(x%10+'0');
    	}
    	inline void writeln(int x){write(x);enter;}
    	inline void writesp(int x){write(x);space;}
    }
    

    字符串

    1. HASH

    • 所有参与运算の变量应开 long long or unsigned long long
    • 有用的质数:(19260817,19660813,1145141,998244353,212370440130137957)(最后一个要用 ull,考场上可以用 ( exttt{Miller-Rabin})(10^{18}) 的大质数)
    • 双模 HASH 不能像下面这样写:
    ll n=read();
    fr(i,1,n){scanf("%s",s);ans1[i]=hash1(s),ans2[i]=hash2(s);}
    sort(ans1+1,ans1+n+1),sort(ans2+1,ans2+n+1);
    ll tmp1=unique(ans1+1,ans1+n+1)-ans1-1,tmp2=unique(ans2+1,ans2+n+1)-ans2-1;
    cout<<max(tmp1,tmp2)<<endl;
    

    写出来的效果跟单模 HASH 是一样的

    const ll N=10050,base=233,mod1=19260817,mod2=998244353;
    char s[N];
    struct qwq{ll a,b;}ans[N];
    inline bool cmp(qwq a,qwq b){return a.a<b.a;}
    inline ll hash1(char s[])
    {
    	ll len=strlen(s),ans=0;
    	fr(i,0,len-1){ans=(ans*base+(ll)s[i])%mod1;}
    	return ans;
    }
    inline ll hash2(char s[])
    {
    	ll len=strlen(s),ans=0;
    	fr(i,0,len-1){ans=(ans*base+(ll)s[i])%mod2;}
    	return ans;
    }
    int main(void)
    {
    	ll n=read();
    	fr(i,1,n){scanf("%s",s);ans[i].a=hash1(s),ans[i].b=hash2(s);}
    	sort(ans+1,ans+n+1,cmp);
    	ll tmp=0;
    	fr(i,1,n) if(ans[i].a!=ans[i-1].a||ans[i].b!=ans[i-1].b) ++tmp;
    	writeln(tmp);
    	return 0;
    }
    
  • 相关阅读:
    Pytorch 四种边界填充方式(Padding)
    数据预处理 —— padding数据
    Python PIL彩色图像转灰度图像
    Python PIL读取与保存图片
    Python-OpenCV 彩色图像转灰度图像
    Python-OpenCV读取与保存图片
    Python 矩阵旋转180度
    Pytorch 扩展Tensor维度、压缩Tensor维度
    基于SSM的健身房管理系统
    大学生创新创业项目-智取乐食
  • 原文地址:https://www.cnblogs.com/lgj-lgj/p/14443124.html
Copyright © 2020-2023  润新知