比赛 2025暑期集训第6场 评测结果 AATTTTTTTTTTTTTT
题目名称 Moortal Cowmbat 最终得分 13
用户昵称 ChenBp 运行时间 27.971 s
代码语言 C++ 内存使用 4.01 MiB
提交时间 2025-07-12 12:20:30
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int g[28][28];
int dis[28][28];
int f[100005];
int s[100005];
int main() {
	freopen("cowmbat.in","r",stdin);
	freopen("cowmbat.out","w",stdout);
	int n,m,k;
	cin>>n>>m>>k;
	for(int i=1; i<=n; i++) {
		char c;
		cin>>c;
		s[i]=c-'a'+1;
	}
	memset(dis,0x3f,sizeof(dis));
	for(int i=1; i<=m; i++) {
		for(int j=1; j<=m; j++) {
			cin>>g[i][j];
			dis[i][j]=g[i][j];
		}
	}
	for(int l=1; l<=m; l++) {
		for(int i=1; i<=m; i++) {
			for(int j=1; j<=m; j++) {
				dis[i][j]=min(dis[i][j],dis[i][l]+dis[l][j]);
			}
		}
	}
	memset(f,0x3f,sizeof(f));
	f[0]=0;
	for(int i=1; i<=n; i++) {
		for(int j=0; j+k<=i; j++) {
			for(int c=1; c<=m; c++) {
				int ans=0;
				for(int l=j+1; l<=i; l++) {
					ans+=dis[s[l]][c];
				}
				if(i-j>=k) {
					f[i]=min(f[i],f[j]+ans);
				}
			}
		}
	}
	cout<<f[n];
	return 0;
}