题目链接: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. Springboot中读取自定义名称properties的

    Springboot读取自定义的配置文件时候,使用@value,一定要指定配置文件的位置!  否则报错参数化异常!

  2. Nginx服务监听端口修改启动bug

    监听的端口从80 修改到其他端口出现启动不起来问题. 解决方案如下: yum install policycoreutils-python sudo cat /var/log/audit/audit. ...

  3. 【转】图解MySql命令行创建存储过程

    一 操作实例 首先登录mysql: 使用source命令,从命令行执行sql脚本,创建表: 创建第一个存储过程: 事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";&q ...

  4. ES6学习笔记(二)——字符串扩展

    相信很多人也和我一样,不喜欢这样循规蹈矩的逐条去学习语法,很枯燥乏味.主要是这样学完一遍之后,没过一段时间就忘到九霄云外了.不如实际用到的时候研究它记得牢靠,所以我就整理成笔记,加深记忆的同时便于复习 ...

  5. ftp 协议分析

    File Transfer Protocol(文件传输协议) 使用SOCKET实现 FTP的客户端协议规则: .h #pragma once #include <string> #incl ...

  6. mysql设计表结构数据类型的选择

    选择合适的数据类型 在使用MySQL创建数据表的时候会遇到一个问题,如何为字段选择合适的数据类型.比如创建一个员工信息表,每个字段都可以用很多种类型来定义, int,char,float等等. cha ...

  7. Linux用户相关文件之组文件

    组信息文件: 1.文件地址: /etc/group -rw-r--r--. 1 root root 492 10月 6 21:56 /etc/group 2.文件内容: xiaol:x:500: 3. ...

  8. 20171104 DOI Excel 导出

    1. OAOR 创建模板, Class name:SOFFICEINTEGRATIONClass type:  OTObject key:  ZZCSDRP_0030 2.双击表模板创建Excel 模 ...

  9. microsoft cl.exe 编译器

    cl.exe是visual stdio 内置的编译器,visual stdio包含各种功能,有些功能可能这辈子都用不到,体积庞大,如果是 开发比较大或者有图形的项目,vs是首选.更多情况时更喜欢使用文 ...

  10. 剑指offer 面试17题

    面试17题: 题目:打印从1到最大的n位数 题:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1.2.3一直到最大的3位数999. 解题思路:需要考虑大数问题,这是题目设置的陷 ...