社区讨论
大佬们为什么下载数据过了但评测暴0???
P1019[NOIP 2000 提高组] 单词接龙(疑似错题)参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mi6u03i0
- 此快照首次捕获于
- 2025/11/20 10:48 4 个月前
- 此快照最后确认于
- 2025/11/20 10:48 4 个月前
#include<bits/stdc++.h>
using namespace std;
char a[25][40000];
int len[25];
char b[3];
int mi[25][25];
int v[25];
int ans=0,an=0,n;
int dfs(int x){
v[x]++;
an+=len[x];
bool f=true;
for(int i=0;i<n;i++){
if(mi[x][i]!=0&&v[i]<2){
an-=mi[x][i];
f=false;
dfs(i);
an+=mi[x][i];
}
}
if(f){
ans=max(an,ans);
}
v[x]--;
an-=len[x];
return 0;
}
int main(){
char h;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s",&a[i]);
while(a[i][len[i]]!='\0'){
len[i]++;
}
}
scanf("%c",&h);
scanf("%c",&h);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=len[i]-1;k>0;k--){
if(a[i][k]==a[j][0]){
bool f=true;
for(int k1=k+1;k1<len[i];k1++){
if(a[i][k1]!=a[j][k1-k]){
f=false;
break;
}
}
if(f&&(len[i]-k)!=len[j]){
mi[i][j]=len[i]-k;
k=0;
}
}
}
}
}
for(int i=0;i<n;i++){
if(a[i][0]==h){
dfs(i);
}
}
printf("%d",ans);
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...