Avito Cool Challenge 2018 C. Colorful Bricks ( CF1081C )

版权声明:欢迎转载欢迎评论! https://blog.csdn.net/rabbit_ZAR/article/details/85048057

题目:Colorful Bricks


题意:

给出3个整数 n , m , k 。分别代表有n块砖,有m种颜色,其中有k块砖和自己左边的砖颜色不一样。问有几种染色方案。


思路:

dp。

令f[i][k]表示前i块砖,有k块和左边的不一样的方案数。

边界:f[1][0]=m。

转移方程:

f[i][k]=(f[i-1][k]+(k==0?0:f[i-1][k-1])*(m-1))%md;


代码:

#include<bits/stdc++.h>
using namespace std;

#define read(x) scanf("%d",&x)
#define maxn 2000
#define md 998244353 
#define ll long long

int n,m,K;
ll f[maxn+5][maxn+5];

int main() {
	read(n),read(m),read(K);
	f[1][0]=m;
	for(int i=2;i<=n;i++) {
		for(int k=0;k<=K;k++) {
			f[i][k]=(f[i-1][k]+(k==0?0:f[i-1][k-1])*(m-1))%md;
		}
	}
	
	printf("%lld",f[n][K]);
		
	return 0;
}

猜你喜欢

转载自blog.csdn.net/rabbit_ZAR/article/details/85048057
今日推荐