题目大意:

1*n的格子 可以用m种颜色涂色

已知从第2开始到第n个格子 有k个格子与其左边的格子颜色不同

求涂色的方案数

相当于把n个格子分成k+1份

可以递推出分成k+1份的不同的方案数(其实递推公式就是组合数递推公式)

也可以隔板法直接求C(n-1,k)

已知所有分法后 直接涂色 那么第一份可以涂m种颜色

而第二块开始只能涂m-1种 因为要和左边那一份的颜色不同

所以C(n-1,k)*m*(m-1)^k

一定要注意取模问题 乘法要取模

递推时的加法也要取模啊 太粗心了 赛后递推加个取模就过了

#include <bits/stdc++.h>
#define LL long long
#define mod 998244353
using namespace std;
LL n,m,k;
LL dp[][];
LL mod_pow(LL x,LL n) {
LL res=1LL;
while(n) {
if(n&) res=res*x%mod;
x=x*x%mod;
n>>=;
} return res%mod;
}
int main()
{
while(~scanf("%I64d%I64d%I64d",&n,&m,&k)) {
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++) dp[i][]=1LL;
for(int i=;i<=n;i++)
for(int j=;j<i && j<=k;j++)
dp[i][j]=(dp[i-][j]+dp[i-][j-])%mod;
LL one=1LL*m*mod_pow(m-1LL,k)%mod;
printf("%I64d\n",one*dp[n][k]%mod);
} return ;
}

最新文章

  1. css学习--css基础
  2. Jenkins若干小问题
  3. 简易的GCC图形界面GCCUI
  4. poj: 1005
  5. 解决tableView分割线左边不到边的情况
  6. Android——拖动条SeekBar
  7. raiserror的用法
  8. C# 实现Oracle中的数据与Excel之间的转换
  9. web.xml的说明
  10. SPOJ TWOPATHS Two Paths
  11. oracle中backup模式
  12. 洛谷mNOIP模拟赛Day1-斐波那契
  13. git命令行在windows中报错WARNING: terminal is not fully functional
  14. matlab的Deep Learning的toolbox 中的SAE算法
  15. 配置DispatcherServlet应该写/还是/*
  16. 「SDOI2014」向量集 解题报告
  17. TERADATA数据库操作
  18. MAVEN 创建项目
  19. 绝望的主妇第八季/Desperate Housewives迅雷下载
  20. IIS 中托管基于TCP绑定的WCF服务

热门文章

  1. 力扣算法题—145BinartTreePostorderTraversal
  2. JWT工具类
  3. springboot整合RocketMq(非事务)
  4. MyBatis笔记一:GettingStart
  5. 2018-8-10-WPF-播放-gif
  6. 第三章 k8s的node节点配置
  7. 忘记mysql超户密码的解决方法
  8. sysprep
  9. OVR工厂简介
  10. rabbitmq使用延迟时报异常