蒟蒻求助
查看原帖
蒟蒻求助
1252771
Never_Lost楼主2024/6/1 11:56

为什么我的样例第三个还正常,第五个会只向下一层啊!!!

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,num,m;
int nex[500007][2], cnt=1;
bool e[500007]={0};
ll a[500007];//前缀和
ll ans=0;
bool flag=0;
int main(){
	cin>>n>>m;
	for(ll i=1;i<=n;i++){
		cin>>num;
		ll p=0;
		bool c=0;
		for(ll j=1;j<=num;j++) {
			a[p]++;
			cin>>c;
			if(!nex[p][c]){
				nex[p][c]=++cnt;
			}
			p=nex[p][c];
		}
		e[p]++;
	}
	for(ll i=1;i<=m;i++){
		cin>>num;
		flag=0;
		ll p=0;
		bool c;
		cnt=0;
		ans=0;
		while(num--) {
			cin>>c;
			if(!nex[p][c]){
				flag=1;
				break;
			}
			p=nex[p][c];
			ans+=e[p];
		}
		if(flag){
			cout<<ans<<endl;
			continue;
		
		cout<<ans+a[p]<<endl;
	   }
    }
}
2024/6/1 11:56
加载中...