| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 43426 | hanyihong | 【J】T4 | C++ | 通过 | 100 | 36 MS | 27852 KB | 828 | 2026-10-29 15:39:07 |
#include<bits/stdc++.h> #define ll long long using namespace std; const int N=3005; int f[N][N],n,m,len,k,dis; string s; ll ans[N]; int main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)f[i][j]=0; for(int i=0;i<=n;i++)ans[i]=0; cin>>n>>m>>s; s=" "+s+"*"; for(int d=1;d<n;d++){ dis=0,len=0; for(int i=1,j=i+d;j<=n;i++,j++){ while(dis<=m && j+len<=n+1)dis+=s[i+len]!=s[j+len],len++; f[i][j]=len-1,dis-=(s[i]!=s[j]),len--; } } for(int i=1;i<=n;i++)for(int j=i+1;j<=n;++j)ans[i]++,k=min(j-i,f[i][j]),ans[i+k]--,ans[j]-=k,ans[j+1]+=k; for(int i=2;i<n;i++)ans[i]+=ans[i-1]; for(int i=2;i<n;i++)ans[i]+=ans[i-1]; for(int i=1;i<n;i++)cout<<ans[i]<<'\n'; return 0; }