#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=998244353;
ll dp[2020][4100],a[2020],b[2020],ans=0;
int main()
{
ll n,k;
scanf("%lld%lld",&n,&k);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(int i=1;i<=n;i++) b[i]=a[i%n+1];
dp[0][n+1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=2*n+1;j++){
if(a[i]==b[i]) dp[i][j]=dp[i-1][j]*k%MOD;
else dp[i][j]=((dp[i-1][j-1]+dp[i-1][j+1])%MOD+dp[i-1][j]*(k-2)%MOD)%MOD;
}
}
for(int i=n+2;i<=2*n+1;i++) ans=(ans+dp[n][i])%MOD;
printf("%lld\n",ans);
return 0;
}
Technocup 2020 - Elimination Round 3 F1. Wrong Answer on test 233 (Easy Version)(DP)
最新推荐文章于 2020-10-25 22:55:31 发布