题目链接:https://vjudge.net/problem/Gym-100548F

题目大意:

  n 朵花,按顺序排成一排。从 m 种颜色中选出 k 种颜色,给这 n 朵花染色,要求相邻的花颜色不同。问共有多少种染色方案?

  \((1 \le n,m \le 10^{9}, 1 \le k \le 10^{6}, k \le n,m)\)

知识点:  快速幂算法、组合数、容斥原理、逆元。

解题思路:

  第一步:从 m 种颜色中选出 k 种颜色,方案数:\(C_m^k\);

  第二步:将这 k 种颜色合理地安排到每一朵花上,要求每一种颜色都有用到,而且相邻的花颜色不同。在此我们设 \(G(x)\) 为将 x 种颜色合理地安排到每一朵花上,只要求相邻的花颜色不同,不要求每一种颜色都有用到。则 \( G(x) = x(x-1)^{n-1}\) 。根据容斥原理,我们可得第二步的方案数为:

  \( C_{k}^{k}G(k) - C_{k}^{k-1}G(k-1) + ... +(-1)^{k-2}G(2)\);

  则总的方案数为:

  \(C_m^k\times[C_{k}^{k}G(k) - C_{k}^{k-1}G(k-1) + ... +(-1)^{k-2}G(2)]\)

\(=C_m^k\times[C_{k}^{k}k(k-1)^{n-1} - C_{k}^{k-1}(k-1)(k-2)^{n-1} + ... +(-1)^{k-2}\times2]\).

AC代码:

 #include<cstdio>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + ;
const int maxn = 1e6 + ;
ll inv[maxn], C_k[maxn]; ll exp_mod(ll a, ll b) { //快速幂求a^b%mod
ll ret = ;
while (b) {
if (b & ) ret = (ret*a) % mod;
a = (a*a) % mod;
b >>= ;
}return ret;
}
void init() { //逆元表
inv[] = ;
for (int i = ; i<maxn; i++)
inv[i] = exp_mod((ll)i, mod - ) % mod;
}
void find_Ck(ll k) { //求出C(K, 0,1,...k)
C_k[] = ;
for (ll i = ; i <= k; i++) {
C_k[i] = ((C_k[i - ] * (k - i + ) % mod)*inv[i]) % mod;
}
}
int main() {
// freopen("in.txt","r",stdin);
init();
int T;
ll n, m, k;
scanf("%d", &T);
for (int t = ; t <= T; t++) {
scanf("%lld%lld%lld", &n, &m, &k);
find_Ck(k);
ll ans1 = ;
ll sign = ;
for (ll i = k; i >= ; i--, sign = -sign) //求C(k,k)*k*(k-1)^(n-1) - C(k,k-1)*(k-1)*(k-2)^(n-1) ......
ans1 = (ans1 + ((C_k[i] * i%mod)*exp_mod(i - , n - ) % mod)*sign + mod) % mod;
ll ans2 = ;
for (ll i = ; i <= k; i++) { //C(m,k)
ans2 = (ans2*(m - i + ) % mod)*inv[i] % mod; //注意除法取余运算要用逆元
}
printf("Case #%d: %lld\n", t, ans1*ans2%mod);
}
return ;
}

Gym100548F Color的更多相关文章

  1. 【转】c#、wpf 字符串,color,brush之间的转换

    转自:http://www.cnblogs.com/wj-love/archive/2012/09/14/2685281.html 1,将#3C3C3C 赋给background this.selec ...

  2. Python为8bit深度图像应用color map

    图片中存在着色版的概念,二维矩阵的每个元素的值指定了一种颜色,因此可以显示出彩色. 迁移调色板 下述python代码将VOC数据集中的某个语义分割的图片的调色板直接应用在一个二维矩阵代表的图像上 #l ...

  3. (转)System.Drawing.Color的颜色对照表

    经常使用System.Drawing.Color, 本篇介绍一下颜色与名称及RGB值的对应关系. 1. 颜色与名称的对照表(点击下图放大看): 2. 颜色与RGB值对照表: Color.AliceBl ...

  4. 激光打印机的Color/paper, Xerography介绍

    Color Basic 看见色彩三要素: 光源,物体,视觉 加色色彩模型:R,G,B 多用于显示器 减色色彩模型:C,M,Y,K 多用于打印复印 Paper 东亚地区常用A系列标准用纸,在多功能一体机 ...

  5. 安卓工具箱:color of Style

    <?xml version="1.0" encoding="utf-8"?> <resources> <color name=&q ...

  6. UITableView 一直显示滚动条(ScrollBar Indicators)、滚动条Width(宽度)、滚动条Color(颜色)

    在 IOS 中,对 UIScrollView 的滚动条(ScrollBar Indicators)的自定义设置接口,一直都是很少的.除了能自定义简单的样式(UIScrollViewIndicatorS ...

  7. OpenCASCADE Color Scale

    OpenCASCADE Color Scale eryar@163.com Abstract. The color scale is a specialized label object that d ...

  8. Color Transfer between Images code实现

    上计算机视觉课老师布置的作业实现论文:Color Transfer between Images 基本思路是: 1.给定srcImg和targetImg 2.将RGB空间转为Lab空间 3.根据论文中 ...

  9. ZOJ Problem Set - 1067 Color Me Less

    这道题目很简单,考察的就是结构体数组的应用,直接贴代码了 #include <stdio.h> #include <math.h> typedef struct color { ...

随机推荐

  1. 【JAVA基础】09 Eclipse

    1. Java开发工具 操作系统自带的记事本软件 高级记事本软件 集成开发环境 IDE (Integrated Development Environment) Eclipse和MyEclipse的区 ...

  2. Linux 搭建nginx的PID

    pid logs/nginx.pid 安装的时候就是没有,其实在启动 nginx 时自动生成的 里面存放的是 当前 nginx 住进程的 ID 号:所以在配置文件中指定pidpid /usr/loca ...

  3. Merge_Sort

    public class Merge_Sort { public static void merge(int a[],int n){ int source; //合并之前数组的大小 int targe ...

  4. tarjan 算法应用

    主要讲证明,流程倒是也有 然后发现自己并不会严谨证明 其实后面一些部分流程还是挺详细 本来这篇blog叫做"图论部分算法证明",然后发现OI中的图论想完全用数学上的方法证明完全超出 ...

  5. C++ 函数重载,函数模板和函数模板重载,选择哪一个?

    重载解析 在C++中,对于函数重载.函数模板和函数模板重载,C++需要有一个良好的策略,去选择调用哪一个函数定义(尤其是多个参数时),这个过程称为重载解析. (这个过程将会非常复杂,但愿不要遇到一定要 ...

  6. PHP命令执行学习总结

    前言 最近学习了PHP命令执行,内容比较多,把自己学到的总结下来,加深理解,水平有限,欢迎大佬斧正. 什么是PHP命令注入攻击? Command Injection,即命令注入攻击,是指由于Web应用 ...

  7. Redux在项目中的文件结构

    React + Redux   今天我们来唠唠在React一般项目中,使用Redux进行状态管理的时候,相对的如何存放reducer.action.api之类文件的结构与使用时机吧.本章默认看官们已经 ...

  8. 【python】numpy库和matplotlib库学习笔记

    Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...

  9. Java——SSM整合所需的Maven配置文件

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  10. G - Island Transport 网络流

    题目: In the vast waters far far away, there are many islands. People are living on the islands, and a ...