本地炸了但是你谷给AC?

P8306 【模板】字典树

fulinran2026 @ 2024-05-02 15:24:26

事情是这样的,本地爆栈了,调试都调试不了的那种,但是试着交了一下直接过了
所以有大佬知道为什么吗/kk

贴code

#include<bits/stdc++.h>
#define LL long long
using namespace std;

const int N=3e6+5;

int T,n,q;
int cnt,ans;

struct mm
{
    int tag,ch[80];
}t[N];

void insert(char s[])
{
    int rt=0,n=strlen(s);
    for(int i=0;i<n;i++)
    {
        int y=s[i]-'0';
        if(t[rt].ch[y]==0)
            t[rt].ch[y]=++cnt;
        rt=t[rt].ch[y];
        t[rt].tag++;
    }
}

int query(char s[])
{
    int rt=0,n=strlen(s);
    for(int i=0;i<n;i++)
    {
        int y=s[i]-'0';
        if(t[rt].ch[y]==0) return 0;
        rt=t[rt].ch[y];
    }
    return t[rt].tag;
}

int main()
{
    scanf("%d",&T);
    while(T--)
    {
        for(int i=0;i<=cnt;i++)
        {
            for(int j=0;j<=80;j++)
                t[i].ch[j]=0;
            t[i].tag=0;
        }
        cnt=0; ans=0;

        scanf("%d%d",&n,&q);
        for(int i=1;i<=n;i++)
        {
            char a[N];
            scanf("%s",a);
            insert(a);
        }
        for(int i=1;i<=q;i++)
        {
            char a[N];
            scanf("%s",a);
            printf("%d\n",query(a));
        }
    } 
    return 0;
}
// 

by 残阳如血 @ 2024-05-18 12:00:48

@fulinran2026 这是因为 Windows 的缘故吧,实际比赛中栈空间和题目所给的空间时等大的,所以可以开成局部变量。


by kent2017 @ 2024-09-04 10:24:17

洛谷评测机 栈空间=空间限制

比如以下答辩代码到处都是BUG本地RE但洛谷上WA+AC 16pts

#include<bits/stdc++.h>
//#include<windows.h>
using namespace std;
int cnt;
char oulint(int x){
    if(x<26){return x+'a';}
    if(x<52){return x-26+'A';}
    return x-4;
}
int oulchar(char x){
    if(x<='z'&&x>='a'){return x-'a';}
    if(x<='Z'&&x>='A'){return x+26-'A';}
    if(x<='9'&&x>='0'){return x+4;}
    return -1;
}
struct node{
    int fa,son[62],sons;
};
struct trie{
    node nodes[1000000];
    void add(string a){
        int len=a.length(),p=0;
        for(int i=1;i<=len;++i){
            if(!(this->nodes[p].son[oulchar(a[i])])){
                nodes[p].son[oulchar(a[i])]=++cnt;
                nodes[cnt].fa=p;
            }
            p=nodes[p].son[oulchar(a[i])];
        }
    }
    int finds(string t){
        int len=t.length(),p=0;
        for(int i=1;i<=len;++i){
            if(!nodes[p].son[oulchar(t[i])]){
                return 0;
            }
            p=nodes[p].son[oulchar(t[i])];
        }
        return this->nodes[p].sons;
    }
    void cnts(int p){
        this->nodes[p].sons=1;
        for(int i=0;i<62;++i){
            if(nodes[p].son[i]){
                cnts(nodes[p].son[i]);
                this->nodes[p].sons+=this->nodes[nodes[p].son[i]].sons;
            }
        }
    }
};
int/*signed*/ main(){
//    freopen("P8036.in","r",stdin);
//    freopen("P8036.out","w",stdout);
//    int x;cin>>x;cout<<oulint(x);
//    char x;cin>>x;cout<<oulchar(x);
    int t;cin>>t;++t;
    for(;--t;){
        trie tries;
        int n,p;cin>>n>>p;
        for(int i=1;i<=n;++i){
            string a;tries.add(a); 
        }
        tries.cnts(0);
        for(int j=1;j<=p;++j){
            int kkk;cin>>kkk;
            cout<<tries.nodes[kkk].sons<<endl;
        }
    }
    return 0;
}

上一页 |