https://codeforces.com/problemset/problem/1081/C

这道题是不会的,我只会考虑 $k=0$ 和 $k=1$ 的情况。

$k=0$ 就是全部同色, $k=1$ 就是左边一个色右边一个色, $m(m-1)$ ,再选转折点有 $i-1$ 种 $C_{i-1}^{1} $( $i$ 个球。 $i-1$ 个空挡都可以插)。

到 $k=2$ 呢?可以是三种不同颜色,也可以是左右左,也就是 $m(m-1)(m-1)$ ,再选转折点有 $C_{i-1}^{2}$ 。

到k=3呢?更复杂了? $m(m-1)(m-1)(m-1)$ ,中间的用隔板法算,也就是 $C_{i-1}^{3}$ ?

所以答案其实就是 $m(m-1)^kC_{n-1}^k$ ,是组合数学?

隔板法就是:(可以为空的情况)给每组默认加上一个小球,然后隔板就可以选所有球的间隔。(不能为空的情况:)选所有球的间隔

ll qpow(ll x,ll n){
ll res=;
while(n){
if(n&)
res=res*x%p;
x=x*x%p;
n>>=;
}
return res;
} void init(int n){
fac[]=;
for(int i=;i<=n;i++){
fac[i]=fac[i-]*i%p;
}
invfac[n]=qpow(fac[n],p-);
//费马小定理
for(int i=n;i>=;i--){
invfac[i-]=invfac[i]*i%p;
}
//线性求阶乘逆元
} ll C(int n,int m){
return fac[n]*invfac[n-m]%p*invfac[m]%p;
}

dp解法: $f[i][j]=f[i-1][j]+f[i-1][j-1]$ ,以位置 $i$ 为结尾的,有j次转折,分在此转折和跟随左侧颜色两种情况

好不容易抄了一个线性求 $invfac$ ,居然费马小定理的时候传入一个 $n$ 而不是 $fac[n]$ ,我是服气了的,最后还忘记把 $2$ 改成 $k$ ,我大概是智障吧。

#include<bits/stdc++.h>
using namespace std;
#define ll long long ll dp[][]={}; //dp[i][k]以i为结尾的,有k块砖与左边的颜色不一样
ll p=; ll pow_mm1[];
ll fac[];
ll invfac[]; ll qpow(ll x,ll n){
ll res=;
while(n){
if(n&)
res=res*x%p;
x=x*x%p;
n>>=;
}
return res;
} void init(int n){
fac[]=;
for(int i=;i<=n;i++){
fac[i]=fac[i-]*i%p;
}
invfac[n]=qpow(fac[n],p-);
//费马小定理
for(int i=n;i>=;i--){
invfac[i-]=invfac[i]*i%p;
}
//线性求阶乘逆元
} ll C(int n,int m){
return fac[n]*invfac[n-m]%p*invfac[m]%p;
} int n,m,k;
int main(){
init(); pow_mm1[]=;
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=;i++){
pow_mm1[i]=pow_mm1[i-]*(m-)%p;
} /*for(int i=1;i<=n;i++){
dp[i][0]=m;
//都是同一种颜色
} for(int i=1;i<=n;i++){
dp[i][1]=m*(m-1)%p*(i-1)%p;
//左边的至少一块砖其中一种颜色,右边的另一种颜色,左边有1~i-1块砖
for(int k=2;k<=i-1;k++){
dp[i][k]=(m*pow_mm1[k])%p*C(i-1,k)%p;
}
}
*/ //dp[i][k]=(m*pow_mm1[k])%p*C(i-1,k)%p;
printf("%lld\n",(m*pow_mm1[k])%p*C(n-,k)%p); }

拓展阅读:组合数学的水题?https://www.cnblogs.com/kuangbin/archive/2012/08/28/2661066.html

2019-01-16

Codeforces - 1081C - Colorful Bricks - 简单dp - 组合数学的更多相关文章

  1. Codeforces - 9D - How many trees? - 简单dp - 组合数学

    https://codeforces.com/problemset/problem/9/D 一开始居然还想直接找公式的,想了想还是放弃了.原来这种结构是要动态规划. 状态是知道怎么设了,$t_{nh} ...

  2. Codeforces 1108D - Diverse Garland - [简单DP]

    题目链接:http://codeforces.com/problemset/problem/1108/D time limit per test 1 secondmemory limit per te ...

  3. Codeforces - 702A - Maximum Increase - 简单dp

    DP的学习计划,刷 https://codeforces.com/problemset?order=BY_RATING_ASC&tags=dp 遇到了这道题 https://codeforce ...

  4. Codeforces - 474D - Flowers - 构造 - 简单dp

    https://codeforces.com/problemset/problem/474/D 这道题挺好的,思路是这样. 我们要找一个01串,其中0的段要被划分为若干个连续k的0. 我们设想一个长度 ...

  5. Codeforces - 909C - Python Indentation - 简单dp

    http://codeforces.com/problemset/problem/909/C 好像以前做过,但是当时没做出来,看了题解也不太懂. 一开始以为只有上面的for有了循环体,这里的state ...

  6. CodeForces 30C Shooting Gallery 简单dp

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qq574857122/article/details/36944227 题目链接:点击打开链接 给定 ...

  7. Codeforces - 1033C - Permutation Game - 简单dp - 简单数论

    https://codeforces.com/problemset/problem/1033/C 一开始觉得自己的答案会TLE,但是吸取徐州赛区的经验去莽了一发. 其实因为下面这个公式是 $O(nlo ...

  8. CodeForces 22B Bargaining Table 简单DP

    题目很好理解,问你的是在所给的图中周长最长的矩形是多长嗯用坐标(x1, y1, x2, y2)表示一个矩形,暴力图中所有矩形易得递推式:(x1, y1, x2, y2)为矩形的充要条件为: (x1, ...

  9. Codeforces Round #260 (Div. 1) A. Boredom (简单dp)

    题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. ...

随机推荐

  1. window服务器开站点(不通用)

    此文章为记录自己的配置流程,其他人不通用 网站服务器:Windows server 2008 R2 (IIS6.1) + Asp.net 数据库服务器:Windows server 2008 R2 + ...

  2. Oracle 物理和逻辑备库健康监測的一个根据

    以以下keyword眼为例: 1 物理备库健康检查根据: Tue Apr 22 16:44:51 CST 2014Media Recovery Log /data/CMS/arch_log/1_583 ...

  3. 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期

    腾讯云图片鉴黄集成到C#   官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...

  4. UUID GUID

    http://baike.baidu.com/link?url=xkck9gR5bzOx0oBKP1qNJwGGq3IO56V4i8cg9zTSpSDMVBMA0F7jr0AdkQTGyk7F0FGj ...

  5. jQuery操作得到DOM元素

    jQuery再DOM操作方面提供了一些函数及其用法,这里就对DOM元素的包装简单说明一下,怎样使用会了,对其它方法也能灵活的使用.以下是一个小样例及其效果图. 代码例如以下: <html xml ...

  6. centos 安装php7 memcached扩展

    在使用下面这种方式安装php7 memcached扩展时,先要安装好memcached服务器yum -y install php70w-pecl-memcached

  7. 还在为开发APP发愁? 这里就有现成通用的代码!

    1.开源控件 1)首页: 1.1)首先是下拉刷新数据的 SwipeRefreshLayout 地址:https://github.com/hanks-zyh/SwipeRefreshLayout 1. ...

  8. RDLC后台自己定义报表模板

    首先封装一个公共类,统一来操作RDLC报表 using System; using System.Collections.Generic; using System.Linq; using Syste ...

  9. Statelessness Provide credentials with the request. Each request MUST stand alone and should not be affected from previous conversation happened from same client in past.

    The server never relies on information from previous requests. Statelessness As per the REST (REpres ...

  10. SimpleHTTPServer

    SimpleHTTPServer python -m SimpleHTTPServer 8989