2018 Wannafly summer camp Day8--连通块计数
连通块计数
题目描述:
小 A 有一棵长的很奇怪的树,他由 n 条链和 1 个点作为根构成,第 i条链有 ai 个点,每一条链的一端都与根结点相连。
现在小 A 想知道,这棵长得奇怪的树有多少非空的连通子树,你只需要输出答案对 998244353 取模的值即可
输入:
第一行一个正整数 n
第二行 n 个正整数 a1…an
1≤n≤10^5
1≤ai≤10^7
输出:
输出答案对998244353 取模后的值
2
1 1
6
包含中心的联通块数量 ∏(ai+1)--(1<=i<=n)
不包含中心的联通块数量∑(ai(ai+1)/2)--(1<=i<=n),也就是C(ai+1,2),每条链选择2条边截断
#include <cstdio>
#include <cstring>
#include <cmath>
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;
const ll mo=;
const int maxn=1e7+;
int n;
ll a[],ans=;
ll fun[maxn];
ll kpow(ll a,ll b)
{
ll res=;
while(b>)
{
if(b&) res=res*a%mo,b--;
a=a*a%mo;
b/=;
}
return res%mo;
}
ll C(ll n,ll m)
{
if(n<m) return ;
return fun[n]*kpow(fun[m]*fun[n-m]%mo,mo-)%mo;
}
void init(){
fun[]=;
for(int i=;i<=maxn;i++)
fun[i]=fun[i-]*i%mo;
}
int main()
{
init();
cin>>n;
for(int i=;i<n;i++){
cin>>a[i];
ans+=C(a[i]+,);
ans%=mo;
}
ll b=;
for(int i=;i<n;i++){
b*=(a[i]+);
b%=mo;
}
cout<<(ans+b)%mo<<endl;
return ;
}
2018 Wannafly summer camp Day8--连通块计数的更多相关文章
- 2018 Wannafly summer camp Day3--Travel
Travel 描述 题目描述: 魔方国有n座城市,编号为1~n.城市之间通过n-1条无向道路连接,形成一个树形结构. 澜澜打算在魔方国进行mm次旅游,每次游览至少一座城市.为了方便,每次旅游游览的城市 ...
- 2018 Wannafly summer camp Day2--Utawarerumono
Utawarerumono 描述 题目描述: 算术是为数不多的会让久远感到棘手的事情.通常她会找哈克帮忙,但是哈克已经被她派去买东西了.于是她向你寻求帮助. 给出一个关于变量x,y的不定方程ax+by ...
- 2018 Wannafly summer camp Day2--New Game!
New Game! 描述 题目描述: Eagle Jump公司正在开发一款新的游戏.泷本一二三作为其员工,获得了提前试玩的机会.现在她正在试图通过一个迷宫. 这个迷宫有一些特点.为了方便描述,我们对这 ...
- 2018 Wannafly summer camp Day8--区间权值
区间权值 小Bo有\(n\)个正整数\(a_1\)--\(a_n\),以及一个权值序列\(w_1\)--\(w_n\),现在她定义\(f(l,r)=(\sum_{i=l}^r a_i^2) *w_{r ...
- 2018 Wannafly summer camp Day3--Shopping
Shopping 描述 题目描述: 你要买n件物品,其中有一些是凳子. 商场正在举行促销活动,如果购物车中有至少一个凳子,那么你可以半价购买这个购物车中最贵的一个物品. 你有m辆购物车,请最小化你的花 ...
- 2018 Wannafly summer camp Day3--Knight
Knight 题目描述: 有一张无限大的棋盘,你要将马从\((0,0)\)移到\((n,m)\). 每一步中,如果马在\((x,y)(x,y)\),你可以将它移动到 \((x+1,y+2)(x+1,y ...
- Wannafly Winter Camp Day8(Div1,onsite) E题 Souls-like Game 线段树 矩阵乘法
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门 Portal 原题目描述在最下面. 简单的 ...
- 2019 wannafly winter camp
2019 wannafly winter camp Name Rank Solved A B C D E F G H I J K day1 9 5/11 O O O O O day2 5 3/11 O ...
- 6_13古代象形符号(UVa1103)<图的连通块的应用>
给出一幅黑白图像,每行相邻的四个点压缩成一个十六进制的字符.然后还有题中图示的6中古老的字符,按字母表顺序输出这些字符的标号. 输出说明:For each test case, display its ...
随机推荐
- webservice使用EF生成的model序列化问题
类型 xx 的成员 xxx 是接口,因此无法将其序列化. 修改.tt模板文件,添加以下标红两行 <# foreach (var navigationProperty in navigationP ...
- C# Winform窗体和控件自适应大小
1.在项目中创建类AutoSizeForm AutoSizeForm.cs文件代码: using System; using System.Collections.Generic; using Sys ...
- 二、Flex 布局教程:实例篇
注:本文转自大神阮一峰,自己加了少许改动~ 上一篇文章介绍了Flex布局的语法,今天介绍常见布局的Flex写法. 你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我只列出代码,详细的语法解 ...
- makefile 通配符了解% $@ $^ $<
把目录下所有文件都编译的命令. 1 all:$(subst .c,.o,$(wildcard *.c)) 2 3 %.o:%.c 4 gcc -o $@ $< 下面是几个特舒符号的意思: $@: ...
- Java基础之异常处理机制
在Java中,异常分为编译时异常和运行时异常. 编译时异常又叫编译时被监测的异常:在程序编译过程中监测到非运行时异常的异常,出现该异常要么向上抛出,要么捕获处理.运行时异常(runtimeExcept ...
- linux 用户和组操作
linux用户操作 查看登陆用户:whoami (结果最简洁) 或者who mom likes 或者who am i查看所有用户:cat /etc/passwd 添加:sudo adduser lil ...
- QT的组合键
https://www.cnblogs.com/Jace-Lee/p/5859293.html
- Python初学者第一天 Python安装及第一个Python程序
Python基础: 1day: 1.Python基础: A.编程语言介绍: a. 计算机只能理解0和1.编程即写一段按照一定规则写代码,让计算机帮你干活: b.机器语言:最底层的语言, ...
- C++使用BOOST操作文件、目录
开始使用 在BOOST库出现之前,C++对于文件和目录的操作,大都借助于UNIX提供的底层文件和目录接口,从使用角度来看,这些底层的操作不够友好.BOOST中filesystem库是一种可移植的文件系 ...
- 022configparser模块
#配置模块 #创建import configparser config = configparser.ConfigParser() #添加config["DEFAULT"] ...