WA最后一个点,附带最后一个点的文件,求调
查看原帖
WA最后一个点,附带最后一个点的文件,求调
750689
CNzzc楼主2024/8/4 14:33
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define up(i,j,k,l) for(int i=j;i<=k;i+=l)
#define down(i,j,k,l) for(int i=j;i>=k;i-=l)
using namespace std;
const int N=1e2+10;
string s[N];
int n;
char Kaitou;
ll fh;
int f[N];
ll ans,maxa,t;
bool check(int u,int v)
{
	int ct;
	down(i,(int)s[u].length()-1,1,1){
		if(s[u][i]==s[v][0]){
			ct=0;
			up(j,i+1,(int)s[u].length()-1,1){
				ct++;
				if(s[u][j]!=s[v][ct]){
					return false;
				}
			}
			fh=s[v].length()-(ct+1);
			return true;
		}
	}
	return false;
}
inline void dfs(int u)
{
	up(i,1,n,1){
		if(f[i]<2 && check(u,i)){
			ans+=fh;
			f[i]++;
			dfs(i);
			f[i]--;
			ans-=fh;
		}
	}
	t=max(t,ans);
	return;
}
void solve()
{
	cin>>n;
	up(i,1,n,1){
		cin>>s[i];
	}
	cin>>Kaitou;
	up(i,1,n,1){
		if(s[i][0]==Kaitou){
			ans=s[i].length();
			f[i]++;
			dfs(i);
			f[i]--;
			maxa=max(maxa,t);
		}
	}
	cout<<maxa;
	return;	
}
int main()
{
    //ios::sync_with_stdio(false);
	//cin.tie(0);
	//freopen("champion.in.in","r",stdin);
	//freopen("champion.out.out","w",stdout);
	int _=1;
	//cin>>_;
	up(i,1,_,1){
		solve();
	}
	return 0;
}

测试点输入:

6

many

youth

this

system

main

navy

m

输出:

38

2024/8/4 14:33
加载中...