1.28

洛天依:脑机接口 RE 了是不是就直接死了啊

上次听到这么典的话还是在上次


HuTaoImpact:坏了,我是谁来着(深思)

哲学者的深思

HuTaoImpact:从本质上思考,我是一团物质,以普遍理论而言,我是五星公民,我是古希腊掌管记忆的神,可以自由控制每个人的思想让他们忘掉或想起我,但是我需要时间之神的帮助以及语言之神。


Hangry:想我了吗?

Shadow:想我了吗?

Xrlong:想我了吗?

wkh2008:想我了吗?

洛天依:想我了吗?

HS_xh:想我了吗?

鉴定为:HZOI2024最\(\color{white}{想我了吗}\)的一批人


lty:机房不让带零食没说不让吃零食啊

Shadow:机房不让带零食可以带原石吗


HS_xh:唉,Hangry 呢,Hangry 怎么死了?

Hangry 在我背后:你说什么?

HS_xh:image


image


wkh2008:头可断,工是不能上的!


HuTaoImpact:落榜美术生老家是波兰的。

HS_xh:希特勒收复失地!


Shadow:我给你发个人让他帮你注册SPOJ

HS_xh:好哇!

(过了一会)HS_xh:你发了吗?

Shadow:我发了啊,(看一眼)哦我发错了。


今天都写了点什么

KMP算法

匹配

int j;
j=0;
for(int i=1;i<=la;++i)
{
    while(j && b[j+1]!=a[i]) j=next[j];
    if(b[j+1]==a[j]) j++;
    if(j==lb)
    {
        cout<<i-lb+1<<'\n';
        j=next[j];
    }
}

处理 next 数组

j=0;
for(int i=2;i<=lb;++i)
{
    while(j && b[i]!=b[j+1])
        j=next[j];
    if(b[j+1]==b[j]) j++;
    next[i]=j;
}

洛谷模板

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+50;
int la,lb,next_[N],j;
char a[N],b[N];
signed main()
{
    cin>>a+1;
    cin>>b+1;
    la=strlen(a+1);
    lb=strlen(b+1);
    for(int i=2;i<=lb;++i)
    {
        while(j && b[i]!=b[j+1])
            j=next_[j];
        if(b[j+1]==b[i]) j++;
        next_[i]=j;
    }
    j=0;
    for(int i=1;i<=la;++i)
    {
        while(j>0 && b[j+1]!=a[i]) j=next_[j];
        if(b[j+1]==a[i]) j++;
        if(j==lb)
        {
            cout<<i-lb+1<<'\n';
            j=next_[j];
        }
    }
    for(int i=1;i<=lb;++i)
        cout<<next_[i]<<" ";
}

动物园

有趣的题

预处理串的长度然后 num 数组按题意模拟即可(不是

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+50;
const int p=1e9+7;
int la,lb,next_[N],n;
int sum[N];
char a[N];
signed main()
{
    cin>>n;
    while(n--)
    {
        memset(next_,0,sizeof(next_));
        memset(sum,0,sizeof(sum));
        cin>>a+1;
        la=strlen(a+1);
        int ans=1;
        sum[1]=1,next_[1]=0;
        for(int i=2,j=0;i<=la;++i)
        {
            while(j && a[i]!=a[j+1])
                j=next_[j];
            if(a[j+1]==a[i]) j++;
            next_[i]=j;
            sum[i]=sum[j]+1;
        }
        for(int i=1,j=0;i<=la;++i)
        {
            while(j>0 && a[j+1]!=a[i]) j=next_[j];
            if(a[j+1]==a[i]) j++;
            while(j>i/2) j=next_[j];
            ans=(ans*(sum[j]+1))%p;
        }
        cout<<ans<<'\n';
    }
}

Censoring S

KMP删除操作,栈模拟,如果匹配到了子串就出栈即可。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+50;
const int p=1e9+7;
int la,lb,next_[N],n;
int pos[N],top,sta[N];
char a[N],b[N];
signed main()
{
    cin>>a+1>>b+1;
    int la=strlen(a+1),lb=strlen(b+1);
    for(int i=2,j=0;i<=lb;++i)
    {
        while(j && b[i]!=b[j+1])
            j=next_[j];
        if(b[j+1]==b[i]) j++;
        next_[i]=j;
    }
    for(int i=1,j=0;i<=la;++i)
    {
        while(j && a[i]!=b[j+1]) j=next_[j];
        if(b[j+1]==a[i]) j++;
        pos[i]=j;
        sta[++top]=i;
        if(j==lb) top-=lb,j=pos[sta[top]];
    }
    for(int i=1;i<=top;++i)
        cout<<a[sta[i]];
}

【XR-3】系统设计

写的最久的题,挑了一下午发现线段树写假了😅😅😅

线段树上哈希(?),看着题解过了,大概算是懂了吧。

#include<bits/stdc++.h>
#include<bits/extc++.h>
#define int unsigned long long
#define mid ((l+r)>>1)
#define ls (p<<1)
#define rs (p<<1|1)
namespace IO
{
    inline void close(){std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);}
    inline void Fire(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
    inline int read(){int s = 0,w = 1;char ch = getchar();while(ch<'0'||ch>'9'){ if(ch == '-') w = -1;ch = getchar();}while(ch>='0'&&ch<='9'){ s = s*10+ch-'0';ch = getchar();}return s*w;}
    inline void write(int x){char F[200];int tmp=x>0?x:-x,cnt=0;;if(x<0)putchar('-') ;while(tmp>0){F[cnt++]=tmp%10+'0';tmp/=10;}if(cnt==0)putchar('0');while(cnt>0)putchar(F[--cnt]);putchar(' ');}
}
using namespace std;
using namespace __gnu_pbds;
using namespace IO;
const int N=1e6;
const int base=2e6+3;
int n,m,T,ans,root,fa[N],cur,len,t[N<<2],pri=229,a[N],sx[N],Pow[N];
vector<int> num[N];
cc_hash_table<int,int> q;
int op,x,l,r;
inline void dfs(int x,int fa)
{
    q[sx[x]]=x;
    for(int i=0,y;i<num[x].size();++i)
        if((y=num[x][i])!=fa)
            sx[y]=sx[x]*base+i+1+pri,dfs(y,x);
}
inline void pushup(int p,int len)
{
    t[p]=t[ls]*Pow[len]+t[rs];
}
void build(int p,int l,int r)
{
	if(l==r)
	{
	   t[p]=a[l]+pri;return;
	}
	build(ls,l,mid);
	build(rs,mid+1,r);
	pushup(p,r-mid);
}
inline void Update(int p,int l,int r,int k,int d)
{
    if(l==r)
    {
        t[p]=d+pri;
        return;
    }
    k<=mid ? Update(ls,l,mid,k,d) : Update(rs,mid+1,r,k,d);
    pushup(p,r-mid);
}
inline int ask(int p,int l,int r)
{
    if(l==r) return l;
    int x=cur*Pow[mid-l+1]+t[ls];
    if(q.find(x)==q.end()) return ask(ls,l,mid);
    cur=x;
    return ask(rs,mid+1,r);
}
inline int Find(int p,int L,int R,int l,int r,int &o)
{
    if(L<=l && r<=R)
    {
        int x=cur*Pow[r-l+1]+t[p];
        if(q.find(x)==q.end())
        {
            o=1;
            return ask(p,l,r);
        }
        cur=x;
        return 0;
    }
    if(L>mid) return Find(rs,L,R,mid+1,r,o);
    if(R<=mid) return Find(ls,L,R,l,mid,o);
    int ans=Find(ls,L,R,l,mid,o);
    return o ? ans : Find(rs,L,R,mid+1,r,o);
}
signed main()
{
    n=read();m=read();T=read();
    Pow[0]=1;
    for(int i=1;i<N;++i)
        Pow[i]=Pow[i-1]*base;
    for(int i=1;i<=n;++i)
    {
        fa[i]=read();
        if(!fa[i]) root=i;
        else num[fa[i]].push_back(i);
    }
    for(int i=1;i<=m;++i)
        a[i]=read();
    for(int i=1;i<=n;++i)
        sort(num[i].begin(),num[i].end());
    dfs(root,0);
    build(1,1,m);
    while(T--)
    {
        op=read();
        if(op==2)
        {
            l=read();x=read();Update(1,1,m,l,x);
        }
        else 
        {
            x=read();l=read();r=read();
            cur=sx[x];
            int fl=0;Find(1,l,r,1,m,fl);
            cout<<q[cur]<<'\n';
        }
    }
}

尝试让闲话更加充实。

所以这里有张图

image


所以这里还有原神大礼包

image

image

image

image

image


去写 企鹅 了,先发出来罢

Upd:

乐了,机房一些人太颓了导致又把洛谷封了,导致我做题纪要又死了。

乐,Huge 疯狂 D HuTaoImpact

posted @ 2024-01-28 20:46  HS_xh  阅读(73)  评论(1编辑  收藏  举报
init();