题目链接:http://codeforces.com/problemset/problem/869/C

题意:

  红色、蓝色、紫色的小岛分别有a,b,c个。

  你可以在两个不同的岛之间架桥,桥的长度为1。

  任意两个颜色相同的岛之间的距离不能小于3。

  问你合法的架桥方案数。

题解:

  显然只能在不同颜色的岛之间连边。

  而且一个岛对于一种颜色,最多只能连一个岛。

  设f(x,y)表示两种颜色的岛相互连边,分别有x,y个,连边的方案数。(x < y)

  那么ans = f(a,b) * f(b,c) * f(a,c)

  解法1(组合数):

    枚举共连了k条边,k∈[1,x]。

    那么连了k条边的方案数 = C(x,k) * C(y,k) * k!

    总方案数f(x,y) = ∑(C(x,k) * C(y,k) * k!)

  解法2(dp):

    向其中A集合中加入一个岛,要么不连边,要么根B集合中的任意一个点连边(共j种方案)。

    f(i,j) = f(i-1,j) + f(i-1,j-1)*j

AC Code(combination):

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 5005
#define MOD 998244353 using namespace std; int mx=;
int a[];
long long f[MAX_N];
long long c[MAX_N][MAX_N];
long long ans=; void cal_f()
{
f[]=;
for(int i=;i<=mx;i++) f[i]=f[i-]*i%MOD;
} void cal_c()
{
c[][]=;
for(int i=;i<=mx;i++)
{
c[i][]=;
for(int j=;j<=i;j++)
{
c[i][j]=(c[i-][j-]+c[i-][j])%MOD;
}
}
} int main()
{
for(int i=;i<;i++)
{
cin>>a[i];
mx=max(mx,a[i]);
}
cal_f();
cal_c();
for(int i=;i<;i++)
{
for(int j=i+;j<;j++)
{
int x=min(a[i],a[j]);
int y=max(a[i],a[j]);
int sum=;
for(int k=;k<=x;k++)
{
sum=(sum+c[x][k]*c[y][k]%MOD*f[k])%MOD;
}
ans=ans*sum%MOD;
}
}
cout<<ans<<endl;
}

AC Code(dp):

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 5005
#define MOD 998244353 using namespace std; int a,b,c;
long long dp[MAX_N][MAX_N]; int main()
{
cin>>a>>b>>c;
int mx=max(a,max(b,c));
for(int i=;i<=mx;i++)
{
dp[i][]=dp[][i]=;
}
for(int i=;i<=mx;i++)
{
for(int j=;j<=mx;j++)
{
dp[i][j]=(dp[i-][j]+dp[i-][j-]*j)%MOD;
}
}
cout<<dp[a][b]*dp[b][c]%MOD*dp[a][c]%MOD<<endl;
}

Codeforces 869C The Intriguing Obsession:组合数 or dp的更多相关文章

  1. codeforces 869C The Intriguing Obsession【组合数学+dp+第二类斯特林公式】

    C. The Intriguing Obsession time limit per test 1 second memory limit per test 256 megabytes input s ...

  2. CodeForces - 869C The Intriguing Obsession(组合数)

    题意:有三个集合,分别含有a.b.c个点,要求给这些点连线,也可以全都不连,每两点距离为1,在同一集合的两点最短距离至少为3的条件下,问有多少种连接方案. 分析: 1.先研究两个集合,若每两个集合都保 ...

  3. Codeforces 869C The Intriguing Obsession

    题意:有三种颜色的岛屿各a,b,c座,你可以在上面建桥.联通的点必须满足以下条件:1.颜色不同.2.颜色相同且联通的两个点之间的最短路径为3 其实之用考虑两种颜色的即可,状态转移方程也不难推出:F[i ...

  4. Codeforces Round #439 (Div. 2)C - The Intriguing Obsession(简单dp)

    传送门 题意 给出三个集合,每个集合的元素数量为a,b,c,现在需要连边,满足集合内元素不可达或最短路为3,求可行方案数 分析 设dp[i][j]为a集合元素为i个,b集合元素为j个的可行方案,易知( ...

  5. cf 869c The Intriguing Obsession

    题意:有三种三色的岛,用a,b,c来标识这三种岛.然后规定,同种颜色的岛不能相连,而且同种颜色的岛不能和同一个其他颜色的岛相连.问有多少种建桥的方法. 题解:em....dp.我们先看两个岛之间怎么个 ...

  6. Codeforces Round #439 (Div. 2) C. The Intriguing Obsession

    C. The Intriguing Obsession 题目链接http://codeforces.com/contest/869/problem/C 解题心得:     1.由于题目中限制了两个相同 ...

  7. 「日常训练」The Intriguing Obsession(CodeForces Round #439 Div.2 C)

    2018年11月30日更新,补充了一些思考. 题意(CodeForces 869C) 三堆点,每堆一种颜色:连接的要求是同色不能相邻或距离必须至少3.问对整个图有几种连接方法,对一个数取模. 解析 要 ...

  8. Codeforces 219D. Choosing Capital for Treeland (树dp)

    题目链接:http://codeforces.com/contest/219/problem/D 树dp //#pragma comment(linker, "/STACK:10240000 ...

  9. code forces 439 C. The Intriguing Obsession

    C. The Intriguing Obsession time limit per test 1 second memory limit per test 256 megabytes input s ...

随机推荐

  1. Creating a Message Queue in PHP Without External Libraries

    w http://www.ebrueggeman.com/blog/creating-a-message-queue-in-php

  2. Git 命令行帮助

    Git usage: git [--version] [--help] [-C <path>] [-c name=value] [--exec-path[=<path>]] [ ...

  3. Java 如何读取resources

    Sample in Github 1.一般使用Maven创建Java工程,代码文件在src/main/java文件夹中,资源文件在src/main/resources文件夹中,Java代码为什么可以读 ...

  4. Educational Codeforces Round 29(6/7)

    1.Quasi-palindrome 题意:问一个字符串(你可以添加前导‘0’或不添加)是否是回文串 思路:将给定的字符串的前缀‘0’和后缀‘0’都去掉,然后看其是否为回文串 #include< ...

  5. DevOps能力是落地微服务的前提

    在软件开发领域不存在银弹,当用一项新的技术或新的架构时一定要明白其背后的原理,确保把合适的技术应用在合适的项目上,而不是盲目跟风. 单体应用伸缩性差,而且随着应用规模的扩大,业务逻辑和开发部署过程都变 ...

  6. flex 实现图片播放 方案二 把临时3张图片预加载放入内存

    该方案,是预加载:前一张,当前,下一张图片,一共3张图片放入内存中.这样对内存的消耗可以非常小,加载之后的图片就释放内存. 下面示例一个是类ImagePlayers,一个是index.mxml pac ...

  7. pdo封装2

    <?php //添加了一个 _createSql 方法,负责创建所有sql class Db{ static private $ins; private $pdo; private $table ...

  8. yii框架的中的一些使用介绍

    Yii框架的使用整理 获取配置文件中的数据 Yii::$app->params[‘配置文件中对应的参数名称’] 获取文件表单提交的数据 Yii::$app->request->pos ...

  9. 关于dispatch_semaphore的使用

    dispatch_semaphore是GCD用来同步的一种方式,与他相关的共有三个函数,分别是 dispatch_semaphore_create,dispatch_semaphore_signal, ...

  10. Delphi中ComPort通信中的数据处理

    源: Delphi中ComPort通信中的数据处理