题目描述

— This is not playing but duty as allies of justice, Nii-chan!

— Not allies but justice itself, Onii-chan!

With hands joined, go everywhere at a speed faster than our thoughts! This time, the Fire Sisters — Karen and Tsukihi — is heading for somewhere they've never reached — water-surrounded islands!

There are three clusters of islands, conveniently coloured red, blue and purple. The clusters consist of a , b and c distinct islands respectively.

Bridges have been built between some (possibly all or none) of the islands. A bridge bidirectionally connects two different islands and has length 1 . For any two islands of the same colour, either they shouldn't be reached from each other through bridges, or the shortest distance between them is at least 3 , apparently in order to prevent oddities from spreading quickly inside a cluster.

The Fire Sisters are ready for the unknown, but they'd also like to test your courage. And you're here to figure out the number of different ways to build all bridges under the constraints, and give the answer modulo 998244353 . Two ways are considered different if a pair of islands exist, such that there's a bridge between them in one of them, but not in the other.

输入输出格式

输入格式:

The first and only line of input contains three space-separated integers aa , bb and cc ( 1<=a,b,c<=5000 ) — the number of islands in the red, blue and purple clusters, respectively.

输出格式:

Output one line containing an integer — the number of different ways to build bridges, modulo 998244353.

输入输出样例

输入样例#1:

1 1 1
输出样例#1:

8
输入样例#2:

1 2 2
输出样例#2:

63
输入样例#3:

1 3 5
输出样例#3:

3264
输入样例#4:

6 2 9
输出样例#4:

813023575

说明

In the first example, there are 33 bridges that can possibly be built, and no setup of bridges violates the restrictions. Thus the answer is 2^{3}=823=8 .

In the second example, the upper two structures in the figure below are instances of valid ones, while the lower two are invalid due to the blue and purple clusters, respectively.

因为同色岛之间的最短路径长度>=3,所以同色岛之间不能有边并且一个岛不能连两个同色岛。

于是我们可以分别求一下2色到1色的方案数,3色到1色的方案数,3色到2色的方案数,然后把它们乘起来就好啦。

求一个搭配的方案数要用一下组合数。。。。

#include<bits/stdc++.h>
#define ll long long
#define maxn 5005
const int ha=998244353;
using namespace std;
int jc[maxn],ni[maxn];
int ans=0,a,b,c; inline int ksm(int x,int y){
int an=1;
for(;y;y>>=1,x=x*(ll)x%ha) if(y&1) an=an*(ll)x%ha;
return an;
} inline int add(int x,int y){
x+=y;
return x>=ha?x-ha:x;
} inline void init(){
jc[0]=1;
for(int i=1;i<=5000;i++) jc[i]=jc[i-1]*(ll)i%ha;
ni[5000]=ksm(jc[5000],ha-2);
for(int i=5000;i;i--) ni[i-1]=ni[i]*(ll)i%ha;
} inline int P(int x,int y){
return x<y?0:jc[x]*(ll)ni[x-y]%ha;
} inline int C(int x,int y){
return x<y?0:P(x,y)*(ll)ni[y]%ha;
} int main(){
init();
cin>>a>>b>>c;
for(int i=0;i<=b;i++) ans=add(ans,C(b,i)*(ll)P(a,b-i)%ha);
int an[2];
an[0]=an[1]=0;
for(int i=0;i<=c;i++){
an[0]=add(an[0],C(c,i)*(ll)P(a,c-i)%ha);
an[1]=add(an[1],C(c,i)*(ll)P(b,c-i)%ha);
} ans=ans*(ll)an[0]%ha*(ll)an[1]%ha; printf("%d\n",ans);
return 0;
}

  

Codeforces 869 C The Intriguing Obsession的更多相关文章

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

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

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

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

  3. 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 ...

  4. The Intriguing Obsession

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

  5. Codeforces 869C The Intriguing Obsession:组合数 or dp

    题目链接:http://codeforces.com/problemset/problem/869/C 题意: 红色.蓝色.紫色的小岛分别有a,b,c个. 你可以在两个不同的岛之间架桥,桥的长度为1. ...

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

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

  7. Codeforces 869C The Intriguing Obsession

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

  8. Codeforces Round #439 C. The Intriguing Obsession

    题意:给你三种不同颜色的点,每种若干(小于5000),在这些点中连线,要求同色的点的最短路大于等于3或者不连通,求有多少种连法. Examples Input 1 1 1 Output 8 Input ...

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

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

随机推荐

  1. #3 working with data stored in files && securing your application (PART II)

    Security problems is more and more important on the internet today. You can see the problems . This ...

  2. Go语言之反射(二)

    反射的值对象 反射不仅可以获取值的类型信息,还可以动态地获取或者设置变量的值.Go语言中使用reflect.Value获取和设置变量的值. 使用反射值对象包装任意值 Go语言中,使用reflect.V ...

  3. c++实验4

    1. 车辆基本信息管理  #include <iostream> using namespace std; #include <string> #include "c ...

  4. 非负矩阵分解(NMF)原理及算法实现

    一.矩阵分解回想 矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积.对于上述的用户-商品(评分矩阵),记为能够将其分解为两个或者多个矩阵的乘积,如果分解成两个矩阵和 .我们要使得矩阵和 的乘积能够还 ...

  5. 程序集链接器(AL.exe)

    AL.exe使用程序可以生成一个EXE文件或者DLL PE文件(其中只包含对其他模块中的类型进行描述的一个清单). 不要在普通的命令行窗口中编译,请先打开C:\ProgramData\Microsof ...

  6. IOS架构

    iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设备的操作系统. 1,Core OS: 是用FreeBSD和Mach所改写的Darwin, 是开源.符合POSI ...

  7. Python+Selenium中级篇之-Python读取配置文件内容

    本文来介绍下Python中如何读取配置文件.任何一个项目,都涉及到了配置文件和管理和读写,Python支持很多配置文件的读写,这里我们就介绍一种配置文件格式的读取数据,叫ini文件.Python中有一 ...

  8. Leetcode 565.数组嵌套

    数组嵌套 索引从0开始长度为N的数组A,包含0到N - 1的所有整数.找到并返回最大的集合S,S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }且遵守以下的规则. 假设选 ...

  9. 软工实践 - 第十次作业 Alpha 冲刺 (2 / 10)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/9960710.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去 ...

  10. Lyft Level 5 Challenge 2018-Final Round(Open Div.2) B. Taxi drivers and Lyft

    http://codeforces.com/contest/1075/problem/B Palo Alto is an unusual city because it is an endless c ...