今天div2 t1的字典树做法
  • 板块学术版
  • 楼主lxyt_415x
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/1 19:00
  • 上次更新2023/11/2 16:43:26
查看原帖
今天div2 t1的字典树做法
734487
lxyt_415x楼主2023/10/1 19:00

只过了3个点,大佬给个hack数据也行啊

#include<bits/stdc++.h>
using namespace std;
int tn[111111][66],len[111111],id;
char c[111111],d;
long long ans;
int main()
{
	int n,a,b,r;
	cin>>n;
	while(n--)
	{
		scanf("%c",&d);
		while(d<=32) scanf("%c",&d);
		c[0]=d;
		for(int i=1;;i++)
		{
			scanf("%c",&c[i]);
			if(c[i]==';')
				break;
		}
		a=0;
		r=7;
		if(c[6]=='_')
			r=12;
		for(;c[r]!='(';r++)
		{
			if(tn[a][c[r]-'A']==0)
				tn[a][c[r]-'A']=++id;
			a=tn[a][c[r]-'A'];
		}
		if(c[++r]=='"')
		{
			len[a]=strlen(c)-r-4;
			if(c[6]!='_')
				ans+=len[a];
			continue;
		}
		b=0;
		for(;c[r]!=')';r++)
			b=tn[b][c[r]-'A'];
		len[a]=len[b];
		if(c[6]!='_')
			ans+=len[b];
	}
	cout<<ans;
	return 0;
}
2023/10/1 19:00
加载中...