2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)

2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)

大家好,又见面了,我是全栈君。

题目链接:传送门

题意:

n个格子排成一行。我们有m种颜色。能够给这些格子涂色,保证相邻的格子的颜色不同

问,最后恰好使用了k种颜色的方案数。

分析:

看完题目描写叙述之后立刻想到了一个公式 :C(m,k)*k*(k-1)^(n-1),可是细致分析了一下

这个公式的含义是相邻的格子颜色不同,使用的颜色总数小于等于k的方案数,可是这个

公式能够帮忙我们衍生出来以下的公式。C(k,x)*x*(x-1)^(n-1),这个公式的含义是在这

k种颜色中再选出来x种使得相邻的格子不同色最后的颜色数小于等于x,然后每个集合

都有交们我们能够考虑用容斥来搞一下。

设 S = F[x]=C(k,x)*x*(x-1)^(n-1);

ans = C(m,k) * sigma{ (-1)^(k-i) * C(k,i) * i *(i – 1)^(n-1)} (1 <= i <= k)

代码例如以下:

#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

typedef long long LL;

const LL mod = 1e9+7;

const int maxn = 1e6+10;

LL n,m,k;

LL c[maxn],inv[maxn];

LL quick_mod(LL a,LL b){
    LL ans=1;
    while(b){
        if(b&1) ans=ans*a%mod;
        b>>=1;
        a=a*a%mod;
    }
    return ans ;
}

inline LL get_inverse(LL x){ //(a/b) % c = a*inv[b] %c if(c is a prime number) inv[b] = (b^(c-2))%c;
    return quick_mod(x,mod-2);
}

void init(){//将[1,1e6+10]的逆元预处理出来
    for(LL i=1;i<maxn;i++)
        inv[i]=get_inverse(i);
}

void get_combine(LL n){//得到组合数
    c[0]=1;
    for(LL i=1;i<=k;i++){
        c[i]=(c[i-1]*(n-i+1)%mod)*inv[i]%mod;
    }
}

inline LL calc(LL x){// x*C(k,x)*(x-1)^(n-1)
    return (c[x]*x%mod)*quick_mod(x-1,n-1)%mod;
}

int main(){
    init();
    int t,cas=1;
    scanf("%d",&t);
    while(t--){
        scanf("%lld%lld%lld",&n,&m,&k);
        get_combine(m);
        LL ans = c[k],ans1=0,tag=1;
        get_combine(k);
        for(LL i=k;i>=1;i--){
            ans1=(ans1+tag*calc(i)+mod)%mod;
            tag=-tag;
        }
        ans=ans*ans1%mod;
        printf("Case #%d: %lld\n", cas++, ans);
    }
    return 0;
}

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116496.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 情商的研究

    情商EQ认识与提高情商(情绪、意志、性格、行为习惯组成的商数)情商(EmotionalQuotient)通常是指情绪商数,简称EQ,主要是指人在情绪、意志、耐受挫折等方面的品质,其包括导商(LQ)等。总的来讲,人与人之间的情商并无明显的先天差别,更多与后天的培养息息相关。它是近年来心理学家们提出的与智商相对应的概念。从最简单的层次上下定义,提高情商是把不能控制情绪的部分变为可以…

    2022年4月9日
    35
  • 人人商城生成app教程_人人商城APP打包教程(APICLOUD版)「建议收藏」

    人人商城生成app教程_人人商城APP打包教程(APICLOUD版)「建议收藏」一.APP环境搭建和配置编译1.登录APICLOUD后台新建应用step1注册账号注册apicloud账号并登录APICLOUD控制台step2新建应用再账户下面找到开发控制台=>开发控制台=>创建应用填写应用名和说明,必选NativeApp创建NativeApp2.开发工具下载安装APICLOUD开发工具:安装APICLOUD开发工具3.下载解压。然后运行apiclou…

    2025年6月25日
    3
  • 【计算机网络】输入网址到网页显示的整个流程

    【计算机网络】输入网址到网页显示的整个流程输入网址到网页显示的整个流程最近在看一些大厂的笔经面经时 经常看到这个问题 索性在今天也把自己学习的知识整理一下 第一步 首先你得在浏览器中输入网址 比如输入 www baidu com 其中 www 为主机 baidu 为域名 com 为类型 但是有网址不能直接找到对应的响应主机 必须把网址 即域名转化为 ip 地址 第二步 进行 DNS Do

    2025年8月6日
    3
  • 96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦

    96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦点击上方“程序员小灰”,选择“置顶公众号”有趣有内涵的文章第一时间送达!还记得前段时间风靡技术界的“猪脸识别”吗?据了解,在知乎上与此有关的仅仅一个问题的浏览量就超过了35万,”猪脸识别”是JDD-2017京东金融全球数据探索者大赛的四大赛题之一,自从京东金融JDD大赛启动,就掀起了好大一波关注。而最近,这个与“猪脸识别”有关的JDD—2017京东金融全球数据探索者大赛经过多轮

    2022年6月21日
    27
  • opc服务器消息通知代码,OPC 服务器 操作示例源码

    opc服务器消息通知代码,OPC 服务器 操作示例源码【实例简介】TestOPC【实例截图】【核心代码】usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingHaiGrang.Package.OpcNetApiChs.DaNet;usingHaiGrang.Package.OpcNetApiChs.Opc;usingHaiGr…

    2022年6月20日
    28
  • 常用的算法-递归

    常用的算法-递归

    2021年8月17日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号