— 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 aa , bb and ccdistinct 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 11 . 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 33 , 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 998244353998244353. 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<=50001<=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 998244353998244353 .

 

输入输出样例

输入样例#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.

题意:

给出三个区,每个区分别有a,b,c个岛屿,要在区与区之间建设桥梁,但是有如下限制

1:同一个区的两个岛之间不连通或者连通且最短距离不小于3

2:每一座桥的距离假设都为1

问:一共有多少种不同的建桥方法,桥的数量可以是任意的合法的数量。

                                                                                                 --translate by 万古神犇517

题解:

哇,这场的背景是物语系列啊~又找到了一场动漫场……

首先来考虑一下哪些情况是会被hack掉的

第一种情况显然是同一个区域里连一条边,这样同一个区域里

所以我们一定每次不能连相同区中的两个点,除此之外还有吗?

显然如果一个点连了另一个区域内的两个点,会让这两个点之间的距离变成2,然后GG

于是我们得出了一个结论

如果在两个区域里连点,两个区域内选的点数一定要相等

即a中选出i个点,必须与b中选出i个点相连

连接种类数为

然后我们再来看,如果ab中有两点相连,其中一点再与c相连会出事吗?

很显然不会对答案产生任何影响

所以我们可以得出另外一个结论

a-b b-c c-a所连的边无论如何都是两两独立的

也就是说,如果a-b连边的可能数为x,b-c连边的可能数为y,c-a连边的可能数为z

那么既连ab有连bc的可能性是可以直接用乘法原理推得为xy

同理 ab ca为xz,bc ca为yz

所以总答案就是1+x+y+z+xy+yz+xz+xyz

代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod 998244353
using namespace std; long long ans=1ll,fac[],inv[],aa,bb,cc,ab,bc,ca; long long kasumi(long long a,long long b)
{
long long ans=;
while(b)
{
if(b&)
{
ans=((ans%mod)*a)%mod;
}
a=((a%mod)*a)%mod;
b>>=;
}
return ans;
} long long c(long long n,long long m)
{
if(n==m)
{
return ;
}
return (((fac[m]*inv[n])%mod)*inv[m-n])%mod;
} int main()
{
fac[]=;
for(int i=;i<=;i++)
{
fac[i]=fac[i-]*i%mod;
}
inv[]=kasumi(fac[],mod-);
for(int i=;i>=;i--)
{
inv[i]=inv[i+]*(i+)%mod;
}
scanf("%lld%lld%lld",&aa,&bb,&cc);
for(int i=;i<=min(aa,bb);i++)
{
ab+=(((c(i,aa)*c(i,bb))%mod)*fac[i])%mod;
}
for(int i=;i<=min(cc,bb);i++)
{
bc+=(((c(i,cc)*c(i,bb))%mod)*fac[i])%mod;
}
for(int i=;i<=min(aa,cc);i++)
{
ca+=(((c(i,aa)*c(i,cc))%mod)*fac[i])%mod;
}
ca%=mod;
bc%=mod;
ab%=mod;
ans+=ca+bc+ab;
ans+=ca*bc;
ans%=mod;
ans+=ca*ab;
ans%=mod;
ans+=ab*bc;
ans%=mod;
ans+=(((ca*bc)%mod)*ab)%mod;
printf("%lld\n",ans%mod);
}

CF869C The Intriguing Obsession(组合数学瞎搞,O(n)莫名过)的更多相关文章

  1. CF869C The Intriguing Obsession

    思路: 分别在两种不同颜色的岛屿群之间进行搭桥.因为相同颜色的岛屿之间不能有边,任意两个相同颜色的岛屿不能同时和另外一个不同颜色的岛屿都有边.实现: #include <bits/stdc++. ...

  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. URAL 1203. Scientific Conference(瞎搞)

    题目链接 本来觉得这不是经典的贪心吗..果断水一次,wa了,看了看discuss,发现貌似不好水,土土的DP了一下,复杂度很高了,又T了...然后想想单调队列,二分什么的...不好往上加,直接搞了标记 ...

  4. Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞

    Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...

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

  6. B. Salty Fish Go! -期望题(瞎搞题)

    链接:https://www.nowcoder.com/acm/contest/104/B来源:牛客网 题意:A few days ago, WRD was playing a small game ...

  7. HDU5532 Almost Sorted Array(最长上升子序列 or 瞎搞个做差的数组)

    题目链接:点我 题意:给定一个序列,询问是否能删除一个数让它成为非递减或者非递增的序列. 比如说 删除后的序列是1 3 3 5 或者5 3 3 1 或者1 3 5 或者5 3 1 都可以.只要满足删掉 ...

  8. TOJ3097: 单词后缀 (字典树 or map瞎搞)

    传送门 (<---可以点击的~) 时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte 描述 有些英语单词后缀都是一样的,现在我们需要从给定的一堆单词里 ...

  9. 8VC Venture Cup 2016 - Elimination Round B. Cards 瞎搞

    B. Cards 题目连接: http://www.codeforces.com/contest/626/problem/B Description Catherine has a deck of n ...

随机推荐

  1. IDA Pro 权威指南学习笔记(八) - 基本 IDA 导航

    导航目标 在分析阶段,IDA 会通过检查二进制文件的符号表生成符号名称,或根据二进制文件引用位置的方式自动生成一个名称 反汇编窗口中显示的任何名称都是导航目标 双击任何一个符号,IDA 将跳转到相应的 ...

  2. Python极其简单的分布式异步作业管理系统RQ入门

    Python极其简单的分布式异步作业管理系统RQ入门 原创 2017-08-19 lixing 生信人 Python极其简单的分布式异步作业管理系统RQ入门 1. 什么是Job? Job直译过来就是工 ...

  3. 魔术方法以及__call的调用

    一.什么是魔术方法? 魔术方法是php中对一类方法的统称,这些方法可以在任何类中被实现.他们通常可以完成一些特殊的无法纯粹依靠自己编程实现的功能.他们通常以双下划线"__"作为名称 ...

  4. Java语言主要特点有哪些?

    1.简单 Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了.Java语言的简单性主要体现在以下三个方面: 1) Java的风格类似于C++,因而C++程序员是非常熟悉的.从某 ...

  5. python中的json的基本使用方法

    在python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口, #!/usr/bin/env ...

  6. 使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)

    在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLi ...

  7. 「小程序JAVA实战」小程序头像图片上传(下)(45)

    转自:https://idig8.com/2018/09/09/xiaochengxujavashizhanxiaochengxutouxiangtupianshangchuan44/ 接下来,我们应 ...

  8. VB导入Excel到数据库软件(持续更新中。)

    1.选择Excel文件版本 电脑上用的 Office2010 引用:Mircosoft Excel 14.0 Object Library 2.选择Excel文件 '选择文件公共变量 Public D ...

  9. Linux虚机密码破解

    1 重启机器,在机器读秒时按回车键 2 选择要启动的操作系统按 e 3 选择kernel所在行按 e 4 末尾输入空格  single 5 敲回车 在按 b 系统将进入单用户模式 然后 可以 通过 p ...

  10. 用Eclipse进行远程Debug代码

    在新的公司,由于项目很大,在本机运行会很慢,所以都是在本地开发,在远程虚拟机上运行.这样就让我痛苦了,我怎么在本地Eclipse上进行debug调试呢,但是在公司前辈的指导下让我知道了本地Eclips ...