列表

详情


NC229273. The Intriguing Obsession

描述

岛上有三种颜色的岛屿,分别是红色、蓝色和紫色。岛群分别由个不同的岛组成。

在一些(可能全部或没有)岛屿之间建立了桥梁。一座桥双向连接两个不同的岛,长度为。对于任意两个相同颜色的岛,要么不能通过桥相互到达,要么它们之间的最短距离至少为

Fire Sisters 已准备好迎接未知,但他们也想测试您的勇气。你来这里是为了找出在约束条件下建造所有桥梁的不同方法的数量,并给出模 的答案。如果存在一对岛,它们之间有一座桥,但另一种没有桥,则两种方法被认为是不同的。

输入描述

输入包含三个空格分隔的整数,分别表示岛群中红色、蓝色和紫色的岛数。

输出描述

输出一行包含一个整数,表示构建桥梁的不同方法的数量,模

示例1

输入:

1 1 1

输出:

8

说明:

在这个例子中,有 3 座可能建造的桥,并且没有任何桥的设置违反限制。因此答案是 \ 2^3 = 8

示例2

输入:

1 2 2

输出:

63

说明:

下图中,上方两个是有效结构,而下方两个是无效的。

示例3

输入:

1 3 5

输出:

3264

示例4

输入:

6 2 9

输出:

813023575

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 216ms, 内存消耗: 198140K, 提交时间: 2021-11-02 12:44:01

#include <iostream>

using namespace std;
typedef long long ll;
const ll mod=998244353;
ll dp[5050][5050];
int main()
{
    for(int i=0;i<=5000;i++)dp[i][0]=dp[0][i]=1;
    for(int i=1;i<=5000;i++){
        for(int j=1;j<=5000;j++)dp[i][j]=(dp[i-1][j]+dp[i-1][j-1]*j)%mod;
    }
    int a,b,c;
    cin>>a>>b>>c;
    ll ans=((dp[a][b]*dp[b][c])%mod*dp[c][a])%mod;
    cout<<ans;
    return 0;
}

上一题